Как баран на новые ворота
План. О чем мы сегодня поговорим?
Что такое Quality Gates?
Немного истории
Структура Quality Gates
Quality Gates в автомобильном производстве
От идеи до релиза под руку с Quality Gates. CI/CD
От идеи до релиза под руку с Quality Gates. Overview
От идеи до релиза под руку с Quality Gates.
От идеи до релиза под руку с Quality Gates.
От идеи до релиза под руку с Quality Gates.
От идеи до релиза под руку с Quality Gates. Метрики IDE
От идеи до релиза под руку с Quality Gates.
От идеи до релиза под руку с Quality Gates.
От идеи до релиза под руку с Quality Gates.
От идеи до релиза под руку с Quality Gates.
От идеи до релиза под руку с Quality Gates.
От идеи до релиза под руку с Quality Gates.
От идеи до релиза под руку с Quality Gates. Deploy QA
От идеи до релиза под руку с Quality Gates.
От идеи до релиза под руку с Quality Gates.
От идеи до релиза под руку с Quality Gates.
От идеи до релиза под руку с Quality Gates.
От идеи до релиза под руку с Quality Gates.
Зачем так всё усложнять? Цена ошибки
Зачем так всё усложнять? Цена ошибки
Несколько дорогих багов в истории
Несколько дорогих багов в истории
Несколько дорогих багов в истории
Несколько дорогих багов в истории
Quality Gates. Профит внедрения
Best Practice’s Java
Best Practice’s Python
Best Practice’s Ruby
Best Practice’s Frontend
Выводы
Обсуждение
Ссылки
18.79M
Categories: programmingprogramming managementmanagement

Quality Gates для разработчиков

1. Как баран на новые ворота

или Quality Gates
с точки зрения разработчика
Гурбич Михаил
13 апреля 2019

2. План. О чем мы сегодня поговорим?

Что такое Quality Gates?
История появления
От идеи до релиза
Зачем?
Примеры дорогих
ошибок
2

3. Что такое Quality Gates?

3

4. Немного истории

Концепция впервые возникла в 1986 году.
Основана на системе шлюзовых (stage) ворот.
Изначально применялась для контроля качества в
автомобильной промышленности
4

5. Структура Quality Gates

5

6. Quality Gates в автомобильном производстве

6

7. От идеи до релиза под руку с Quality Gates. CI/CD

* Azure Pipelines Microsoft Hosted CI/CD – 1 job\ 1800 минут в месяц
7

8. От идеи до релиза под руку с Quality Gates. Overview

8

9. От идеи до релиза под руку с Quality Gates.

Конфигурирование правил
Встраивание в шаги деплоя
на CI
--//-- во время git push
Profit?
Flake8
9

10. От идеи до релиза под руку с Quality Gates.

Покрытие кода тестами
Внедрение важных тестов в
pipeline CI/CD, в проверку
коммита
А вдруг TDD/TLD?
Profit?
10

11. От идеи до релиза под руку с Quality Gates.

Метрики IDE как подготовка к Code Review
HV – Halstead
Volume
CC – Cyclomatic
Complexity
LoC – Lines of Code
Cohesion &
coupling
11

12. От идеи до релиза под руку с Quality Gates. Метрики IDE

0-10 – Красный, 10 – 20 – Жёлтый, 20 – 100 - Зелёный
12

13. От идеи до релиза под руку с Quality Gates.

Метрики IDE. Profit?
• Подготовка к Code
Review
• Рефакторинг?
• Изменение метрик в
динамике
13

14. От идеи до релиза под руку с Quality Gates.

Pull-Request и домой
Profit?
• Снижение bus factor
• Предупреждение части
ошибок
• Избавление от странных и
запутанных решений
14

15. От идеи до релиза под руку с Quality Gates.

Code Review Здорового человека
15

16. От идеи до релиза под руку с Quality Gates.

Resharper CL
SonarQube
Линтеры/SonarLint?
Автотесты
«Быстрые шаги»
выполняются
в первую очередь
16

17. От идеи до релиза под руку с Quality Gates.

• Анализ .Net семейства языков и
Javascript\Typescript, HTML и CSS
• Resharper Command Line бесплатен
• Конфигурация правил в формате XML(rulesets)
• Nuget-package
• dupFinder
Profit?
17

18. От идеи до релиза под руку с Quality Gates.

SonarQube — завалит ваш
деплой, если метрики не в
порядке.
Поддержка 20 языков
программирования
Большое кол-во плагинов
(OpenCover, 3d Code
Metrics)
SonarLint для статического
анализа кода
18

