Как мы приручили демона или процесс тестирования...

Preview:

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- Гибкий фреймворк и утилиты

- Быстрое добавление новых тестов- Легкое воспроизведение проблемы

Спасибо за внимание

Антон Волков

advolkov1@gmail.com

Badoo Development

tech.badoo.com

habrahabr.ru/company/badoo/

bit.ly/2058FhM

QAApi

Recommended