Технический долг: взгляд и действия со стороны qa / qc&at
TRANSCRIPT
![Page 1: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/1.jpg)
Технический долг:
взгляд и действия со стороны
QA / QC&AT
Дмитрий
Химион
Руководитель направления
автоматизации тестирования
![Page 2: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/2.jpg)
Дмитрий Химион руководитель направления
автоматизации тестирования
Performance Lab
Докладчик на конференциях:
SQA Days 13
ITSM Forum
SQA Days 14
SQA Days 15
SQA Days 16
Представлюсь
![Page 3: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/3.jpg)
1. Что такое технический долг?
2. Примеры влияния на проекты
3. Как относится к тестированию?
4. Как измерить и контролировать?
5. Внедрение
План доклада
![Page 4: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/4.jpg)
Говард Каннингем – автор термина «технический долг»
Технический долг - это разница между идеальным
техническим решением и тем решением, которое
принимается сейчас (англ.яз - tech.debt).
Что такое технический долг?
![Page 5: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/5.jpg)
• Осознанный (умышленный) – программист отказывается от гибкости кода или от
покрытия кода тестами, выигрывая время.
• Не осознанный – неопытность программиста в использовании конструкций языка
программирования или применении Framework-ов или платформ.
• Технологический – затягивание с обновлением версии платформы и framework
• Архитектурный – необходимость переработки архитектуры под новые требования
Разновидности технического долга
![Page 6: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/6.jpg)
• Осознанный (умышленный) – программист отказывается от гибкости кода или от
покрытия кода тестами, выигрывая время.
• Не осознанный – неопытность программиста в использовании конструкций языка
программирования или применении Framework-ов или платформ.
• Технологический – затягивание с обновлением версии платформы и framework
• Архитектурный – необходимость переработки архитектуры под новые требования
Разновидности технического долга
![Page 7: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/7.jpg)
Проект: • Публичный гос.проект
• Целевая аудитория – жители РФ
Проблема: • При нагрузке избыточная утилизация
аппаратных ресурсов
• Оптимизация критичных по производительности
компонент не помогает.
Примеры технического долга
![Page 8: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/8.jpg)
Примеры технического долга
Причина проблемы - ошибка уровня normal-major
в использовании конструкции кода
![Page 9: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/9.jpg)
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](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/10.jpg)
Примеры технического долга
break;
Не осознанный технический долг
![Page 11: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/11.jpg)
Примеры технического долга
![Page 12: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/12.jpg)
Примеры технического долга
Не осознанный технический долг
![Page 13: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/13.jpg)
• Размер технического долга – показатель качества проекта.
• Качество программного обеспечения
Тестирование и Tech.debt
![Page 14: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/14.jpg)
• Размер технического долга – показатель качества проекта.
• Качество программного обеспечения
Тестирование и Tech.debt
Стандарт - ISO 9126
![Page 15: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/15.jpg)
• Размер технического долга – показатель качества проекта.
• Качество программного обеспечения
Тестирование и Tech.debt
ISO 9126 (ISO 25010) аспекты:
• Функциональность
• Надежность
• Практичность
• Эффективность
• Сопровождаемость
• Переносимость
Стандарт - ISO 9126
![Page 16: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/16.jpg)
• Размер технического долга – показатель качества проекта.
• Качество программного обеспечения
Тестирование и Tech.debt
ISO 9126 (ISO 25010) аспекты:
• Функциональность
• Надежность
• Практичность
• Эффективность
• Сопровождаемость
• Переносимость
Стандарт - ISO 9126
![Page 17: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/17.jpg)
• Размер технического долга – показатель качества проекта.
• Качество программного обеспечения
Тестирование и Tech.debt
ISO 9126 (ISO 25010) аспекты:
• Функциональность
• Надежность
• Практичность
• Эффективность
• Сопровождаемость
• Переносимость
Стандарт - ISO 9126
Аспект «Сопровождаемость»:
• Analyzability
• Changeability
• Testability
• Stability
![Page 18: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/18.jpg)
• Размер технического долга – показатель качества проекта.
• Качество программного обеспечения
Тестирование и Tech.debt
ISO 9126 (ISO 25010) аспекты:
• Функциональность
• Надежность
• Практичность
• Эффективность
• Сопровождаемость
• Переносимость
Стандарт - ISO 9126
Аспект «Сопровождаемость»:
• Analyzability
• Changeability
• Testability
• Stability
![Page 19: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/19.jpg)
Инструменты измерения tech.debt
Analyzability
SCA* Code review
Changeability
SCA Code review
Testability
Test coverage Mutation testing
* – статический анализ кода (static code analysis)
![Page 20: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/20.jpg)
Инструменты измерения 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](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/21.jpg)
Инструменты измерения 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](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/22.jpg)
Инструменты измерения 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](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/23.jpg)
Инструменты измерения tech.debt
SCA инструменты:
• Cppcheck
• PVS-studio
• Coverity
• Pylint
• Sonarqube
• FindBugs
• Resharper
![Page 24: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/24.jpg)
Встраивание в инфраструктуру
quality gates – методология обеспечения качества
![Page 25: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/25.jpg)
Измерение:
1. Анализа кода проекта
Измерение технического долга
Исходные коды
• Получить
SCA
• Развернуть
• Настроить
Результат
![Page 26: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/26.jpg)
Измерение:
1. Анализа кода проекта
Исходные коды
• Получить
SCA
• Развернуть
• Настроить
Результат
Доступа к сорцам
может не быть • Настроить GUI
• Установить плагины
• Интеграция с VCS
• Виртуалка или железка
• Установить ПО
Измерение технического долга
![Page 27: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/27.jpg)
Измерение:
1. Анализа кода проекта
2. Принятие релевантных метрик*
* – проводится совместно с программистами
** – строк кода (Line Of Code)
Дублирование кода
Bugs per 1000 LOC*
Документирование кода
Комплексность кода
Составные метрики
Измерение технического долга
![Page 28: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/28.jpg)
Измерение:
1. Анализа кода проекта
2. Принятие релевантных метрик*
* – проводится совместно с программистами
** – строк кода (Line Of Code)
Дублирование кода
Bugs per 1000 LOC*
Документирование кода
Комплексность кода
Составные метрики
Измерение технического долга
70% и более
Не больше 5%
![Page 29: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/29.jpg)
Измерение:
1. Анализа кода проекта
2. Принятие релевантных метрик*
3. Устранение «шума» в измерениях*
* – проводится совместно с программистами
Измерение технического долга
![Page 30: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/30.jpg)
Измерение:
1. Анализа кода проекта
2. Принятие релевантных метрик*
3. Устранение «шума» в измерениях*
* – проводится совместно с программистами
Измерение технического долга
![Page 31: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/31.jpg)
Измерение:
1. Анализа кода проекта
2. Принятие релевантных метрик*
3. Устранение «шума» в измерениях*
* – проводится совместно с программистами
Измерение технического долга
151000 срабатываний на
сторонние библиотеки
![Page 32: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/32.jpg)
Измерение:
1. Анализа кода проекта
2. Принятие релевантных метрик*
3. Устранение «шума» в измерениях*
* – проводится совместно с программистами
Измерение технического долга
150000 срабатываний на
сторонние библиотеки
92% ложных срабатываний
![Page 33: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/33.jpg)
Измерение:
1. Анализа кода проекта
2. Принятие релевантных метрик*
3. Устранение «шума» в измерениях*
* – проводится совместно с программистами
• Positive false
• Не актуальные инспекции
• Ложный приоритет инспекций
• Проблемы с кодировками
• …
Измерение технического долга
![Page 34: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/34.jpg)
Измерение:
1. Анализа кода проекта
2. Принятие релевантных метрик*
3. Устранение «шума» в измерениях*
4. Задать приемлемый уровень метрик*
* – проводится совместно с программистами
Измерение технического долга
![Page 35: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/35.jpg)
Измерение:
1. Анализа кода проекта
2. Принятие релевантных метрик*
3. Устранение «шума» в измерениях*
4. Задать приемлемый уровень метрик*
* – проводится совместно с программистами
Измерение технического долга
Единая стилистика кода
![Page 36: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/36.jpg)
1. Инспектирование кода на периодической основе
2. Включение обсуждения «долгов» в планирование проекта
3. Прецедентная работы над приоритетами инспекций
Контроль tech.debt
![Page 37: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/37.jpg)
1. Слежение за трендами и метриками
2. Регулярный критический просмотр результатов
3. Работа по прецедентам*
Контроль tech.debt
* – проводится совместно с программистами
![Page 38: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/38.jpg)
Не стоит внедрять, если ваш проект:
• Выводится из эксплуатации;
• Не планируется поддерживать после разработки;
• Прототип;
• Личный проект.
Внедрение в рабочий процесс
![Page 39: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/39.jpg)
Внедрение в рабочий процесс
Обсудить выгоды от котроля tech.debt с руководством проекта:
1. Исправление дефектов на ранней стадии разработки;
2. Прогнозирование рефакторинга;
3. Исключение нелепых ошибок.
![Page 40: Технический долг: взгляд и действия со стороны QA / QC&AT](https://reader031.vdocuments.us/reader031/viewer/2022012400/55a78d421a28ab1a6e8b4894/html5/thumbnails/40.jpg)
• Нет инструмента всеобъемлюще измеряющего tech.debt
• Измерение и контроль tech.debt – процесс итеративный
• Мониторинг tech.debt задача отдела контроля качества
• Измерение проблем проекта - «Осведомлён – значит вооружён»
Итоги
Предсказуемость влияния изменений на программу
Зрелость процессов
Прозрачность разработки и внесения изменений