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

Post on 07-Jan-2017

10.025 Views

Category:

Education

4 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

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

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

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

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

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

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

● Web / сервер мобильных приложений● Демоны на С / C++ / Go● Мобильные флоу:

– 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!)● PHP7!● SoftMocks!● 2-3 минуты на все тесты!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

QAAPI

QAAPI

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

QAAPI

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

QAAPI

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

QAAPI

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

QAAPI

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

QAAPI

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

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

Улучшенное окружение и инструментарий

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

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

User Split

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

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

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

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

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

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

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

● Микростейджинг 'master + task'● Продакшн-окружение● Генерация переводов● NEW! Сбор скриншотов лексем для переводчиков● NEW! Автоматический запуск селениум-тестов

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

● Смоук-тесты при каждом обновлении релизной ветки● Постоянно гоняющиеся юнит- и селениум-тесты● Сигнализация о каждой ошибке

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

● Смоук-тесты при каждом обновлении релизной ветки● Постоянно гоняющиеся юнит- и селениум-тесты● Сигнализация о каждой ошибке● Возможность быстрой пересборки билда при ошибке

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

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

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

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

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

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

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

запускались

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

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

запускались● Находим тикет, в

котором всё сломалось

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

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

запускались● Находим тикет, в

котором всё сломалось● Помогает не всегда —

приходится искать самим :(

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

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

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

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

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

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

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

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

Р Е Л И З !

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

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

Мониторинг!

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

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

– Нагрузка

– Логи ошибок

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

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

– Нагрузка

– Логи ошибок

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

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

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

Вопросы?

Кудинов Илья

vk.com/relzegfb.com/relzeg

Badoo Development

vk.com/badoocomfb.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/

top related