Технический долг: взгляд и действия со стороны qa / qc&at

41
Технический долг: взгляд и действия со стороны QA / QC&AT Дмитрий Химион Руководитель направления автоматизации тестирования

Upload: codefest

Post on 16-Jul-2015

5.736 views

Category:

Software


5 download

TRANSCRIPT

Page 1: Технический долг: взгляд и действия со стороны QA / QC&AT

Технический долг:

взгляд и действия со стороны

QA / QC&AT

Дмитрий

Химион

Руководитель направления

автоматизации тестирования

Page 2: Технический долг: взгляд и действия со стороны QA / QC&AT

Дмитрий Химион руководитель направления

автоматизации тестирования

Performance Lab

Докладчик на конференциях:

SQA Days 13

ITSM Forum

SQA Days 14

SQA Days 15

SQA Days 16

Представлюсь

Page 3: Технический долг: взгляд и действия со стороны QA / QC&AT

1. Что такое технический долг?

2. Примеры влияния на проекты

3. Как относится к тестированию?

4. Как измерить и контролировать?

5. Внедрение

План доклада

Page 4: Технический долг: взгляд и действия со стороны QA / QC&AT

Говард Каннингем – автор термина «технический долг»

Технический долг - это разница между идеальным

техническим решением и тем решением, которое

принимается сейчас (англ.яз - tech.debt).

Что такое технический долг?

Page 5: Технический долг: взгляд и действия со стороны QA / QC&AT

• Осознанный (умышленный) – программист отказывается от гибкости кода или от

покрытия кода тестами, выигрывая время.

• Не осознанный – неопытность программиста в использовании конструкций языка

программирования или применении Framework-ов или платформ.

• Технологический – затягивание с обновлением версии платформы и framework

• Архитектурный – необходимость переработки архитектуры под новые требования

Разновидности технического долга

Page 6: Технический долг: взгляд и действия со стороны QA / QC&AT

• Осознанный (умышленный) – программист отказывается от гибкости кода или от

покрытия кода тестами, выигрывая время.

• Не осознанный – неопытность программиста в использовании конструкций языка

программирования или применении Framework-ов или платформ.

• Технологический – затягивание с обновлением версии платформы и framework

• Архитектурный – необходимость переработки архитектуры под новые требования

Разновидности технического долга

Page 7: Технический долг: взгляд и действия со стороны QA / QC&AT

Проект: • Публичный гос.проект

• Целевая аудитория – жители РФ

Проблема: • При нагрузке избыточная утилизация

аппаратных ресурсов

• Оптимизация критичных по производительности

компонент не помогает.

Примеры технического долга

Page 8: Технический долг: взгляд и действия со стороны QA / QC&AT

Примеры технического долга

Причина проблемы - ошибка уровня normal-major

в использовании конструкции кода

Page 9: Технический долг: взгляд и действия со стороны QA / QC&AT

DDT на функцию кода:

• mode = ‘debug’

build = ‘debug’

extBuild = ‘-debug’

themeBuild = ‘-debug’

• mode = ‘review’

build = ‘review’

extBuild = ‘-debug’

themeBuild = ‘-debug’

• mode = ‘anyOtherKey’

build = ‘review’

extBuild = ‘-debug’

themeBuild = ‘-debug’

Примеры технического долга

Page 10: Технический долг: взгляд и действия со стороны QA / QC&AT

Примеры технического долга

break;

Не осознанный технический долг

Page 11: Технический долг: взгляд и действия со стороны QA / QC&AT

Примеры технического долга

Page 12: Технический долг: взгляд и действия со стороны QA / QC&AT

Примеры технического долга

Не осознанный технический долг

Page 13: Технический долг: взгляд и действия со стороны QA / QC&AT

• Размер технического долга – показатель качества проекта.

• Качество программного обеспечения

Тестирование и Tech.debt

Page 14: Технический долг: взгляд и действия со стороны QA / QC&AT

• Размер технического долга – показатель качества проекта.

• Качество программного обеспечения

Тестирование и Tech.debt

Стандарт - ISO 9126

Page 15: Технический долг: взгляд и действия со стороны QA / QC&AT

• Размер технического долга – показатель качества проекта.

• Качество программного обеспечения

Тестирование и Tech.debt

