devops guide for awesome quality assurance

86
DevOps guide for awesome quality assurance Вы хотите, чтобы у вас каждая фича «протаскивалась» до production за 3 часа? Тогда вам нужно вывести своё тестирование на продвинутый уровень!

Upload: -

Post on 16-Apr-2017

104 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: DevOps guide for awesome quality assurance

DevOps guide for awesome quality assurance

Вы хотите, чтобы у вас каждая фича «протаскивалась» до production за 3 часа? Тогда вам нужно вывести своё тестирование на продвинутый уровень!

Page 2: DevOps guide for awesome quality assurance
Page 3: DevOps guide for awesome quality assurance

Пару слов о себе:• Devops

• Agile Testing couch

• Руководитель автоматизации тестирования

• В QA c 2012 года

• В IT с 2007 года

• В Альфа Банке внедряю Облака

• Немного пишу код =)

• Люблю Linux

Page 4: DevOps guide for awesome quality assurance

А что же было раньше?

Регресс регрессом погонял.

Page 5: DevOps guide for awesome quality assurance

Как было:

UI-приемка и регресс

Автотесты

Unit-тесты*

Unit-тесты: • Черный ящик для всех. Никто не

знал что именно покрыто

юнит-тестами, а что не покрыто. • Все на усмотрение разработчика.

• Code coverage не считался.

* Unit-тесты - тесты, которые пишутся разработчиками

Page 6: DevOps guide for awesome quality assurance

Как было:

UI-приемка и регресс

Автотесты

Unit-тесты

Автотесты: Автоматизированные UI E2E сценарии, покрывающие ТМ* регресса. 

- Не все проекты имели автотесты

- Отсутствие доверия у команды к

автотестам- Дублировалось ручным тестированием

*ТМ - тестовая модель

Page 7: DevOps guide for awesome quality assurance

• E2E-тесты - любые интеграционные тесты, проверяющие

межкомпонентное или межсистемное взаимодействие

• Selenium-тесты - UI-тесты, эмулирующие действия

пользователя в браузере

Page 8: DevOps guide for awesome quality assurance

Как было:

UI-приемка и регресс

Автотесты

Unit-тесты

UI-приемка: • Приемочное тестирование новой

функциональности.

• Осуществляли аналитики, в заключительных итерациях

привлекая тестера для написания

ТМ. 

UI-тесты - тесты, которые проверяют то, что видит пользователь

Page 9: DevOps guide for awesome quality assurance

Как было:

UI-приемка и регресс

Автотесты

Unit-тесты

Регресс:   • Регрессионное тестирование

стабильной версии релиза

на не ухудшение.

• Длилось от 2 дней до 2 недель,

в зависимости от системы.

Page 10: DevOps guide for awesome quality assurance

Как было:

UI-приемка и регресс

Автотесты

Unit-тесты max 20 %

Не более 30 %: появляются с опозданием

50 % - ручная работа

Page 11: DevOps guide for awesome quality assurance

Что “болело”: Чтобы назначить лечение, надо диагностировать болезнь.

Page 12: DevOps guide for awesome quality assurance

Отсутствие собственной экспертизы

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

Непрозрачность

Экспертиза

Докум

ентация

Автоматизация тестирования “отстает” от разработки самого продукта

Непрозрачность всех процессов тестирования

для команды

Документация отнимает много времени и “пишется в стол”

Page 13: DevOps guide for awesome quality assurance

Что и как мы изменили?

При внедрении DevOps, как культуры, процесс тестирования эволюционировал.

Page 14: DevOps guide for awesome quality assurance

Пирамида тестирования

- способ визуализации того, как мы меняем тестирование

Page 15: DevOps guide for awesome quality assurance

Как сейчас:

Автотесты (e2e, UI)

e2e-тесты, компонентные тесты

Unit-тесты

Unit-тесты: • Тесты на ту часть кода,

которая не исполняет какую-

либо бизнес-логику.

• Пишутся разработчиками.

• Учитываются в подсчете code

coverage. 

UI-приемка

Page 16: DevOps guide for awesome quality assurance

Test coverage - тестовое покрытие требований, в %;

1 требование = min 2 тест-кейса (RUP)

Page 17: DevOps guide for awesome quality assurance

Как сейчас:

Автотесты (e2e, UI)

e2e-тесты, компонентные тесты

Unit-тесты

E2E тесты:• Проверяют взаимодействие с

внешними слоями (API, UI);

• Пишут "тестер-разработчик"

или “аналитик-тестер”;

• Исполняются на mocks;

• Часть документации проекта. 

UI-приемка

Page 18: DevOps guide for awesome quality assurance

Как сейчас:

Автотесты (e2e, UI)

e2e-тесты, компонентные тесты

Unit-тесты

Компонентные тесты: • Проверяют только одну

