Top Banner
Развитие процессов тестирования в Badoo за три года, или как мы думали, что всё хорошо, а оказалось, что можно лучше. Кудинов Илья, Badoo Development
83

Илья Кудинов

Apr 16, 2017

Download

Software

CodeFest
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Илья Кудинов

Развитие процессов тестирования вBadoo за три года,

или как мы думали, что всё хорошо, а оказалось, чтоможно лучше.

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

Page 2: Илья Кудинов

Немного цифр — как обычно

● 2 серверных релиза в день● Еженедельные релизы приложений

● ~80 => ~150 разработчиков● ~20 => ~50 QA-инженеров

● 180 => 300+ миллионов пользователей● 0.6 => 1+ миллиона пользователей онлайн

Page 3: Илья Кудинов

Разные QA-флоу

● Web / mobile app server● С daemons● Mobile flows

– iOS

– Android

– Windows

– Mobile Web

Page 4: Илья Кудинов

5 (или около того) этапов контроля качества

1. Code Review

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

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

4. Тестирование на стейджинге

5. Верификация на продакшне

Page 5: Илья Кудинов

Code Review

Page 6: Илья Кудинов

Code Review

● «Автоматизированное» ревью — гит-хуки

Page 7: Илья Кудинов

Code Review

● «Автоматизированное» ревью — гит-хуки– Проверка имени ветки

Page 8: Илья Кудинов

Code Review

● «Автоматизированное» ревью — гит-хуки– Проверка имени ветки

– Проверка прав на коммит

Page 9: Илья Кудинов

Code Review

● «Автоматизированное» ревью — гит-хуки– Проверка имени ветки

– Проверка прав на коммит

– Проверяем соответствие код-формату (phpcf!)

● https://habrahabr.ru/company/badoo/blog/232133/

Page 10: Илья Кудинов

Code Review

● «Автоматизированное» ревью — гит-хуки– Проверка имени ветки

– Проверка прав на коммит

– Проверяем соответствие код-формату (phpcf!)

– Обновление статусов и комментарии в Jira

Page 11: Илья Кудинов

Code Review

● «Автоматизированное» ревью — гит-хуки– Проверка имени ветки

– Проверка прав на коммит

– Проверяем соответствие код-формату (phpcf!)

– Обновление статусов и комментарии в Jira

– Корректность тестов

Page 12: Илья Кудинов

Code Review

● «Автоматизированное» ревью — гит-хуки– Проверка имени ветки

– Проверка прав на коммит

– Проверяем соответствие код-формату (phpcf!)

– Обновление статусов и комментарии в Jira

– Корректность тестов

– И мнооооогое-многое другое

Page 13: Илья Кудинов

Code Review

● «Ручное» ревью

https://habrahabr.ru/company/badoo/blog/200946/

Page 14: Илья Кудинов

Code Review

● «Ручное» ревью– Корректность логики

Page 15: Илья Кудинов

Code Review

● «Ручное» ревью– Корректность логики

– Оптимальность решения

Page 16: Илья Кудинов

Code Review

● «Ручное» ревью– Корректность логики

– Оптимальность решения

– Соответствие архитектуре

Page 17: Илья Кудинов

Code Review

● «Ручное» ревью– Корректность логики

– Оптимальность решения

– Соответствие архитектуре

– Покрытие юнит-тестами

Page 18: Илья Кудинов

Code Review

● «Ручное» ревью– Корректность логики

– Оптимальность решения

– Соответствие архитектуре

– Покрытие юнит-тестами

– Проверка со стороны других отделов

Page 19: Илья Кудинов

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

История войны заавтоматический прогон юнит-тестов

Page 20: Илья Кудинов

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

2012● 15'000 тестов● Однопоточный / топорный многопоточный запуск● >40 минут на прохождение тестов● Запускаем только руками :(

Page 21: Илья Кудинов

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

2013● 25'000 тестов● Многопоточная пускалка● 5 минут на прохождение тестов● Запускаем по резолву задачи!

