W AY 4 Quality Control in Continuous Integration Konstantin Zhukov. - презентация

Содержание

Слайд 2

Программа

Что такое Continuous Integration?
Риски процесса разработки
От «Continuous Integration» к «Build Pipeline»
Quality Control
Практические

Программа Что такое Continuous Integration? Риски процесса разработки От «Continuous Integration» к
моменты реализации

Слайд 3

Что такое Continuous Integration?

«Process of applying quality control during development» (с)wikipedia
Стратегия разработки,
связанная

Что такое Continuous Integration? «Process of applying quality control during development» (с)wikipedia
с регулярной интеграцией,
проводимой в автоматическом режиме

Слайд 4

Производство программных продуктов – рискованное дело

Производство программных продуктов – рискованное дело

Слайд 5

Риск 1: Поздняя интеграция стоит дорого

Атомарные изменения
Интегрируемся чаще!

Риск 1: Поздняя интеграция стоит дорого Атомарные изменения Интегрируемся чаще!

Слайд 6

Риск 2: Отсутствие регулярных сборок

Продукт работает только локально
Локально всё работает!
Завтра приедет босс,

Риск 2: Отсутствие регулярных сборок Продукт работает только локально Локально всё работает!
показывать нечего!
Процесс непрозрачен
Какой сейчас статус проекта?
Что мы такого сделали в версии 1.0.1?

Слайд 7

Интеграция необходима

Хотелось бы иметь что-то вроде

Что дальше?

Интеграция необходима Хотелось бы иметь что-то вроде Что дальше?

Слайд 8

От «Continuous Integration» к «Build Pipeline»

«Automated manifestation of your process for getting

От «Continuous Integration» к «Build Pipeline» «Automated manifestation of your process for
software from version control into the hands of your users»
Continuous Integration flow
Build Pipeline flow

Слайд 9

Build Pipeline: Как это организовать?

Специальные инструменты для поддержки процесса
… cегодня про это

Build Pipeline: Как это организовать? Специальные инструменты для поддержки процесса … cегодня про это не говорим
не говорим

Слайд 10

Build Pipeline: Quality Control

Сконцентрируемся на QC
Какие для этого предпосылки?
К фазе QC доступны

Build Pipeline: Quality Control Сконцентрируемся на QC Какие для этого предпосылки? К
все необходимые артефакты (binaries)
Билд готов к тестированию!
Как его организовать?
Есть проблемы
и есть решения

Слайд 11

Проблема 1: Слишком много продуктов

Много продуктов -> cлишком большая энтропия
Все продукты разные

Проблема 1: Слишком много продуктов Много продуктов -> cлишком большая энтропия Все
-> разные инструменты
Нужны:
Правила организации тестов
Единая система управления разнородными тестами

Слайд 12

Решение 1: Слишком много продуктов

Основные шаги – общие для всех
Идём от алгоритма
Что

Решение 1: Слишком много продуктов Основные шаги – общие для всех Идём
нужно?
Собрать конфигурацию приложения (build)
Запустить конфигурацию (deploy + start)
Запустить тесты (test)
Собрать отчёт (collect logs)
Остановить конфигурацию (stop + undeploy)
Отделяем управление от реализации

Слайд 13

Система управления тестами: Алгоритм

Вся специфика тестируемых приложений спрятана в специальном handler-е

Система управления тестами: Алгоритм Вся специфика тестируемых приложений спрятана в специальном handler-е

Слайд 14

Система управления тестами: Последовательность тестов

Основа – файловое дерево
Алгоритм обхода – итерирование на

Система управления тестами: Последовательность тестов Основа – файловое дерево Алгоритм обхода –
одном уровне
Простота!

Слайд 15

Система управления тестами: Мониторинг

Единая WEB консоль CI сервера

Система управления тестами: Мониторинг Единая WEB консоль CI сервера

Слайд 16

Build Pipeline: Бесплатное приложение

Ручной redeploy дорог
Можно ли его автоматизировать?
Можно
Меняем местами шаги

Build Pipeline: Бесплатное приложение Ручной redeploy дорог Можно ли его автоматизировать? Можно
start <-> stop
Создаём технический сценарий без тестов
В итоге:
Приложение всегда up-to-date и готово к тестированию
… и к показу боссу ☺

Слайд 17

Проблема 2: Продукт слишком сложен

Продукт слишком сложный, но нужны интеграционные тесты
Разбираем его

Проблема 2: Продукт слишком сложен Продукт слишком сложный, но нужны интеграционные тесты
на части, сохраняя общую структуру,
Собираем каждый компонент в режиме redeploy
Запускаем интеграционные тесты из общей точки входа

Слайд 18

Итоги

Что мы добились
Разрешение всех рисков
Покрытие всех продуктов компании
+ Помощь в ручном тестировании
С

Итоги Что мы добились Разрешение всех рисков Покрытие всех продуктов компании +
небольшими недостатками
Поддержка непростой инфраструктуры
Необходимость отдельных серверов
Зачем тестировать самому, если CI всё проверит сам? ☺