компоненту внутри API или UI;

• Являются частью

документации проекта;

• Пишутся в паре "тестер-

разработчик" или “тестер-

аналитик”

UI-приемка

Page 19: DevOps guide for awesome quality assurance

Как сейчас:

Автотесты (e2e, UI)

e2e-тесты, компонентные тесты

Unit-тесты

UI-приемкаАвтотесты e2e:

• Интеграционные UI тесты

полного цикла. Проверяют

взаимодействие всех слоев

приложения с внешними

системами.

• Разрабатываются в паре

"автотестер-тестер".

Page 20: DevOps guide for awesome quality assurance

Как сейчас:

Автотесты (e2e, UI)

e2e-тесты, компонентные тесты

Unit-тесты

UI-приемкаАвтотесты UI: 

• Компонентные тест-кейсы,

которые проверяют UI с точки

зрения конечного

пользователя. Исполняются на

мокированном API.

• Разрабатываются в паре

"автотестер-тестер".

Page 21: DevOps guide for awesome quality assurance

Как сейчас:

Автотесты (e2e, UI)

e2e-тесты, компонентные тесты

Unit-тесты

UI-приемкаUI приемка:

• Ручное тестирование изменения

артефакта, который в рамках

новой версии был изменен.

• Проводится тестировщиком и

имеет жесткое ограничение по

времени. 

Page 22: DevOps guide for awesome quality assurance

Как сейчас:

Автотесты (e2e, UI)

e2e-тесты, компонентные тесты

Unit-тесты

UI-приемка

30-90 % - code coverege

40 %

50 % - отставание в 1 user story

10 % - ручное тестирование

Page 23: DevOps guide for awesome quality assurance
Page 24: DevOps guide for awesome quality assurance

Manual testing

20 % от всего test coverаge - ручное тестирование

Page 25: DevOps guide for awesome quality assurance

Стратегия

Тестировщик участвует в review юнит-тестов на полноту test coverage;

Тестировщик в паре с разработчиком пишет

юнит-тесты;

Max время приемки - 30 минут;

Обучаем всех тестировщиков программировать.

Page 26: DevOps guide for awesome quality assurance

Приемочное тестирование на скорость

Page 27: DevOps guide for awesome quality assurance

SCRUM PROCESS TESTING

QA EngeenerUser Story Artefact

30 минут

3 часа

User Story

PRODUCT

Page 28: DevOps guide for awesome quality assurance

Документация как код

Как решить проблему устаревшей документации? Или той, что пишется “в стол”?

Page 29: DevOps guide for awesome quality assurance

Test-case как документация проекта

Зачем качественно проектировать тестовую модель и гарантировать тестовое покрытие в 100% ?

Page 30: DevOps guide for awesome quality assurance

Specification by Example:API: Аналитик с тестировщиком генерируют два артефакта для проекта:

1.UML диаграмма. Используем PlantUML. Диаграмма находится в

репозитории проекта;

2.Test-case в нотации BDD в репозитории проекта - каркас для

юнит-тестов. Парная разработка с тестировщиком;Во время сборки проекта генерируется html-документ в artifactory, как документация к релизу;

Page 31: DevOps guide for awesome quality assurance

Используемые инструменты:

Spock Framework

Page 32: DevOps guide for awesome quality assurance

Проектирование тест-кейсов – важнейшая часть тестирования

Почему?

Page 33: DevOps guide for awesome quality assurance

Зачем мы это делаем?

• Тестируем требования

• Проектируем тестовую модель

• Приоритезируем и категоризируем тест-кейсы

Page 34: DevOps guide for awesome quality assurance

REST-сервис

Функциональная логикаВход Выход

Внешняя БД Внешний сервис

Page 35: DevOps guide for awesome quality assurance

Specification by Example:UI: Проектирование тест-кейсов происходит на user-story:

1.Тестировщик с разработчиком автотестов в паре для

 user-story описывает все возможные случаи в BDD сразу в коде проекта автотестов;

2.В тест-кейсах для автотестов всегда точное отражение

того, какими функциональными требованиями обладает US;

Page 36: DevOps guide for awesome quality assurance

Используемые инструменты:Spock Framework

Page 37: DevOps guide for awesome quality assurance

Жизненный цикл ТМПроектированиеТМнаAPi

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

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

РевьюpullrequestсAPIнаполнотуТМ

ПроектированиеТМнаUI,подготовкатест.данных

Парнаяразработкаавтоматизированныхтест-кейсовнаUi,савтотестером

Page 38: DevOps guide for awesome quality assurance

В итоге - чудо:• Документация для проекта хранится в коде:

• Документация версионируется;

• Документация актуальная, потому что тестировщики и аналитики

вынуждены поддерживать её,

иначе автотесты будут «ломаться»;

• Визуализация тестового покрытия (test coverage);