19. От идеи до релиза под руку с Quality Gates. Deploy QA

19

20. От идеи до релиза под руку с Quality Gates.

20

21. От идеи до релиза под руку с Quality Gates.

Profit?
• Анализ и измерение
качества кода
• Покрытие тестами
• Соблюдение стандартов
кодирования
• Настройка base line
• Плотность комментариев
• Оценка техдолга
• Динамика\История метрик
21

22. От идеи до релиза под руку с Quality Gates.

UAT Profile SonarQube,
UAT кофигурация ruleset’s
ReSharper
Автотесты
...
22

23. От идеи до релиза под руку с Quality Gates.

PROD Profile SonarQube
Resharper Ruleset’s для PROD
Автотесты
...
23

24. От идеи до релиза под руку с Quality Gates.

24

25. Зачем так всё усложнять? Цена ошибки

%
По информации из Capers Jones, Olivier Bonsignour “The
Economics of Software Quality”
25

26. Зачем так всё усложнять? Цена ошибки

26

27. Несколько дорогих багов в истории

Кассы Штрих-М
~3.8млн
Причины:
• Исключение при конвертации даты 20.12.2017
• Не прогнали тестирование прошивки
• Автообновление по умолчанию выключено
Как избежать?
Unit тесты, Code Review, замкнутый цикл
тестирования в UAT
27

28. Несколько дорогих багов в истории

Ракета «Атлас»
15 млн.
Причины:
• Характеристики Антенны для передачи сигнала
не проверены
• В программе пропущен дефис
Как избежать?
Unit тесты, Code Review вычислительных
блоков связи
28

29. Несколько дорогих багов в истории

Cпутник
«Mars Climate Orbiter»
125 млн.
Причины:
• Отсутствие конвертации английских единиц
измерения в метрическую систему
• Отсутствие отладки и тестирования расчётных
модулей
57км != 110км
Как избежать?
Unit тесты, Code Review,
Отладка\Тестирование на QA\UAT
окружении
29

30. Несколько дорогих багов в истории

440 млн.
За 45мин
Причины:
• Ручной деплой\ обновление не всех машин в
окружении
• Отсутствие отладки и тестирования расчётных
модулей
Как избежать?
CI\CD
30

31. Quality Gates. Профит внедрения

Code Review
Unit Testing
Functional Testing
CI\CD
Integration testing
Detailed requirements
Static Analysis
Other
0%
5%
31
10%
15%
20%
25%
30%
35%

32. Best Practice’s Java

• Build tool: Maven, Gradle
• Linters: SonarQube, Checkstyle
• Tests: Junit, Mockito, Jmeter
• Автоматизация деплоя или релизов: Ansible
• Docker + Kubernetes
32

33. Best Practice’s Python

• Linters: pylint, flake8, mypy (проверка типизации)
• Documentation: Sphinx
• Refactoring: Simplicity
33

34. Best Practice’s Ruby

• Linters: rubokop / reek(code smell), rails_best_practices
• Анализ уязвимостей: brakeman, bundler-audit(сторонних
библиотек)
• Анализ скорости: fasterer
34

35. Best Practice’s Frontend

• es-lint, sass/less, stylelint,
• test - jest, enzime - проверяет дом (рендерит в памяти)
• snapshot testing(storybook), puppeteer (screenshot testing )
• spec, flow
• prettier на коммит
35

36. Выводы

Code review это “неплохо”
SonarQube/ReSharper всегда вместе
Unit Тесты всегда и везде
Лучшие друзья dev’ушек CI/CD
Инструментов больше чем кажется
Разные BaseLine
36

37. Обсуждение

ОБСУЖДЕНИЕ

38.

КОНТАКТЫ
E-mail: [email protected]
Skype: masterofsecret1543.5
Tel: по запросу
38

39. Ссылки

• https://habr.com/en/company/pvs-studio/blog/433932/
• https://habr.com/ru/post/440414/
• http://jitm.ubalt.edu/XXII-1/article3.pdf
• https://de.wikipedia.org/wiki/Quality_Gate
• https://www.techrepublic.com/article/how-to-use-quality-gates-toguide-it-projects/
• https://martinfowler.com/bliki/TestPyramid.html
• https://confluence.jetbrains.com/display/TCD9/FxCop
• https://habr.com/en/post/265081/
• https://github.com/andreogle/eslint-teamcity
• https://iansommerville.com/software-engineering-book/casestudies/ariane5/
39
English     Русский Rules