https://habrahabr.ru/company/badoo/blog/181488/

Page 22: Илья Кудинов

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

2014● 40'000 тестов● Облачная пускалка● 2-3 минуты на прохождение тестов

Page 23: Илья Кудинов

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

2015● 55'000 тестов (каверидж ~50%)● Стараемся запускать тесты по кавериджу● 1-2 минуты на прохождение тестов для ветки● 5-7 минут на прохождение всех тестов

https://habrahabr.ru/company/badoo/blog/264497/

Page 24: Илья Кудинов

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

2016● 60'000+ тестов (and counting!)● SoftMocks!● PHP7!● 2-3 минуты на все тесты!

https://habrahabr.ru/company/badoo/blog/279617/

Page 25: Илья Кудинов

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

Page 26: Илья Кудинов

Тестирование на девеле

Page 27: Илья Кудинов

Совсем ручное тестирование

Page 28: Илья Кудинов

Совсем ручное тестирование

● Регистрируем пользователя для каждого теста

Page 29: Илья Кудинов

Совсем ручное тестирование

● Регистрируем пользователя для каждого теста● Заливаем и модерируем фотографии

Page 30: Илья Кудинов

Совсем ручное тестирование

● Регистрируем пользователя для каждого теста● Заливаем и модерируем фотографии● Подготавливаем тестовые данные

Page 31: Илья Кудинов

Совсем ручное тестирование

● Регистрируем пользователя для каждого теста● Заливаем и модерируем фотографии● Подготавливаем тестовые данные● Сложновоспроизводимые кейсы

Page 32: Илья Кудинов

Совсем ручное тестирование

● Регистрируем пользователя для каждого теста● Заливаем и модерируем фотографии● Подготавливаем тестовые данные● Сложновоспроизводимые кейсы● Не забываем удалять

Page 33: Илья Кудинов

QAAPI

Page 34: Илья Кудинов

QAAPI

● Быстрая регистрация пользователя

Page 35: Илья Кудинов

QAAPI

● Быстрая регистрация пользователя● Заполнение любых данных

Page 36: Илья Кудинов

QAAPI

● Быстрая регистрация пользователя● Заполнение любых данных● Изменение нередактируемых параметров

Page 37: Илья Кудинов

QAAPI

● Быстрая регистрация пользователя● Заполнение любых данных● Изменение нередактируемых параметров● Ускорение автотестов

Page 38: Илья Кудинов

QAAPI

● Быстрая регистрация пользователя● Заполнение любых данных● Изменение нередактируемых параметров● Ускорение автотестов● QAAPI сценарии

Page 39: Илья Кудинов

QAAPI

● Быстрая регистрация пользователя● Заполнение любых данных● Изменение нередактируемых параметров● Ускорение автотестов● QAAPI сценарии● Недоступно для внешних пользователей

Page 40: Илья Кудинов

Улучшенное окружение

Page 41: Илья Кудинов

Облачный скриптовый фреймворк

* * 1 * * script1.php* 5 * * * script2.php

Page 42: Илья Кудинов

User Split

https://habrahabr.ru/company/badoo/blog/278089/

Page 43: Илья Кудинов

Облачный скриптовый фреймворк

* * 1 * * script1.php* 5 * * * script2.php

Page 44: Илья Кудинов

Более стабильные тесты для девела

Page 45: Илья Кудинов

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

● Микростейджинг 'master + task'● Продакшн-окружение● Генерация переводов

Page 46: Илья Кудинов

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

● Микростейджинг 'master + task'● Продакшн-окружение● Генерация переводов

● NEW! Сбор скриншотов лексем для переводчиков

Page 47: Илья Кудинов

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

● Микростейджинг 'master + task'● Продакшн-окружение● Генерация переводов

● NEW! Сбор скриншотов лексем для переводчиков

● NEW! Автоматический запуск селениум-тестов

Page 48: Илья Кудинов

Селениум-теста нет?

Page 49: Илья Кудинов

Селениум-теста нет?

