SlideShare a Scribd company logo
DevOps guide
for awesome
quality
assurance
Вы хотите, чтобы у вас каждая
фича «протаскивалась» до
production за 3 часа? Тогда вам
нужно вывести своё
тестирование на продвинутый
уровень!
DevOps guide for awesome quality assurance
Пару слов о себе:
• Devops
• Agile Testing couch
• Руководитель автоматизации тестирования
• В QA c 2012 года
• В IT с 2007 года
• В Альфа Банке внедряю Облака
• Немного пишу код =)
• Люблю Linux
А что же было
раньше?
Регресс регрессом
погонял.
Как было:
UI-
приемка и
регресс
Автотесты
Unit-тесты*
Unit-тесты:
• Черный ящик для всех. Никто не
знал что именно покрыто 

юнит-тестами, а что не покрыто. 

• Все на усмотрение разработчика.

• Code coverage не считался.
* Unit-тесты - тесты, которые пишутся разработчиками
Как было:
UI-
приемка и
регресс
Автотесты
Unit-тесты
Автотесты:
Автоматизированные UI E2E сценарии,
покрывающие ТМ* регресса. 

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

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

- Дублировалось ручным тестированием
*ТМ - тестовая модель
• E2E-тесты - любые интеграционные тесты, проверяющие
межкомпонентное или межсистемное взаимодействие
• Selenium-тесты - UI-тесты, эмулирующие действия
пользователя в браузере
Как было:
UI-
приемка и
регресс
Автотесты
Unit-тесты
UI-приемка:
• Приемочное тестирование новой
функциональности. 

• Осуществляли аналитики, в
заключительных итерациях
привлекая тестера для написания
ТМ. 
UI-тесты - тесты, которые проверяют то, что видит пользователь
Как было:
UI-
приемка и
регресс
Автотесты
Unit-тесты
Регресс:  
• Регрессионное тестирование
стабильной версии релиза 

на не ухудшение.
• Длилось от 2 дней до 2 недель, 

в зависимости от системы.
Как было:
UI-
приемка и
регресс
Автотесты
Unit-тесты
max 20 %
Не более 30 %:
появляются с опозданием
50 % - ручная работа
Что “болело”: Чтобы назначить лечение,
надо диагностировать
болезнь.
Отсутствие
собственной экспертизы
Автоматизация
тестирования
Непрозрачность
Экспертиза
Документация
Автоматизация
тестирования “отстает” от
разработки самого
продукта
Непрозрачность всех
процессов тестирования
для команды
Документация отнимает
много времени 

и “пишется в стол”
Что и как
мы изменили?
При внедрении DevOps, 

как культуры, 

