Развитие процессов тестирования в
Badoo за три года,
или как мы думали, что всё хорошо, а оказалось, что
можно лучше.
Кудинов Илья, Badoo Development
Немного цифр — как обычно
● 2 серверных релиза в день
● Еженедельные релизы приложений
● ~80 => ~150 разработчиков
● ~20 => ~50 QA-инженеров
● 180 => 300+ миллионов пользователей
● 0.6 => 1+ миллиона пользователей онлайн
Разные QA-флоу
● Web / mobile app server
● С daemons
● Mobile flows
– iOS
– Android
– Windows
– Mobile Web
5 (или около того) этапов контроля качества
1. Code Review
2. Тестирование на девеле
3. Тестирование в шоте
4. Тестирование на стейджинге
5. Верификация на продакшне
Code Review
Code Review
● «Автоматизированное» ревью — гит-хуки
Code Review
● «Автоматизированное» ревью — гит-хуки
– Проверка имени ветки
Code Review
● «Автоматизированное» ревью — гит-хуки
– Проверка имени ветки
– Проверка прав на коммит
Code Review
● «Автоматизированное» ревью — гит-хуки
– Проверка имени ветки
– Проверка прав на коммит
– Проверяем соответствие код-формату (phpcf!)
https://habrahabr.ru/company/badoo/blog/232133/
Code Review
● «Автоматизированное» ревью — гит-хуки
– Проверка имени ветки
– Проверка прав на коммит
– Проверяем соответствие код-формату (phpcf!)
– Обновление статусов и комментарии в Jira
Code Review
● «Автоматизированное» ревью — гит-хуки
– Проверка имени ветки
– Проверка прав на коммит
– Проверяем соответствие код-формату (phpcf!)
– Обновление статусов и комментарии в Jira
– Корректность тестов
Code Review
● «Автоматизированное» ревью — гит-хуки
– Проверка имени ветки
– Проверка прав на коммит
– Проверяем соответствие код-формату (phpcf!)
– Обновление статусов и комментарии в Jira
– Корректность тестов
– И мнооооогое-многое другое
Code Review
● «Ручное» ревью
https://habrahabr.ru/company/badoo/blog/200946/
Code Review
● «Ручное» ревью
– Корректность логики
Code Review
● «Ручное» ревью
– Корректность логики
– Оптимальность решения
Code Review
● «Ручное» ревью
– Корректность логики
– Оптимальность решения
– Соответствие архитектуре
Code Review
● «Ручное» ревью
– Корректность логики
– Оптимальность решения
– Соответствие архитектуре
– Покрытие юнит-тестами
Code Review
● «Ручное» ревью
– Корректность логики
– Оптимальность решения
– Соответствие архитектуре
– Покрытие юнит-тестами
– Проверка со стороны других отделов
Автоматическое тестирование ветки
История войны за
автоматический прогон юнит-тестов
Автоматическое тестирование ветки
2012
● 15'000 тестов
● Однопоточный / топорный многопоточный запуск
● >40 минут на прохождение тестов
● Запускаем только руками :(
Автоматическое тестирование ветки
2013
● 25'000 тестов
● Многопоточная пускалка
● 5 минут на прохождение тестов
● Запускаем по резолву задачи!
https://habrahabr.ru/company/badoo/blog/181488/
Автоматическое тестирование ветки
2014
● 40'000 тестов
● Облачная пускалка
● 2-3 минуты на прохождение тестов
Автоматическое тестирование ветки
2015
● 55'000 тестов (каверидж ~50%)
● Стараемся запускать тесты по кавериджу
● 1-2 минуты на прохождение тестов для ветки
● 5-7 минут на прохождение всех тестов
https://habrahabr.ru/company/badoo/blog/264497/
Автоматическое тестирование ветки
2016
● 60'000+ тестов (and counting!)
● SoftMocks!
● PHP7!
● 2-3 минуты на все тесты!
https://habrahabr.ru/company/badoo/blog/279617/
Автоматическое тестирование ветки
Тестирование на девеле
Совсем ручное тестирование
Совсем ручное тестирование
● Регистрируем пользователя для каждого теста
Совсем ручное тестирование
● Регистрируем пользователя для каждого теста
● Заливаем и модерируем фотографии
Совсем ручное тестирование
● Регистрируем пользователя для каждого теста
● Заливаем и модерируем фотографии
● Подготавливаем тестовые данные
Совсем ручное тестирование
● Регистрируем пользователя для каждого теста
● Заливаем и модерируем фотографии
● Подготавливаем тестовые данные
● Сложновоспроизводимые кейсы
Совсем ручное тестирование
● Регистрируем пользователя для каждого теста
● Заливаем и модерируем фотографии
● Подготавливаем тестовые данные
● Сложновоспроизводимые кейсы
● Не забываем удалять
QAAPI
QAAPI
● Быстрая регистрация пользователя
QAAPI
● Быстрая регистрация пользователя
● Заполнение любых данных
QAAPI
● Быстрая регистрация пользователя
● Заполнение любых данных
● Изменение нередактируемых параметров
QAAPI
● Быстрая регистрация пользователя
● Заполнение любых данных
● Изменение нередактируемых параметров
● Ускорение автотестов
QAAPI
● Быстрая регистрация пользователя
● Заполнение любых данных
● Изменение нередактируемых параметров
● Ускорение автотестов
● QAAPI сценарии
QAAPI
● Быстрая регистрация пользователя
● Заполнение любых данных
● Изменение нередактируемых параметров
● Ускорение автотестов
● QAAPI сценарии
● Недоступно для внешних пользователей
Улучшенное окружение
Облачный скриптовый фреймворк
* * 1 * * script1.php
* 5 * * * script2.php
User Split
https://habrahabr.ru/company/badoo/blog/278089/
Облачный скриптовый фреймворк
* * 1 * * script1.php
* 5 * * * script2.php
Более стабильные тесты для девела
Тестирование в шоте
● Микростейджинг 'master + task'
● Продакшн-окружение
● Генерация переводов
Тестирование в шоте
● Микростейджинг 'master + task'
● Продакшн-окружение
● Генерация переводов
● NEW! Сбор скриншотов лексем для переводчиков
Тестирование в шоте
● Микростейджинг 'master + task'
● Продакшн-окружение
● Генерация переводов
● NEW! Сбор скриншотов лексем для переводчиков
● NEW! Автоматический запуск селениум-тестов
Селениум-теста нет?
Селениум-теста нет?
● Тесты пишутся после релиза задачи
● Селениум-тестами покрывается только устоявшийся и
критический функционал
Селениум-тест упал!
Селениум-тест упал!
Селениум-тест упал!
Сборка релиза
AIDA: Automated Interactive Deploy Assistant
https://habrahabr.ru/company/badoo/blog/169417/
Сборка релиза
● Определение задач, готовых к релизу
Сборка релиза
● Определение задач, готовых к релизу
● Автомерж
Сборка релиза
● Определение задач, готовых к релизу
● Автомерж
● Деплой релиза на стейджинговые сервера
Сборка релиза
● Определение задач, готовых к релизу
● Автомерж
● Деплой релиза на стейджинговые сервера
● Запуск автоматического тестирования
Автоматическое тестирование релиза
Автоматическое тестирование релиза
● Смоук-тесты при каждом обновлении релизной ветки
Автоматическое тестирование релиза
● Смоук-тесты при каждом обновлении релизной ветки
● Постоянно гоняющиеся юнит- и селениум-тесты
Автоматическое тестирование релиза
● Смоук-тесты при каждом обновлении релизной ветки
● Постоянно гоняющиеся юнит- и селениум-тесты
● Сигнализация о каждой ошибке
Автоматическое тестирование релиза
● Смоук-тесты при каждом обновлении релизной ветки
● Постоянно гоняющиеся юнит- и селениум-тесты
● Сигнализация о каждой ошибке
● Возможность быстрой пересборки билда при ошибке
Ручное тестирование релиза
Что-то сломалось!
(на стейджинге, не на продкшне, конечно же!)
Локализуем проблему
Локализуем проблему
● Смотрим логи тестов
Локализуем проблему
● Смотрим логи тестов
● Запускаем там, где не
запускались
Локализуем проблему
● Смотрим логи тестов
● Запускаем там, где не
запускались
● Находим тикет, в
котором всё сломалось
Локализуем проблему
● Смотрим логи тестов
● Запускаем там, где не
запускались
● Находим тикет, в
котором всё сломалось
● Помогает не всегда —
приходится искать
самим :(
Устраняем проблему
● Если всё совсем плохо — откатываем тикет
Устраняем проблему
● Фиксим коммитом в ветку билда (?)
Устраняем проблему
● Делаем патч в билд!
Всё готово к релизу?
Всё готово к релизу?
Р Е Л И З !
Нет, на самом деле мы работаем дальше
Верификация на продакшне
Мониторинг!
Мониторинг
● RRDTool
– Основные метрики
– Нагрузка
– Логи ошибок и дебаг-сообщений
Мониторинг
● Splunk
– Динамика событий в реальном времени
– Графики ошибок и дебага
– Создание тикетов на ошибки прямо из интерфейса
Всегда есть куда стремиться!
Вопросы?
Кудинов Илья
vk.com/relzeg
fb.com/relzeg
Badoo Development
vk.com/badoocom
fb.com/BadooMoscow
habrahabr.ru/company/badoo
Статьи на Хабре
● GitPHP: https://habrahabr.ru/company/badoo/blog/200946/
● PHPCF: https://habrahabr.ru/company/badoo/blog/232133/
● Многопоточная пускалка: https://habrahabr.ru/company/badoo/blog/181488/
● Сборка кавериджа, QAAPI: https://habrahabr.ru/company/badoo/blog/264497/
● SoftMocks: https://habrahabr.ru/company/badoo/blog/279617/
● User Split: https://habrahabr.ru/company/badoo/blog/278089/
● AIDA: https://habrahabr.ru/company/badoo/blog/169417/

More Related Content

PDF
Тимур Шевляков
PDF
Экономически эффективный процесс тестирования
PDF
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
PPT
Инструментация среды исполнения в арсенале тестировщика
PPTX
Тестирование REST-сервисов с применением инженерных практик
PDF
Apache JMeter vs LoadRunner: на заре справедливости, сравнение инструментов н...
PDF
Grail: шаги для ваших Python-тестов
PDF
Selenium grid on-demand
Тимур Шевляков
Экономически эффективный процесс тестирования
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Инструментация среды исполнения в арсенале тестировщика
Тестирование REST-сервисов с применением инженерных практик
Apache JMeter vs LoadRunner: на заре справедливости, сравнение инструментов н...
Grail: шаги для ваших Python-тестов
Selenium grid on-demand

What's hot (20)

PDF
Github Flow. Тестировщики против тестирования
PPTX
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
PDF
UICov - инструмент анализа покрытия UI-тестами
PPTX
Автоматизация тестирования приёмников цифрового телевидения
PDF
Автоматизация функционального тестирования REST API
PDF
Как Cluster Membership Software может помочь QA
PDF
Performance management lessons learnt / Андрей Дмитриев (JUGRU)
PDF
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
PPTX
WPF Automation – test injection approach to application testing
ODP
Автоматизированное тестирование - от сложного к простому, или Запускаем автот...
PDF
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
PPTX
Как играть без игрока
ODP
The fast and the continuous
PDF
Continuous Delivery, или волшебная кнопка для релизов по запросу, Денис Яковл...
PDF
Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
PPTX
Всевидящее око. Мониторинг нагрузочного тестирования с InfluxDB и Grafana
PDF
Сергей Белов
PPTX
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
PPT
Нагрузочное тестирование
PPTX
Автоматическое тестирование Web api
Github Flow. Тестировщики против тестирования
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
UICov - инструмент анализа покрытия UI-тестами
Автоматизация тестирования приёмников цифрового телевидения
Автоматизация функционального тестирования REST API
Как Cluster Membership Software может помочь QA
Performance management lessons learnt / Андрей Дмитриев (JUGRU)
Дело тестера боится: как в опытных руках могут заиграть Java и TestNg
WPF Automation – test injection approach to application testing
Автоматизированное тестирование - от сложного к простому, или Запускаем автот...
Готовим тестовое окружение, или сколько тестовых инстансов вам нужно / Алекса...
Как играть без игрока
The fast and the continuous
Continuous Delivery, или волшебная кнопка для релизов по запросу, Денис Яковл...
Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
Всевидящее око. Мониторинг нагрузочного тестирования с InfluxDB и Grafana
Сергей Белов
Переезжаем с Zabbix на Prometheus / Василий Озеров (fevlake)
Нагрузочное тестирование
Автоматическое тестирование Web api
Ad

Viewers also liked (20)

PDF
Dan Cuellar
PDF
Orta Therox
PDF
Kristian Karl
PDF
Алексей Федоров
PPTX
Антон Турецкий
PPTX
Денис Иванов
PDF
Михаил Ройзнер
PPTX
Алексей Ильичев
PDF
Евгений Брянцев
PDF
Антон Шаяхов
PDF
Никита Липский и Владимир Парфиненко
PDF
Karim Fanadka
PPTX
Автоматизация тестирования WEB API
PDF
Антон Галицын
PDF
Андрей Светлов
PDF
The top 5 things planners need to know about self-driving vehicles
PPTX
Adobe Mobile Barcelona 2015
PDF
2014-04-05 - SPSPhilly - Getting Started with Office 365
PPT
綻放的
PPTX
Unleashing your Power: Basic Training in Library Reference Services
Dan Cuellar
Orta Therox
Kristian Karl
Алексей Федоров
Антон Турецкий
Денис Иванов
Михаил Ройзнер
Алексей Ильичев
Евгений Брянцев
Антон Шаяхов
Никита Липский и Владимир Парфиненко
Karim Fanadka
Автоматизация тестирования WEB API
Антон Галицын
Андрей Светлов
The top 5 things planners need to know about self-driving vehicles
Adobe Mobile Barcelona 2015
2014-04-05 - SPSPhilly - Getting Started with Office 365
綻放的
Unleashing your Power: Basic Training in Library Reference Services
Ad

Similar to Илья Кудинов (20)

PDF
Развитие процессов тестирования в Badoo за три года
PDF
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
PDF
Организация автоматического тестирования в схеме непрерывной интеграции
PDF
C&C for coffee'n'code
PDF
Robot Framework: универсальный инструмент автоматизатора
PDF
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
PPTX
Философия "СI глазами QA" [NoBugs WTF PRO уровень].pptx
PPT
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
PPTX
Кирилл Комлев. О реализации continuous integration для web проектов
PPTX
Автоматизация тестирования: доступна каждому или удел избранных?
PPTX
Test Automation Wargaming SQA Days 17
PDF
Test automation. Part 2. Уровни. Методики. Стек автоматизации.
PDF
WP как экспериментальная платформа
PDF
Владислав Чернов, Badoo
PDF
Доклад Владислава Чернова на конференции LoveQA. "Continuous delivery в крупн...
PPTX
Automation testing desktop applications
PDF
Концепция QaAPI: взгляд на тестирование с другой стороны баррикад
PDF
Иван Крутов - Автоматизация сборки Java-проекта
PDF
QaApi: взгляд на тестирование с другой стороны баррикад
PPTX
Тестирование веб-проектов в Agile
Развитие процессов тестирования в Badoo за три года
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Организация автоматического тестирования в схеме непрерывной интеграции
C&C for coffee'n'code
Robot Framework: универсальный инструмент автоматизатора
Автоматизация тестирования в iOS-проекте на примере ICQ / Д.Куркин, М.Манаев ...
Философия "СI глазами QA" [NoBugs WTF PRO уровень].pptx
Как hh.ru дошли до 500 релизов в квартал без потери в качестве
Кирилл Комлев. О реализации continuous integration для web проектов
Автоматизация тестирования: доступна каждому или удел избранных?
Test Automation Wargaming SQA Days 17
Test automation. Part 2. Уровни. Методики. Стек автоматизации.
WP как экспериментальная платформа
Владислав Чернов, Badoo
Доклад Владислава Чернова на конференции LoveQA. "Continuous delivery в крупн...
Automation testing desktop applications
Концепция QaAPI: взгляд на тестирование с другой стороны баррикад
Иван Крутов - Автоматизация сборки Java-проекта
QaApi: взгляд на тестирование с другой стороны баррикад
Тестирование веб-проектов в Agile

More from CodeFest (20)

PDF
Alexander Graebe
PDF
Никита Прокопов
PPTX
Денис Баталов
PDF
Елена Гальцина
PDF
Александр Калашников
PDF
Ирина Иванова
PDF
Marko Berković
PDF
Денис Кортунов
PDF
Александр Зимин
PDF
Сергей Крапивенский
PDF
Сергей Игнатов
PDF
Николай Крапивный
PDF
Alexander Graebe
PDF
Вадим Смирнов
PDF
Константин Осипов
PDF
Raffaele Rialdi
PDF
Максим Пугачев
PDF
Rene Groeschke
PDF
Иван Бондаренко
PDF
Mete Atamel
Alexander Graebe
Никита Прокопов
Денис Баталов
Елена Гальцина
Александр Калашников
Ирина Иванова
Marko Berković
Денис Кортунов
Александр Зимин
Сергей Крапивенский
Сергей Игнатов
Николай Крапивный
Alexander Graebe
Вадим Смирнов
Константин Осипов
Raffaele Rialdi
Максим Пугачев
Rene Groeschke
Иван Бондаренко
Mete Atamel

Илья Кудинов