Доклад Ильи Кудинова на devconf 2013. "Организация...

43
Организация Организация автоматизированного тестирования автоматизированного тестирования в схеме Continious Integration в схеме Continious Integration Кудинов Илья, QA Engineer, Badoo Development

Upload: badoo-development

Post on 14-Jun-2015

514 views

Category:

Technology


2 download

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

Page 1: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

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

в схеме Continious Integrationв схеме Continious Integration

Кудинов Илья, QA Engineer,Badoo Development

Page 2: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

Зачем нам это всё нужно?Зачем нам это всё нужно?

- Максимально быстрый релиз новых фич;

- Скорейшее реагирование на ошибки;

- Очень большой поток задач – маленькими порциями с ними справляться гораздо проще;

- Разработчики и менеджеры видят результат своей работы практически сразу;

Page 3: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

Немного цифр:Немного цифр:● 2 релиза в день

● >40 задач в день

● ≈70 разработчиков

● ≈20 QA инженеров

● ≈180 миллионов пользователей

● ≈750 тысяч пользователей онлайн в среднем

● ≈1.2 миллиона пользователей онлайн в пике

Page 4: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

Нам нужен крутой и мощный flow Нам нужен крутой и мощный flow контроля качества!контроля качества!

- Тестирование не должно затягиваться;

- Как можно больше кейсов;

- Проверка как задач по отдельности, так и релиза в целом;

- Минимизация “человеческого фактора” при тестировании и деплое;

Page 5: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

Без автоматизированного Без автоматизированного тестированиятестирования

Page 6: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

С автоматизированным С автоматизированным тестированиемтестированием

Page 7: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

ТеорияТеория..Сухой и лаконичный флоу.

Page 8: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

Этапы контроля качестваЭтапы контроля качества

1. ???

2. ???

3. ???

4. ???

5. ???

Page 9: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

1. Code Review

2. ???

3. ???

4. ???

5. ???

Этапы контроля качестваЭтапы контроля качества

Page 10: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

1. Code Review

2. Тестирование на девелоперском сервере

3. ???

4. ???

5. ???

Этапы контроля качестваЭтапы контроля качества

Page 11: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

1. Code Review

2. Тестирование на девелоперском сервере

3. Тестирование в шоте

4. ???

5. ???

Этапы контроля качестваЭтапы контроля качества

Page 12: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

1. Code Review

2. Тестирование на девелоперском сервере

3. Тестирование в шоте

4. Тестирование на препродакшене

5. ???

Этапы контроля качестваЭтапы контроля качества

Page 13: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

1. Code Review

2. Тестирование на девелоперском сервере

3. Тестирование в шоте

4. Тестирование на препродакшене

5. Тестирование на продакшене

Этапы контроля качестваЭтапы контроля качества

Page 14: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

Скучно?Скучно?

Исправляем!Исправляем!

Page 15: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"
Page 16: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"
Page 17: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

Постулаты:Постулаты:

- Задачи делаем максимально атомарными;

- Любую большую задачу разбиваем на отдельные части;

- Каждой задаче – свой тикет в Jira;

- Каждой задаче – своя ветка в Git;

Page 18: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

1. Code Review

2. Тестирование на девелоперском сервере

3. Тестирование в шоте

4. Тестирование на препродакшене

5. Тестирование на продакшене

Этапы контроля качестваЭтапы контроля качества

Page 19: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

Коммит-хуки gitКоммит-хуки git

● Корректность имени ветки● Проверка валидности кода (phpcf!)● Проверка прав на мерж● Обновление тикетов● … и многое другое, всего около 40

Page 20: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

Code ReviewCode Review

Page 21: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

Code ReviewCode Review

Page 22: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

1. Code Review

2. Тестирование на девелоперском сервере

3. Тестирование в шоте

4. Тестирование на препродакшене

5. Тестирование на продакшене

Этапы контроля качестваЭтапы контроля качества

Page 23: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

1. Code Review

1.5. Автоматическое тестирование ветки

2. Тестирование на девелоперском сервере

3. Тестирование в шоте

4. Тестирование на препродакшене

5. Тестирование на продакшене

Этапы контроля качестваЭтапы контроля качества

Page 24: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

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

Page 25: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

Многопоточная ПускалкаМногопоточная Пускалка