процесс тестирования
эволюционировал.
Пирамида
тестирования
- способ визуализации
того, как мы меняем
тестирование
Как сейчас:
Автотесты (e2e, UI)
e2e-тесты, компонентные тесты
Unit-тесты
Unit-тесты:
• Тесты на ту часть кода,
которая не исполняет какую-
либо бизнес-логику.
• Пишутся разработчиками.
• Учитываются в подсчете code
coverage. 
UI-приемка
Test coverage - тестовое покрытие требований, в %;
1 требование = min 2 тест-кейса (RUP)
Как сейчас:
Автотесты (e2e, UI)
e2e-тесты, компонентные тесты
Unit-тесты
E2E тесты:
• Проверяют взаимодействие с
внешними слоями (API, UI);
• Пишут "тестер-разработчик"
или “аналитик-тестер”;
• Исполняются на mocks;
• Часть документации проекта. 
UI-приемка
Как сейчас:
Автотесты (e2e, UI)
e2e-тесты, компонентные тесты
Unit-тесты
Компонентные тесты:
• Проверяют только одну
компоненту внутри API или UI;
• Являются частью
документации проекта;
• Пишутся в паре "тестер-
разработчик" или “тестер-
аналитик”
UI-приемка
Как сейчас:
Автотесты (e2e, UI)
e2e-тесты, компонентные тесты
Unit-тесты
UI-приемка
Автотесты e2e:
• Интеграционные UI тесты
полного цикла. Проверяют
взаимодействие всех слоев
приложения с внешними
системами.
• Разрабатываются в паре
"автотестер-тестер".
Как сейчас:
Автотесты (e2e, UI)
e2e-тесты, компонентные тесты
Unit-тесты
UI-приемка
Автотесты UI: 
• Компонентные тест-кейсы,
которые проверяют UI с точки
зрения конечного
пользователя. Исполняются на
мокированном API.
• Разрабатываются в паре
"автотестер-тестер".
Как сейчас:
Автотесты (e2e, UI)
e2e-тесты, компонентные тесты
Unit-тесты
UI-приемка
UI приемка:
• Ручное тестирование изменения
артефакта, который в рамках
новой версии был изменен.
• Проводится тестировщиком и
имеет жесткое ограничение по
времени. 
Как сейчас:
Автотесты (e2e, UI)
e2e-тесты, компонентные тесты
Unit-тесты
UI-приемка
30-90 % - code
coverege
40 %
50 % - отставание
в 1 user story
10 % - ручное
тестирование
DevOps guide for awesome quality assurance
Manual testing
20 % от всего test
coverаge - ручное
тестирование
Стратегия
Тестировщик участвует в
review юнит-тестов на полноту
test coverage;
Тестировщик в паре с
разработчиком пишет
юнит-тесты;
Max время приемки - 

30 минут;
Обучаем всех тестировщиков 

программировать.
Приемочное
тестирование на
скорость
SCRUM PROCESS TESTING
QA EngeenerUser Story Artefact
30 минут
3 часа
User Story
PRODUCT
Документация
как код
Как решить проблему
устаревшей документации? 

Или той, что пишется 

“в стол”?
Test-case как
документация
проекта
Зачем качественно
проектировать тестовую
модель и гарантировать
тестовое покрытие в 100% ?
Specification by Example:
API: Аналитик с тестировщиком генерируют два артефакта для проекта:
1.UML диаграмма. Используем PlantUML. Диаграмма находится в
репозитории проекта;

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

юнит-тестов. Парная разработка с тестировщиком;

Во время сборки проекта генерируется html-документ в artifactory, 

как документация к релизу;
Используемые инструменты:
Spock Framework
Проектирование
тест-кейсов –
важнейшая часть
тестирования
Почему?
Зачем мы это делаем?
• Тестируем требования

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

• Приоритезируем и категоризируем тест-кейсы
REST-сервис
Функциональная логикаВход Выход
Внешняя БД Внешний сервис
Specification by Example:
UI: Проектирование тест-кейсов происходит на user-story:
1.Тестировщик с разработчиком автотестов в паре для
 user-story описывает все возможные случаи в BDD сразу
в коде проекта автотестов;

2.В тест-кейсах для автотестов всегда точное отражение
того, какими функциональными требованиями обладает
US;
Используемые инструменты:
Spock Framework
Жизненный цикл ТМ
Проектирование	ТМ	на	APi
Парная	разработка	тест-
кейсов	с	аналитиком
Парная	доработка	тест-
кейсов	с	разработчиком
Ревью	pull	request	с	API	на	
полноту	ТМ
Проектирование	ТМ	на	UI,	
подготовка	тест.данных
Парная	разработка	
автоматизированных	тест-
кейсов	на	Ui,	с	автотестером
В итоге - чудо:
• Документация для проекта хранится в коде:
• Документация версионируется;
• Документация актуальная, потому что тестировщики и аналитики
вынуждены поддерживать её, 