● Тесты пишутся после релиза задачи● Селениум-тестами покрывается только устоявшийся и

критический функционал

Page 50: Илья Кудинов

Селениум-тест упал!

Page 51: Илья Кудинов

Селениум-тест упал!

Page 52: Илья Кудинов

Селениум-тест упал!

Page 53: Илья Кудинов

Сборка релизаAIDA: Automated Interactive Deploy Assistant

https://habrahabr.ru/company/badoo/blog/169417/

Page 54: Илья Кудинов

Сборка релиза

● Определение задач, готовых к релизу

Page 55: Илья Кудинов

Сборка релиза

● Определение задач, готовых к релизу● Автомерж

Page 56: Илья Кудинов

Сборка релиза

● Определение задач, готовых к релизу● Автомерж● Деплой релиза на стейджинговые сервера

Page 57: Илья Кудинов

Сборка релиза

● Определение задач, готовых к релизу● Автомерж● Деплой релиза на стейджинговые сервера● Запуск автоматического тестирования

Page 58: Илья Кудинов

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

Page 59: Илья Кудинов

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

● Смоук-тесты при каждом обновлении релизной ветки

Page 60: Илья Кудинов

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

● Смоук-тесты при каждом обновлении релизной ветки

● Постоянно гоняющиеся юнит- и селениум-тесты

Page 61: Илья Кудинов

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

● Смоук-тесты при каждом обновлении релизной ветки

● Постоянно гоняющиеся юнит- и селениум-тесты

● Сигнализация о каждой ошибке

Page 62: Илья Кудинов

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

● Смоук-тесты при каждом обновлении релизной ветки

● Постоянно гоняющиеся юнит- и селениум-тесты

● Сигнализация о каждой ошибке

● Возможность быстрой пересборки билда при ошибке

Page 63: Илья Кудинов

Ручное тестирование релиза

Page 64: Илья Кудинов

Что-то сломалось!(на стейджинге, не на продкшне, конечно же!)

Page 65: Илья Кудинов

Локализуем проблему

Page 66: Илья Кудинов

Локализуем проблему

● Смотрим логи тестов

Page 67: Илья Кудинов

Локализуем проблему

● Смотрим логи тестов● Запускаем там, где не

запускались

Page 68: Илья Кудинов

Локализуем проблему

● Смотрим логи тестов● Запускаем там, где не

запускались

● Находим тикет, вкотором всё сломалось

Page 69: Илья Кудинов

Локализуем проблему

● Смотрим логи тестов● Запускаем там, где не

запускались

● Находим тикет, вкотором всё сломалось

● Помогает не всегда —приходится искатьсамим :(

Page 70: Илья Кудинов

Устраняем проблему

● Если всё совсем плохо — откатываем тикет

Page 71: Илья Кудинов

Устраняем проблему

● Фиксим коммитом в ветку билда (?)

Page 72: Илья Кудинов

Устраняем проблему

● Делаем патч в билд!

Page 73: Илья Кудинов

Всё готово к релизу?

Page 74: Илья Кудинов

Всё готово к релизу?

Page 75: Илья Кудинов

Р Е Л И З !

Page 76: Илья Кудинов

Нет, на самом деле мы работаем дальше

Page 77: Илья Кудинов

Верификация на продакшне

Page 78: Илья Кудинов

Мониторинг!

Page 79: Илья Кудинов

Мониторинг

● RRDTool– Основные метрики

– Нагрузка

– Логи ошибок и дебаг-сообщений

Page 80: Илья Кудинов

Мониторинг● Splunk

– Динамика событий в реальном времени

– Графики ошибок и дебага

– Создание тикетов на ошибки прямо из интерфейса

Page 81: Илья Кудинов

Всегда есть куда стремиться!

Page 82: Илья Кудинов

Вопросы?

Кудинов Илья

vk.com/relzegfb.com/relzeg

Badoo Development

vk.com/badoocomfb.com/BadooMoscow

habrahabr.ru/company/badoo

Page 83: Илья Кудинов

Статьи на Хабре

● 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/