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

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

  • Upload
    sqalab

  • View
    10.022

  • Download
    4

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

– iOS

– Android

– Windows

– Mobile Web

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

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

1. Code Review

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

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

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

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

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

Code Review

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

Code Review

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

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

Code Review

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

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

Code Review

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

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

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

Code Review

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

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

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

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

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

Code Review

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

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

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

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

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

Code Review

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

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

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

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

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

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

Code Review

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

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

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

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

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

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

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

Code Review

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

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

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

Code Review

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

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

Code Review

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

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

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

Code Review

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

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

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

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

Code Review

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

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

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

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

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

Code Review

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

QAAPI

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

QAAPI

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

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

QAAPI

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

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

QAAPI

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

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

QAAPI

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

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

QAAPI

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

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

QAAPI

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

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

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

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

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

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

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

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

User Split

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

запускались

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Р Е Л И З !

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

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

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

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

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

Мониторинг!

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

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

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

– Нагрузка

– Логи ошибок

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

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

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

– Нагрузка

– Логи ошибок

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

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

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

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

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

Вопросы?

Кудинов Илья

vk.com/relzegfb.com/relzeg

Badoo Development

vk.com/badoocomfb.com/BadooMoscow

habrahabr.ru/company/badoo

Page 82: Развитие процессов тестирования в 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/