иначе автотесты будут «ломаться»;
• Визуализация тестового покрытия (test coverage);
• Сбор статистики и метрик по тестированию и качества проекта;
Unit-
тестирование
Тесты на API, как документация к коду
Автогенерация
спецификации на API
Автогенерация
спецификации на API
Структура тестовой модели
Automated testing
Внедрение TDD
Разработчики пишут юнит-тесты на API, UI
Покрытие кода тестами (unit-tests, e2e);
Code coverage не менее 25%;
Парное программирование;
Разработка автотестов
• Разработчики автотестов разрабатывают интеграционные и UI
автотесты с отставанием в один спринт
• Автотесты запускаются при каждом pull request
• Парное программирование с кем-нибудь из команды;
• Доработка фреймворка с автотестами: время прогона каждой
сборки с автотестами не должно превышать 30 минут. 
• Автоматизация тестирования адаптивности и кроссбраузерности;
Инфраструктура
Инфраструктура для
автотестов позволяет
делать любой регресс
за 30 минут
Инфраструктура
для автотестов
…или как выжать
максимум пользы от того
что имеем.
Инструменты и технологии
• Selenium Webdriver
• Selenium Grid
• Ansible
• Docker
• Mesos + marathon
• Azure Pack
• Jenkins 2.0
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
Pipeline single job autotests
Selenium
chrome
node
Selenium
firefox
node
Selenium
chrome
node
Selenium
firefox
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
Pipeline CLI Number of Containers
git
Jenkins:
Job1
CLI Number Of
Containers
Repo Autotests projects
Входные параметры:
• Наименование проекта (git repo)
• Max время прогона автотестов - 30 мин
• Наименования docker images (необязательно)
1. Подсчитывает
количество .story файлов или
test-сетов в проекте
2. Исключает skipped тест-ы
3. Считает по формуле, какое
количество контейнеров-nodes
необходимо поднять в selenium
grid
4. Возвращает целочисленное
значение
Целевая схема
нагрузочного
тестирования
Продукт должен быть не
только без багов, но и
быстро работать
Разрабатываем централизованное хранилище
моков
Переиспользуется разработчиками,
тестировщиками для автотестирования 

и нагрузочного тестирования.
Встраиваем запуск нагрузочного
тестирования в Pipeliene проекта.
Нагрузочное тестирование запускается в
момент запуска регрессионных автотестов,
после установки приложения на стенд.
Автоматизируем анализ
результатов автотестов на
основании предустановленного SLA.
Снимаем метрики:
- скорость загрузки страницы (UI)
- время отклика REST-сервиса (API)
Метрики по
тестированию
Как мы понимаем, 

что достигли цели?
В каждом проекте для
оценки качества должно
использоваться не менее
5 различных метрик.
Как померить качество?
… или как мы гарантируем себе, что в погоне за
быстрым деплоем мы не ухудшаем качество
продукта?
МЕТРИКИ КАЧЕСТВА
Code coverage
Дефекты, обнаруженные в
продакшне
Качество исправления
дефектов
% автоматизации
тестового покрытия
(e2e UI, unit тесты)
Test coverage
Частота проведения
регрессии
Дефекты, обнаруженные
при интеграции
$: есть ли выгода?
… метрики, которые мы используем для понимания
выгодно ли то, что мы делаем для Бизнеса.
МЕТРИКИ “ЦЕНА/КАЧЕСТВО”
Окна анализа
результатов
тестирования
Окно
автоматизации
тестирования
Время на создание
автоматизированных
тестов
Окно тестирования
=< 30 мин
Автоматизация
• Весь регресс автоматизирован;

• Автоматизируем подсчет test coverage; 

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

• Автоматизируем сбор метрик с помощью jira; 
Эволюция культуры
Процессные изменения
• Прозрачность тестирования;