ISO 9126 (ISO 25010) аспекты:

• Функциональность

• Надежность

• Практичность

• Эффективность

• Сопровождаемость

• Переносимость

Стандарт - ISO 9126

Page 16: Технический долг: взгляд и действия со стороны QA / QC&AT

• Размер технического долга – показатель качества проекта.

• Качество программного обеспечения

Тестирование и Tech.debt

ISO 9126 (ISO 25010) аспекты:

• Функциональность

• Надежность

• Практичность

• Эффективность

• Сопровождаемость

• Переносимость

Стандарт - ISO 9126

Page 17: Технический долг: взгляд и действия со стороны QA / QC&AT

• Размер технического долга – показатель качества проекта.

• Качество программного обеспечения

Тестирование и Tech.debt

ISO 9126 (ISO 25010) аспекты:

• Функциональность

• Надежность

• Практичность

• Эффективность

• Сопровождаемость

• Переносимость

Стандарт - ISO 9126

Аспект «Сопровождаемость»:

• Analyzability

• Changeability

• Testability

• Stability

Page 18: Технический долг: взгляд и действия со стороны QA / QC&AT

• Размер технического долга – показатель качества проекта.

• Качество программного обеспечения

Тестирование и Tech.debt

ISO 9126 (ISO 25010) аспекты:

• Функциональность

• Надежность

• Практичность

• Эффективность

• Сопровождаемость

• Переносимость

Стандарт - ISO 9126

Аспект «Сопровождаемость»:

• Analyzability

• Changeability

• Testability

• Stability

Page 19: Технический долг: взгляд и действия со стороны QA / QC&AT

Инструменты измерения tech.debt

Analyzability

SCA* Code review

Changeability

SCA Code review

Testability

Test coverage Mutation testing

* – статический анализ кода (static code analysis)

Page 20: Технический долг: взгляд и действия со стороны QA / QC&AT

Инструменты измерения tech.debt

Analyzability

SCA Code review

Changeability

SCA Code review

Testability

Test coverage Mutation testing

Инструменты:

• SCA

• Code review

• Test coverage

• Mutation testing

• …

Инфраструктура разработки

Page 21: Технический долг: взгляд и действия со стороны QA / QC&AT

Инструменты измерения tech.debt

Analyzability

SCA Code review

Changeability

SCA Code review

Testability

Test coverage Mutation testing

Инфраструктура разработки Разработка

Тестирование

Инструменты:

• SCA

• Code review

• Test coverage

• Mutation testing

• …

Page 22: Технический долг: взгляд и действия со стороны QA / QC&AT

Инструменты измерения tech.debt

Analyzability

SCA Code review

Changeability

SCA Code review

Testability

Test coverage Mutation testing

Инструменты:

• SCA

• Code review

• Test coverage

• Mutation testing

• …

Инфраструктура разработки Разработка

Тестирование

Page 23: Технический долг: взгляд и действия со стороны QA / QC&AT

Инструменты измерения tech.debt

SCA инструменты:

• Cppcheck

• PVS-studio

• Coverity

• Pylint

• Sonarqube

• FindBugs

• Resharper

Page 24: Технический долг: взгляд и действия со стороны QA / QC&AT

Встраивание в инфраструктуру

quality gates – методология обеспечения качества

Page 25: Технический долг: взгляд и действия со стороны QA / QC&AT

Измерение:

1. Анализа кода проекта

Измерение технического долга

Исходные коды

• Получить

SCA

• Развернуть

• Настроить

Результат

Page 26: Технический долг: взгляд и действия со стороны QA / QC&AT

Измерение:

1. Анализа кода проекта

Исходные коды

• Получить

SCA

• Развернуть

• Настроить

Результат

Доступа к сорцам

может не быть • Настроить GUI

• Установить плагины

• Интеграция с VCS

• Виртуалка или железка

• Установить ПО

Измерение технического долга

Page 27: Технический долг: взгляд и действия со стороны QA / QC&AT

Измерение:

1. Анализа кода проекта

2. Принятие релевантных метрик*

* – проводится совместно с программистами

** – строк кода (Line Of Code)

Дублирование кода

Bugs per 1000 LOC*

Документирование кода

Комплексность кода

Составные метрики

Измерение технического долга

Page 28: Технический долг: взгляд и действия со стороны QA / QC&AT

