Организация Организация автоматизированного тестированияавтоматизированного тестирования
в схеме Continious Integrationв схеме Continious Integration
Кудинов Илья, QA Engineer,Badoo Development
Зачем нам это всё нужно?Зачем нам это всё нужно?
- Максимально быстрый релиз новых фич;
- Скорейшее реагирование на ошибки;
- Очень большой поток задач – маленькими порциями с ними справляться гораздо проще;
- Разработчики и менеджеры видят результат своей работы практически сразу;
Немного цифр:Немного цифр:● 2 релиза в день
● >40 задач в день
● ≈70 разработчиков
● ≈20 QA инженеров
● ≈180 миллионов пользователей
● ≈750 тысяч пользователей онлайн в среднем
● ≈1.2 миллиона пользователей онлайн в пике
Нам нужен крутой и мощный flow Нам нужен крутой и мощный flow контроля качества!контроля качества!
- Тестирование не должно затягиваться;
- Как можно больше кейсов;
- Проверка как задач по отдельности, так и релиза в целом;
- Минимизация “человеческого фактора” при тестировании и деплое;
Без автоматизированного Без автоматизированного тестированиятестирования
С автоматизированным С автоматизированным тестированиемтестированием
ТеорияТеория..Сухой и лаконичный флоу.
Этапы контроля качестваЭтапы контроля качества
1. ???
2. ???
3. ???
4. ???
5. ???
1. Code Review
2. ???
3. ???
4. ???
5. ???
Этапы контроля качестваЭтапы контроля качества
1. Code Review
2. Тестирование на девелоперском сервере
3. ???
4. ???
5. ???
Этапы контроля качестваЭтапы контроля качества
1. Code Review
2. Тестирование на девелоперском сервере
3. Тестирование в шоте
4. ???
5. ???
Этапы контроля качестваЭтапы контроля качества
1. Code Review
2. Тестирование на девелоперском сервере
3. Тестирование в шоте
4. Тестирование на препродакшене
5. ???
Этапы контроля качестваЭтапы контроля качества
1. Code Review
2. Тестирование на девелоперском сервере
3. Тестирование в шоте
4. Тестирование на препродакшене
5. Тестирование на продакшене
Этапы контроля качестваЭтапы контроля качества
Скучно?Скучно?
Исправляем!Исправляем!
Постулаты:Постулаты:
- Задачи делаем максимально атомарными;
- Любую большую задачу разбиваем на отдельные части;
- Каждой задаче – свой тикет в Jira;
- Каждой задаче – своя ветка в Git;
1. Code Review
2. Тестирование на девелоперском сервере
3. Тестирование в шоте
4. Тестирование на препродакшене
5. Тестирование на продакшене
Этапы контроля качестваЭтапы контроля качества
Коммит-хуки gitКоммит-хуки git
● Корректность имени ветки● Проверка валидности кода (phpcf!)● Проверка прав на мерж● Обновление тикетов● … и многое другое, всего около 40
Code ReviewCode Review
Code ReviewCode Review
1. Code Review
2. Тестирование на девелоперском сервере
3. Тестирование в шоте
4. Тестирование на препродакшене
5. Тестирование на продакшене
Этапы контроля качестваЭтапы контроля качества
1. Code Review
1.5. Автоматическое тестирование ветки
2. Тестирование на девелоперском сервере
3. Тестирование в шоте
4. Тестирование на препродакшене
5. Тестирование на продакшене
Этапы контроля качестваЭтапы контроля качества
Автоматическое тестирование Автоматическое тестирование веткиветки
Многопоточная ПускалкаМногопоточная Пускалка
● Сбор статистики по тестам● Оптимальное распределение по потокам● Красивый вывод в консоль● Формирование отчёта для TeamCity● 18 000 юнит-тестов за 3-4 минуты!● Going OpenSource — stay tuned!
http://habrahabr.ru/post/181488/
1. Code Review
1.5. Автоматическое тестирование ветки
2. Тестирование на девелоперском сервере
3. Тестирование в шоте
4. Тестирование на препродакшене
5. Тестирование на продакшене
Этапы контроля качестваЭтапы контроля качества
● 2 платформы — эмуляция продакшна● Собственная база данных● Свой sandbox для каждого девелопера● Общие для всех sandbox'ов демоны
Девелоперское окружениеДевелоперское окружение
Ручной запуск юнит-тестов и Ручной запуск юнит-тестов и интеграционных тестовинтеграционных тестов
1. Code Review
1.5. Автоматическое тестирование ветки
2. Тестирование на девелоперском сервере
3. Тестирование в шоте
4. Тестирование на препродакшене
5. Тестирование на продакшене
Этапы контроля качестваЭтапы контроля качества
1. Code Review
1.5. Автоматическое тестирование ветки
2. Тестирование на девелоперском сервере
3. Тестирование в шоте
4. Тестирование на препродакшене
5. Тестирование на продакшене
Этапы контроля качестваЭтапы контроля качества
1. Code Review
1.5. Автоматическое тестирование ветки
2. Тестирование на девелоперском сервере
3. Тестирование в шоте
3.5. Автоматическое тестирование релиза
4. Тестирование на препродакшене
5. Тестирование на продакшене
Этапы контроля качестваЭтапы контроля качества
Знакомьтесь: АидаЗнакомьтесь: Аида
Automated Interactive Deploy Automated Interactive Deploy AssistantAssistant
● Деплой задач на препродакшн● Automerge● Запуск автоматических тестов● Рассылка уведомлений (jira, mail, jabber...)● … и многое другое!
http://habrahabr.ru/post/169417/
Автоматическое тестирование Автоматическое тестирование релизарелиза
● Smoke-тесты при мерже ветки● Юнит-тесты● Интеграционные тесты● Selenium-тесты
Code CoverageCode Coverage
- Благодаря нашим оптимизациям, теперь считается за 2 часа, а не за 40;
- Высокий CC всего нового кода (задача без юнит-тестов не пройдёт QA);
- Постепенно повышаемый CC легаси-кода;
А если в новом релизе падают А если в новом релизе падают тесты?тесты?
Deploy DashboardDeploy Dashboard
● Список текущих релизов● Список задач в каждом релизе● Список активных шотов
● Патчи к текущему релизу!
1. Code Review
1.5. Автоматическое тестирование ветки
2. Тестирование на девелоперском сервере
3. Тестирование в шоте
3.5. Автоматическое тестирование релиза
4. Тестирование на препродакшене
5. Тестирование на продакшене
Этапы контроля качестваЭтапы контроля качества
Р Е Л И З !
1. Code Review
1.5. Автоматическое тестирование ветки
2. Тестирование на девелоперском сервере
3. Тестирование в шоте
3.5. Автоматическое тестирование релиза
4. Тестирование на препродакшене
5. Тестирование на продакшене
Этапы контроля качестваЭтапы контроля качества
Постоянный мониторингПостоянный мониторинг
- Логи ошибок со всех серверов;
- Всевозможная статистика;
- Сотни графиков разной степени полезности (от обычной до чрезвычайной!);
- Умный и натренированный отдел мониторинга;
Итог:Итог:
- До 70% задач попадают на продакшн в день выполнения;
- Практически исключено попадание некачественного кода на продакшн;
- Любые просочившиеся ошибки очень быстро локализуются и устраняются;
- QA инженеры довольны и (по большей части) спокойны.
badoo.com
vk.com/badoocomfb.com/BadooMoscowtwitter.com/BadooDev
habrahabr.ru/company/badoo/
vk.com/relzegfb.com/relzeg