• Учимся принимать риски;
КОММУНИКАЦИИ
Супертестировщик -
кто же он?
Т-образность: cross
domain skills &
attitudes
Немножко программист:
– Обладает навыками программирования на Java или на JS;
– Понимает алгоритмы на начальном уровне;
Супертестировщик – это…
Немножко аналитик:
– Знает архитектуру тестируемого приложения;
– Не тестирует «черный ящик» и может залезть в код;
– Осуществляет приемочное тестирование;
Супертестировщик – это…
И просто крутой QA engineer:
– Владеет техниками тест-дизайна;
– Умеет проектировать тестовую модель с точки зрения
используемой пирамиды;
– Пишет/проектирует модульные тесты;
Супертестировщик – это…
ВАЖНО!
• Тестер
• Тестировщик
• QC engineer
Не синонимы QA engineer
QA engineer <> QC engineer
Нужны крутые
тестировщики
Вы не найдете идеальных
людей для себя!
Ищите людей с потенциалом
для обучения.
Эволюция тестировщика до супертестировщика
4 level
Написание
тестовой
документации
сразу в коде:
BDD тесты на
API и E2E UI
3 level
Тестирование
документации
на этапе
аналитики
2 level
Самостоятельная
доработка
автотестов сразу
в коде
1 level
Самостоятельное
сопровождение
автотестов
Что же мы сделали?
1 автоматизатор = 2 команды
Намеренно создали дефицит ресурса
• Автоматизатор разрабатывает только фреймворк для
приложения команды
• Учит тестировщика писать BDD тесты с использованием
фреймворка
• Обучает 2х тестировщиков из своих команд
• Передает сопровождение разработанных автотестов
команде
Совет: обезопасьте себя
• Если есть крутой специалист - пусть он всю работу делает
чужими руками парной сессией.
• Выделяйте время для максимального шаринга экспертизы
между людьми.
• Обучая людей будьте готовы к тому, что они попросят
повышения ЗП
• Придумайте систему мотивации для уже “выросших”
супертестировщиков
Внутреннее
community
тестировщиков
Зачем коммуникации
нужны и как их
развивать?
Внутреннее сommunity
• Коммуникации = знания и обмен информацией
• Обмен опытом
• Предотвращение дублирования одной и той работы в разных
командах
• Мотивация людей для развития
Выводы
Devops - это не только
автоматизация всего и всея
Недостаточно внедрить
технологию и сделать CI и
CD при отсутствии
культуры качества
Функциональные
“колодцы” есть не только
между dev и ops. 

Являются ли ваши
тестировщики частью Dev?
DevOps - это в первую
очередь история про
людей, 

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

чем на настройку Pipeline
Devops не может
существовать без Agile 

и инженерных практик.
Мои контакты:
@travieso_nastya
traviesonastya
anastasia.aseeva

More Related Content

PPTX
Роман Василенко. Continuous delivery или как упростить себе жизнь
PDF
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
PPTX
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
PDF
UICov - инструмент анализа покрытия UI-тестами
PPTX
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
PDF
Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
PDF
Юрий Василевский "Автоматизация в XCode"
PDF
Winium — это как Selenium, только под Windows
Роман Василенко. Continuous delivery или как упростить себе жизнь
CodeFest 2014. Павлов И. — Как делать прототипы в автоматизации тестирования
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
UICov - инструмент анализа покрытия UI-тестами
Porting existing games to Apple Metal API. Case study: Divinity Original Sin ...
Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
Юрий Василевский "Автоматизация в XCode"
Winium — это как Selenium, только под Windows

What's hot (20)

