Upload
sqalab
View
1.672
Download
0
Embed Size (px)
Citation preview
Как мы приручили демона или процесс тестирования демонов в Badoo
badoo
- > 300 млн. пользователей
badoo
- > 300 млн. пользователей- 46 языков
badoo
- > 300 млн. пользователей- 46 языков- 190 стран
badoo
- > 300 млн. пользователей- 46 языков- 190 стран
С технической точки зрения это:
- 3 000 000+ строк кода
badoo
- > 300 млн. пользователей- 46 языков- 190 стран
С технической точки зрения это:
- 3 000 000+ строк кода- 3 000+ серверов
badoo
- > 300 млн. пользователей- 46 языков- 190 стран
С технической точки зрения это:
- 3 000 000+ строк кода- 3 000+ серверов- 25+ демонов
badoo
- > 300 млн. пользователей- 46 языков- 190 стран
С технической точки зрения это:
- 3 000 000+ строк кода- 3 000+ серверов- 25+ демонов- 8500+ тестов демонов
Роль демонов в badoo
Что такое демон?
Роль демонов в badoo
Что такое демон?
бинарь
Роль демонов в badoo
Что такое демон?
бинарь
конфиг
Роль демонов в badoo
Что такое демон?
бинарь
конфиг
расширения
Роль демонов в badoo
Что такое демон?
бинарь
конфиг
расширения
снапшоты
Роль демонов в badoo
Форматы общения с демоном:
- текст
Роль демонов в badoo
Форматы общения с демоном:
- текст - protobuf
Роль демонов в badoo
Форматы общения с демоном:
- текст - protobuf- json
Роль демонов в badoo
Режимы работы демонов:
- multi-shards- multi-nodes
Роль демонов в badoo
multi-shards
PID-1
PID-2
<...>
PID-N
Роль демонов в badoo
multi-nodes
PID-(M+1)
PID-(M+2)
<...>
PID-1
PID-2
<...>
PID-MPID-N
Роль демонов в badoo
- Encounters
Роль демонов в badoo
- Encounters- Asearch
Роль демонов в badoo
- Encounters- Asearch- Bumpd
Роль демонов в badoo
- Encounters- Asearch- Bumpd- GeoBorder
Роль демонов в badoo
- Encounters- Asearch- Bumpd- GeoBorder- CT
111100011010010100101100000110
11100000000000000001
Роль демонов в badoo
- Encounters- Asearch- Bumpd- GeoBorder- CT- Trustd-Loader
Роль демонов в badoo
Роль демонов в badoo
Процесс разработки и тестирования
Процесс разработки и тестирования
Процесс разработки и тестирования
Процесс разработки и тестирования
OPEN
Процесс разработки и тестирования
OPEN IN PROGRESS
Процесс разработки и тестирования
OPEN IN PROGRESS
Процесс разработки и тестирования
OPEN IN PROGRESS ON REVIEW
Процесс разработки и тестирования
OPEN IN PROGRESS ON REVIEW
IN BRANCH QA
Процесс разработки и тестирования
OPEN IN PROGRESS ON REVIEW
IN BRANCH QA
Процесс разработки и тестирования
- Демона не тестировали- Только внешние проверки
Процесс разработки и тестирования
- Демона не тестировали- Только внешние проверки
Процесс разработки и тестирования
- black-box
Процесс разработки и тестирования
- black-box- конфигурационное тестирование
Процесс разработки и тестирования
- black-box- конфигурационное тестирование- интеграционное тестирование
Процесс разработки и тестирования
- black-box- конфигурационное тестирование- интеграционное тестирование- системное тестирование
Процесс разработки и тестирования
- black-box- конфигурационное тестирование- интеграционное тестирование- системное тестирование- фаззинг
Процесс разработки и тестирования
- Подготовка
Процесс разработки и тестирования
- Подготовка- Тест
Процесс разработки и тестирования
- Подготовка- Тест- Завершение
Процесс разработки и тестирования
OPEN IN PROGRESS ON REVIEW
IN BRANCH QA
Процесс разработки и тестирования
OPEN IN PROGRESS ON REVIEW
IN BRANCH QA
Regression Tests
Процесс разработки и тестирования
OPEN IN PROGRESS ON REVIEW
IN BRANCH QANew Tests Regression
Tests
Процесс разработки и тестирования
OPEN IN PROGRESS ON REVIEW
IN BRANCH QA
TO MERGE
New Tests Regression Tests
Процесс разработки и тестирования
OPEN IN PROGRESS ON REVIEW
IN BRANCH QA
IN BUILD TO MERGE
New Tests Regression Tests
Процесс разработки и тестирования
OPEN IN PROGRESS ON REVIEW
IN BRANCH QA
IN BUILD - OK IN BUILD TO MERGE
New Tests Regression Tests
Процесс разработки и тестирования
OPEN IN PROGRESS ON REVIEW
IN BRANCH QA
IN BUILD - OK IN BUILD TO MERGE
New Tests Regression Tests
ON PRODUCTION
Процесс разработки и тестирования
- Режимы- Настройки
Процесс разработки и тестирования
- Режимы- debug
Процесс разработки и тестирования
- Режимы- debug- docker
Процесс разработки и тестирования
- Режимы- debug- docker- valgrind- helgrind
Процесс разработки и тестирования
- Режимы- debug- docker- valgrind- helgrind- scripts
Процесс разработки и тестирования
- Режимы- debug- docker- valgrind- helgrind- scripts- showcmd
Процесс разработки и тестирования
- Режимы- debug- docker- valgrind- helgrind- scripts- showcmd- keep-daemon
Процесс разработки и тестирования
- Режимы- debug- docker- valgrind- helgrind- scripts- showcmd- keep-daemon- use-launched-daemon
Процесс разработки и тестирования
- Настройки- host- port
Процесс разработки и тестирования
- Настройки- host- port- system user
Процесс разработки и тестирования
- Настройки- host- port- system user- paths (bin, conf, proto/so, etc.)
Docker
Docker. Изолированность
1 машина для тестирования демонов
Docker. Изолированность
1 машина для тестирования демонов
Docker. Изолированность
1 машина для тестирования демонов
Docker. Изолированность
1 машина для тестирования демонов
много демонов
Docker. Изолированность
пример лога
Docker. Изолированность
Docker. Изолированность
$ docker port <container_name> <internal_port>
Docker. Интеграционное тестирование111100011010010100101100000110
11100000000000000001
Utils. Logger
- действия до запуска демона
Utils. Logger
- действия до запуска демона- действия после остановки демона
Utils. Logger
- действия до запуска демона- действия после остановки демона
Utils. Logger
- действия до запуска демона- действия после остановки демона
чт слчлс
Utils. Logger
- действия до запуска демона- действия после остановки демона
Utils. Logger
- Логирование исполняемых команд
Utils. Logger
- Логирование исполняемых команд- Логирование взаимодействия с демоном
Utils. Logger
- Логирование исполняемых команд- Логирование взаимодействия с демоном- Логирование работы с БД
Utils. Scripts
пример скрипта
Utils. Scripts
- php script.php- Данные, что и при фейле- Артефакты в ТС
Utils. Cleaners
Utils. Cleaners
Utils. Cleanersотслеживаются брошенные
демона
Utils. Cleanersотслеживаются брошенные
демона
отслеживаются брошенные контейнеры
Utils. Cleanersотслеживаются брошенные
демона
отслеживаются брошенные контейнеры
удаляются старые рабочие папки
Utils. Cleanersотслеживаются брошенные
демона
отслеживаются брошенные контейнеры
удаляются старые рабочие папки
чистится БД
Utils. Failures stats
Utils. Failures stats
Utils. Documentation
Utils. Documentation
Резюмируя
- Обнаруживать проблему на самых ранних этапах
Резюмируя
- Обнаруживать проблему на самых ранних этапах- Полноценный цикл CI
Резюмируя
- Обнаруживать проблему на самых ранних этапах- Полноценный цикл CI- Гибкий фреймворк и утилиты
- Быстрое добавление новых тестов- Легкое воспроизведение проблемы
Спасибо за внимание
Антон Волков
Badoo Development
tech.badoo.com
habrahabr.ru/company/badoo/
bit.ly/2058FhM
QAApi