Как баран на новые ворота
План. О чем мы сегодня поговорим?
Что такое 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
Выводы
Обсуждение
Ссылки

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     Русский Правила