PDF
Тестирование в диджитал проектах
PDF
Автоматическое тестирование. Моя система
PPTX
JVM: краткий курс общей анатомии
PPTX
Online TechTalk “Flutter Mobile Development”
PDF
Grail: шаги для ваших Python-тестов
PPTX
Альтернативные способы изучения программирования с нуля
PDF
Марина Широчкина — «Тестирование»
PDF
Экономически эффективный процесс тестирования
PDF
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
PDF
Архитектура автоматизированных тестов
PDF
Cеминар в Виннице (22.03.2014)
PDF
Разработка через тестирование (TDD и BDD)
PPTX
Организация эффективной работы команды при разработке и поддержке сложной инф...
PPTX
Поддержка Java 8 в Excelsior JET
PPTX
Автоматическое тестирование Web api
PDF
Марина Широчкина - Тестирование
PPTX
End-2-End UI автоматизация в мобильном приложении. Наша реализация
PPTX
Практика тестирования web сервисов
PPTX
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
PPT
Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...
Тестирование в диджитал проектах
Автоматическое тестирование. Моя система
JVM: краткий курс общей анатомии
Online TechTalk “Flutter Mobile Development”
Grail: шаги для ваших Python-тестов
Альтернативные способы изучения программирования с нуля
Марина Широчкина — «Тестирование»
Экономически эффективный процесс тестирования
Java худеет. Спроси меня как. Уменьшение размера дистрибутива Java приложения...
Архитектура автоматизированных тестов
Cеминар в Виннице (22.03.2014)
Разработка через тестирование (TDD и BDD)
Организация эффективной работы команды при разработке и поддержке сложной инф...
Поддержка Java 8 в Excelsior JET
Автоматическое тестирование Web api
Марина Широчкина - Тестирование
End-2-End UI автоматизация в мобильном приложении. Наша реализация
Практика тестирования web сервисов
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNG
Эльдар Гусейнов "Эффективная архитектура мобильной автоматизации для проектов...
Ad

Viewers also liked (7)

PDF
Почему Appium?
PDF
QAFest. Роль тестирования в Devops
PDF
Quality Assurance in a DevOps World
PPT
SDLC Transformation: How Paychex Began Adopting Rational CLM (+ Agile) & Adap...
PPTX
Future of UI Automation testing and JDI
PPTX
Continuous Quality: What DevOps Means for QA
PPTX
Chef for DevOps - an Introduction
Почему Appium?
QAFest. Роль тестирования в Devops
Quality Assurance in a DevOps World
SDLC Transformation: How Paychex Began Adopting Rational CLM (+ Agile) & Adap...
Future of UI Automation testing and JDI
Continuous Quality: What DevOps Means for QA
Chef for DevOps - an Introduction
Ad

Similar to DevOps guide for awesome quality assurance (20)

PDF
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
PPT
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
PPT
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
PPTX
Добиваемся эффективности каждого из 9000+ UI-тестов
PPTX
Тестирование крупных проектов командой из одного тестировщика
PPTX
Тестирование крупного проекта командой из одного тестировщика
PPTX
Continious integration-Automated Testing-Solid-Agile
PDF
Тестируй это / Виктор Русакович (GP Solutions)
PPTX
Web application testing architecture
PPTX
А вы знаете что тестируют ваши тесты?
PPTX
Do you know what you are testing?
PDF
Илья Кудинов
PDF
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
PPTX
Автоматизация тестирования
PDF
Тестирование весна 2014 смешанное занятие 1
PPT
JavaTalks.Unit Testing.Part 1
PPTX
Мобильная Автоматизация в Контексте Continuous Delivery
PPTX
Эволюция автотестирования на Selenium
PDF
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
PDF
Развитие процессов тестирования в Badoo за три года
QA Fes 2016. Анастасия Асеева. Роль тестирования в Devops
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Добиваемся эффективности каждого из 9000+ UI-тестов
Тестирование крупных проектов командой из одного тестировщика
Тестирование крупного проекта командой из одного тестировщика
Continious integration-Automated Testing-Solid-Agile
Тестируй это / Виктор Русакович (GP Solutions)
Web application testing architecture
А вы знаете что тестируют ваши тесты?
Do you know what you are testing?
Илья Кудинов
"Непрерывная интеграция или "Кто всё сломал?", Виктор Русакович, MoscowJS 23
Автоматизация тестирования
Тестирование весна 2014 смешанное занятие 1
JavaTalks.Unit Testing.Part 1
Мобильная Автоматизация в Контексте Continuous Delivery
Эволюция автотестирования на Selenium
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Развитие процессов тестирования в Badoo за три года

DevOps guide for awesome quality assurance