• Сбор статистики и метрик по тестированию и качества проекта;

Page 39: DevOps guide for awesome quality assurance

Unit-тестирование

Page 40: DevOps guide for awesome quality assurance

Тесты на API, как документация к коду

Page 41: DevOps guide for awesome quality assurance

Автогенерация спецификации на API

Page 42: DevOps guide for awesome quality assurance

Автогенерация спецификации на API

Page 43: DevOps guide for awesome quality assurance

Структура тестовой модели

Page 44: DevOps guide for awesome quality assurance

Automated testing

Page 45: DevOps guide for awesome quality assurance

Внедрение TDDРазработчики пишут юнит-тесты на API, UIПокрытие кода тестами (unit-tests, e2e);Code coverage не менее 25%;Парное программирование;

Page 46: DevOps guide for awesome quality assurance

Разработка автотестов• Разработчики автотестов разрабатывают интеграционные и UI

автотесты с отставанием в один спринт

• Автотесты запускаются при каждом pull request

• Парное программирование с кем-нибудь из команды;

• Доработка фреймворка с автотестами: время прогона каждой

сборки с автотестами не должно превышать 30 минут. 

• Автоматизация тестирования адаптивности и кроссбраузерности;

Page 47: DevOps guide for awesome quality assurance

Инфраструктура

Инфраструктура для

автотестов позволяет

делать любой регресс

за 30 минут

Page 48: DevOps guide for awesome quality assurance

Инфраструктура для автотестов

…или как выжать максимум пользы от того что имеем.

Page 49: DevOps guide for awesome quality assurance

Инструменты и технологии• Selenium Webdriver• Selenium Grid• Ansible• Docker• Mesos + marathon• Azure Pack• Jenkins 2.0

Page 50: DevOps guide for awesome quality assurance

git

Mesos Slave

Mesos Slave

Mesos Slave

Mesos Slave

CI Pipeline

CI Autotests

CLI Number Of Containers

CLI Create Selenium Grid

Repo Autotests projects

Repo Docker Images

Mesos master

marathon REST APIКластер c произвольным количеством VM

c различными физ. характеристиками и в различных VLAN,

ОС: Centos 7.2

Инфраструктурное ПО: • ansible• docker• zookeeper• mesos• marathon

Page 51: DevOps guide for awesome quality assurance

Pipeline single job autotests

Seleniumchrome

node

Seleniumfirefoxnode

Seleniumchrome

node

Seleniumfirefox node

Jenkins: Job1 cli Number Of Containers

cli Create Selenium Grid

Selenium Hub

Maven, JDK

Selenium Grid

Mesos master

marathon REST API

Hub, node запущеныв docker-контейнерах

cli Delete Selenium Grid

Page 52: DevOps guide for awesome quality assurance

Pipeline CLI Number of Containersgit

Jenkins: Job1

CLI Number Of Containers

Repo Autotests projects

Входные параметры: • Наименование проекта (git repo)• Max время прогона автотестов - 30 мин• Наименования docker images (необязательно)

1.Подсчитывает

количество .story файлов или test-сетов в проекте

2.Исключает skipped тест-ы3.Считает по формуле, какое

количество контейнеров-nodes необходимо поднять в selenium

grid4.Возвращает целочисленное

значение

Page 53: DevOps guide for awesome quality assurance

Целевая схема нагрузочного тестирования

Продукт должен быть не только без багов, но и быстро работать

Page 54: DevOps guide for awesome quality assurance

Разрабатываем централизованное хранилище моков

Переиспользуется разработчиками, тестировщиками для автотестирования и нагрузочного тестирования.

Page 55: DevOps guide for awesome quality assurance

Встраиваем запуск нагрузочного

тестирования в Pipeliene проекта. Нагрузочное тестирование запускается в

момент запуска регрессионных автотестов, после установки приложения на стенд.

Page 56: DevOps guide for awesome quality assurance

Автоматизируем анализ

результатов автотестов на

основании предустановленного SLA.

Page 57: DevOps guide for awesome quality assurance

Снимаем метрики:

- скорость загрузки страницы (UI)

- время отклика REST-сервиса (API)

Page 58: DevOps guide for awesome quality assurance

Метрики по тестированию

Как мы понимаем, что достигли цели?В каждом проекте для оценки качества должно использоваться не менее 5 различных метрик.

Page 59: DevOps guide for awesome quality assurance

Как померить качество?… или как мы гарантируем себе, что в погоне за быстрым деплоем мы не ухудшаем качество продукта?

Page 60: DevOps guide for awesome quality assurance

МЕТРИКИ КАЧЕСТВА

Code coverage

Дефекты, обнаруженные в продакшне

Качество исправления дефектов

% автоматизации тестового покрытия

(e2e UI, unit тесты)

Test coverage

