Доклад Ильи Кудинова на devconf 2013. "Организация...
DESCRIPTION
Доклад о том, как выжить в условиях двух релизов в день, не понижая планку качества проекта и дать разработчикам и QA-инженерам больше времени на полезные дела. Подробно: Прослушав доклад, вы узнаете: 1. Что НА САМОМ ДЕЛЕ называется непрерывной интеграцией; 2. Кому и зачем нужно переходить на Continious Integration; 3. Почему процесс контроля качества начинается ещё до написания кода; 4. Как программисты учавствуют в процессе тестирования; 5. Как устроен наш поток тестирования с пятью (!) уровнями контроля; 6. Как наши QA-инженеры тестируют задачи до релиза в максимально реалистичных условиях; 7. Как помогает тестированию плотная интеграция Git, Jira и TeamCity; 8. Зачем нужны более 20 тысяч автоматических тестов и кто их должен разрабатывать и поддерживать; 9. Чем непрерывно занимаются более 10 агентов-тестировщиков в нашей TeamCity; 10. Какими средствами мы добились того, чтобы пункты 8 и 9 не превращал QA-процесс в долгое и унылое действо.TRANSCRIPT
Организация Организация автоматизированного тестированияавтоматизированного тестирования
в схеме 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