Измерение:

1. Анализа кода проекта

2. Принятие релевантных метрик*

* – проводится совместно с программистами

** – строк кода (Line Of Code)

Дублирование кода

Bugs per 1000 LOC*

Документирование кода

Комплексность кода

Составные метрики

Измерение технического долга

70% и более

Не больше 5%

Page 29: Технический долг: взгляд и действия со стороны QA / QC&AT

Измерение:

1. Анализа кода проекта

2. Принятие релевантных метрик*

3. Устранение «шума» в измерениях*

* – проводится совместно с программистами

Измерение технического долга

Page 30: Технический долг: взгляд и действия со стороны QA / QC&AT

Измерение:

1. Анализа кода проекта

2. Принятие релевантных метрик*

3. Устранение «шума» в измерениях*

* – проводится совместно с программистами

Измерение технического долга

Page 31: Технический долг: взгляд и действия со стороны QA / QC&AT

Измерение:

1. Анализа кода проекта

2. Принятие релевантных метрик*

3. Устранение «шума» в измерениях*

* – проводится совместно с программистами

Измерение технического долга

151000 срабатываний на

сторонние библиотеки

Page 32: Технический долг: взгляд и действия со стороны QA / QC&AT

Измерение:

1. Анализа кода проекта

2. Принятие релевантных метрик*

3. Устранение «шума» в измерениях*

* – проводится совместно с программистами

Измерение технического долга

150000 срабатываний на

сторонние библиотеки

92% ложных срабатываний

Page 33: Технический долг: взгляд и действия со стороны QA / QC&AT

Измерение:

1. Анализа кода проекта

2. Принятие релевантных метрик*

3. Устранение «шума» в измерениях*

* – проводится совместно с программистами

• Positive false

• Не актуальные инспекции

• Ложный приоритет инспекций

• Проблемы с кодировками

• …

Измерение технического долга

Page 34: Технический долг: взгляд и действия со стороны QA / QC&AT

Измерение:

1. Анализа кода проекта

2. Принятие релевантных метрик*

3. Устранение «шума» в измерениях*

4. Задать приемлемый уровень метрик*

* – проводится совместно с программистами

Измерение технического долга

Page 35: Технический долг: взгляд и действия со стороны QA / QC&AT

Измерение:

1. Анализа кода проекта

2. Принятие релевантных метрик*

3. Устранение «шума» в измерениях*

4. Задать приемлемый уровень метрик*

* – проводится совместно с программистами

Измерение технического долга

Единая стилистика кода

Page 36: Технический долг: взгляд и действия со стороны QA / QC&AT

1. Инспектирование кода на периодической основе

2. Включение обсуждения «долгов» в планирование проекта

3. Прецедентная работы над приоритетами инспекций

Контроль tech.debt

Page 37: Технический долг: взгляд и действия со стороны QA / QC&AT

1. Слежение за трендами и метриками

2. Регулярный критический просмотр результатов

3. Работа по прецедентам*

Контроль tech.debt

* – проводится совместно с программистами

Page 38: Технический долг: взгляд и действия со стороны QA / QC&AT

Не стоит внедрять, если ваш проект:

• Выводится из эксплуатации;

• Не планируется поддерживать после разработки;

• Прототип;

• Личный проект.

Внедрение в рабочий процесс

Page 39: Технический долг: взгляд и действия со стороны QA / QC&AT

Внедрение в рабочий процесс

Обсудить выгоды от котроля tech.debt с руководством проекта:

1. Исправление дефектов на ранней стадии разработки;

2. Прогнозирование рефакторинга;

3. Исключение нелепых ошибок.

Page 40: Технический долг: взгляд и действия со стороны QA / QC&AT

• Нет инструмента всеобъемлюще измеряющего tech.debt

• Измерение и контроль tech.debt – процесс итеративный

• Мониторинг tech.debt задача отдела контроля качества

• Измерение проблем проекта - «Осведомлён – значит вооружён»

Итоги

Предсказуемость влияния изменений на программу

Зрелость процессов

Прозрачность разработки и внесения изменений

Page 41: Технический долг: взгляд и действия со стороны QA / QC&AT

Picasso-key

Дмитрий Химион Руководитель

направления АТ

Вопросы?

[email protected]