Частота проведения регрессии

Дефекты, обнаруженные при интеграции

Page 61: DevOps guide for awesome quality assurance

$: есть ли выгода?… метрики, которые мы используем для понимания выгодно ли то, что мы делаем для Бизнеса.

Page 62: DevOps guide for awesome quality assurance

МЕТРИКИ “ЦЕНА/КАЧЕСТВО”

Окна анализа результатов тестирования

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

Время на создание автоматизированных

тестов

Окно тестирования =< 30 мин

Page 63: DevOps guide for awesome quality assurance

Автоматизация• Весь регресс автоматизирован;• Автоматизируем подсчет test coverage;

• Интегрируем отчеты результатов автотестов в jira pipeline;

• Автоматизируем сбор метрик с помощью jira; 

Page 64: DevOps guide for awesome quality assurance

Эволюция культуры

Page 65: DevOps guide for awesome quality assurance

Процессные изменения

• Прозрачность тестирования;• Учимся принимать риски;

Page 66: DevOps guide for awesome quality assurance

КОММУНИКАЦИИ

Page 67: DevOps guide for awesome quality assurance

Супертестировщик - кто же он?

Т-образность: cross domain skills & attitudes

Page 68: DevOps guide for awesome quality assurance

Немножко программист:

– Обладает навыками программирования на Java или на JS;– Понимает алгоритмы на начальном уровне;

Супертестировщик – это…

Page 69: DevOps guide for awesome quality assurance

Немножко аналитик:

– Знает архитектуру тестируемого приложения;– Не тестирует «черный ящик» и может залезть в код;– Осуществляет приемочное тестирование;

Супертестировщик – это…

Page 70: DevOps guide for awesome quality assurance

И просто крутой QA engineer:

– Владеет техниками тест-дизайна;– Умеет проектировать тестовую модель с точки зрения используемой пирамиды;

– Пишет/проектирует модульные тесты;

Супертестировщик – это…

Page 71: DevOps guide for awesome quality assurance

ВАЖНО! •Тестер•Тестировщик• QC engineer

Не синонимы QA engineer

QA engineer <> QC engineer

Page 72: DevOps guide for awesome quality assurance

Нужны крутые тестировщики

Вы не найдете идеальных людей для себя!Ищите людей с потенциалом для обучения.

Page 73: DevOps guide for awesome quality assurance

Эволюция тестировщика до супертестировщика

4 level

Написание тестовой

документации сразу в коде: BDD тесты на API и E2E UI

3 level

Тестирование документации

на этапе аналитики

2 level

Самостоятельная доработка

автотестов сразу в коде

1 level

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

Page 74: DevOps guide for awesome quality assurance

Что же мы сделали?

Page 75: DevOps guide for awesome quality assurance

1 автоматизатор = 2 командыНамеренно создали дефицит ресурса

• Автоматизатор разрабатывает только фреймворк для

приложения команды

• Учит тестировщика писать BDD тесты с использованием

фреймворка

• Обучает 2х тестировщиков из своих команд

• Передает сопровождение разработанных автотестов

команде

Page 76: DevOps guide for awesome quality assurance

Совет: обезопасьте себя• Если есть крутой специалист - пусть он всю работу делает

чужими руками парной сессией.

• Выделяйте время для максимального шаринга экспертизы

между людьми.

• Обучая людей будьте готовы к тому, что они попросят

повышения ЗП

• Придумайте систему мотивации для уже “выросших”

супертестировщиков

Page 77: DevOps guide for awesome quality assurance

Внутреннее community тестировщиков

Зачем коммуникации нужны и как их развивать?

Page 78: DevOps guide for awesome quality assurance

Внутреннее сommunity• Коммуникации = знания и обмен информацией

• Обмен опытом

• Предотвращение дублирования одной и той работы в разных

командах

• Мотивация людей для развития

Page 79: DevOps guide for awesome quality assurance

Выводы

Page 80: DevOps guide for awesome quality assurance

Devops - это не только автоматизация всего и всея

Page 81: DevOps guide for awesome quality assurance

Недостаточно внедрить технологию и сделать CI и CD при отсутствии культуры качества

Page 82: DevOps guide for awesome quality assurance

Функциональные “колодцы” есть не только между dev и ops. Являются ли ваши тестировщики частью Dev?

Page 83: DevOps guide for awesome quality assurance

DevOps - это в первую очередь история про людей, а не про технологии.

Page 84: DevOps guide for awesome quality assurance

Вы потратите больше времени на выстраивание коммуникаций внутри команды, чем на настройку Pipeline

Page 85: DevOps guide for awesome quality assurance

Devops не может существовать без Agile и инженерных практик.

Page 86: DevOps guide for awesome quality assurance

Мои контакты:

@travieso_nastya

traviesonastya

anastasia.aseeva