● Сбор статистики по тестам● Оптимальное распределение по потокам● Красивый вывод в консоль● Формирование отчёта для TeamCity● 18 000 юнит-тестов за 3-4 минуты!● Going OpenSource — stay tuned!

http://habrahabr.ru/post/181488/

Page 26: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

1. Code Review

1.5. Автоматическое тестирование ветки

2. Тестирование на девелоперском сервере

3. Тестирование в шоте

4. Тестирование на препродакшене

5. Тестирование на продакшене

Этапы контроля качестваЭтапы контроля качества

Page 27: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

● 2 платформы — эмуляция продакшна● Собственная база данных● Свой sandbox для каждого девелопера● Общие для всех sandbox'ов демоны

Девелоперское окружениеДевелоперское окружение

Page 28: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

Ручной запуск юнит-тестов и Ручной запуск юнит-тестов и интеграционных тестовинтеграционных тестов

Page 29: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

1. Code Review

1.5. Автоматическое тестирование ветки

2. Тестирование на девелоперском сервере

3. Тестирование в шоте

4. Тестирование на препродакшене

5. Тестирование на продакшене

Этапы контроля качестваЭтапы контроля качества

Page 30: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

1. Code Review

1.5. Автоматическое тестирование ветки

2. Тестирование на девелоперском сервере

3. Тестирование в шоте

4. Тестирование на препродакшене

5. Тестирование на продакшене

Этапы контроля качестваЭтапы контроля качества

Page 31: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

1. Code Review

1.5. Автоматическое тестирование ветки

2. Тестирование на девелоперском сервере

3. Тестирование в шоте

3.5. Автоматическое тестирование релиза

4. Тестирование на препродакшене

5. Тестирование на продакшене

Этапы контроля качестваЭтапы контроля качества

Page 32: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

Знакомьтесь: АидаЗнакомьтесь: Аида

Page 33: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

Automated Interactive Deploy Automated Interactive Deploy AssistantAssistant

● Деплой задач на препродакшн● Automerge● Запуск автоматических тестов● Рассылка уведомлений (jira, mail, jabber...)● … и многое другое!

http://habrahabr.ru/post/169417/

Page 34: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

Автоматическое тестирование Автоматическое тестирование релизарелиза

● Smoke-тесты при мерже ветки● Юнит-тесты● Интеграционные тесты● Selenium-тесты

Page 35: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

Code CoverageCode Coverage

- Благодаря нашим оптимизациям, теперь считается за 2 часа, а не за 40;

- Высокий CC всего нового кода (задача без юнит-тестов не пройдёт QA);

- Постепенно повышаемый CC легаси-кода;

Page 36: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

А если в новом релизе падают А если в новом релизе падают тесты?тесты?

Page 37: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

Deploy DashboardDeploy Dashboard

● Список текущих релизов● Список задач в каждом релизе● Список активных шотов

● Патчи к текущему релизу!

Page 38: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

1. Code Review

1.5. Автоматическое тестирование ветки

2. Тестирование на девелоперском сервере

3. Тестирование в шоте

3.5. Автоматическое тестирование релиза

4. Тестирование на препродакшене

5. Тестирование на продакшене

Этапы контроля качестваЭтапы контроля качества

Page 39: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

Р Е Л И З !

Page 40: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

1. Code Review

1.5. Автоматическое тестирование ветки

2. Тестирование на девелоперском сервере

3. Тестирование в шоте

3.5. Автоматическое тестирование релиза

4. Тестирование на препродакшене

5. Тестирование на продакшене

Этапы контроля качестваЭтапы контроля качества

Page 41: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

Постоянный мониторингПостоянный мониторинг

- Логи ошибок со всех серверов;

- Всевозможная статистика;

- Сотни графиков разной степени полезности (от обычной до чрезвычайной!);

- Умный и натренированный отдел мониторинга;

Page 42: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

Итог:Итог:

- До 70% задач попадают на продакшн в день выполнения;

- Практически исключено попадание некачественного кода на продакшн;

- Любые просочившиеся ошибки очень быстро локализуются и устраняются;

- QA инженеры довольны и (по большей части) спокойны.

Page 43: Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестирования в схеме Continious Integration"

badoo.com

vk.com/badoocomfb.com/BadooMoscowtwitter.com/BadooDev

habrahabr.ru/company/badoo/

vk.com/relzegfb.com/relzeg