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

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

  • Upload
    sqalab

  • View
    1.668

  • Download
    0

Embed Size (px)

Citation preview

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

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

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

badoo

- > 300 млн. пользователей

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

badoo

- > 300 млн. пользователей- 46 языков

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

badoo

- > 300 млн. пользователей- 46 языков- 190 стран

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

badoo

- > 300 млн. пользователей- 46 языков- 190 стран

С технической точки зрения это:

- 3 000 000+ строк кода

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

badoo

- > 300 млн. пользователей- 46 языков- 190 стран

С технической точки зрения это:

- 3 000 000+ строк кода- 3 000+ серверов

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

badoo

- > 300 млн. пользователей- 46 языков- 190 стран

С технической точки зрения это:

- 3 000 000+ строк кода- 3 000+ серверов- 25+ демонов

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

badoo

- > 300 млн. пользователей- 46 языков- 190 стран

С технической точки зрения это:

- 3 000 000+ строк кода- 3 000+ серверов- 25+ демонов- 8500+ тестов демонов

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

Роль демонов в badoo

Что такое демон?

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

Роль демонов в badoo

Что такое демон?

бинарь

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

Роль демонов в badoo

Что такое демон?

бинарь

конфиг

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

Роль демонов в badoo

Что такое демон?

бинарь

конфиг

расширения

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

Роль демонов в badoo

Что такое демон?

бинарь

конфиг

расширения

снапшоты

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

Роль демонов в badoo

Форматы общения с демоном:

- текст

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

Роль демонов в badoo

Форматы общения с демоном:

- текст - protobuf

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

Роль демонов в badoo

Форматы общения с демоном:

- текст - protobuf- json

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

Роль демонов в badoo

Режимы работы демонов:

- multi-shards- multi-nodes

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

Роль демонов в badoo

multi-shards

PID-1

PID-2

<...>

PID-N

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

Роль демонов в badoo

multi-nodes

PID-(M+1)

PID-(M+2)

<...>

PID-1

PID-2

<...>

PID-MPID-N

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

Роль демонов в badoo

- Encounters

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

Роль демонов в badoo

- Encounters- Asearch

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

Роль демонов в badoo

- Encounters- Asearch- Bumpd

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

Роль демонов в badoo

- Encounters- Asearch- Bumpd- GeoBorder

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

Роль демонов в badoo

- Encounters- Asearch- Bumpd- GeoBorder- CT

111100011010010100101100000110

11100000000000000001

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

Роль демонов в badoo

- Encounters- Asearch- Bumpd- GeoBorder- CT- Trustd-Loader

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

Роль демонов в badoo

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

Роль демонов в badoo

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

Процесс разработки и тестирования

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

Процесс разработки и тестирования

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

Процесс разработки и тестирования

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

Процесс разработки и тестирования

OPEN

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

Процесс разработки и тестирования

OPEN IN PROGRESS

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

Процесс разработки и тестирования

OPEN IN PROGRESS

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

Процесс разработки и тестирования

OPEN IN PROGRESS ON REVIEW

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

Процесс разработки и тестирования

OPEN IN PROGRESS ON REVIEW

IN BRANCH QA

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

Процесс разработки и тестирования

OPEN IN PROGRESS ON REVIEW

IN BRANCH QA

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

Процесс разработки и тестирования

- Демона не тестировали- Только внешние проверки

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

Процесс разработки и тестирования

- Демона не тестировали- Только внешние проверки

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

Процесс разработки и тестирования

- black-box

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

Процесс разработки и тестирования

- black-box- конфигурационное тестирование

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

Процесс разработки и тестирования

- black-box- конфигурационное тестирование- интеграционное тестирование

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

Процесс разработки и тестирования

- black-box- конфигурационное тестирование- интеграционное тестирование- системное тестирование

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

Процесс разработки и тестирования

- black-box- конфигурационное тестирование- интеграционное тестирование- системное тестирование- фаззинг

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

Процесс разработки и тестирования

- Подготовка

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

Процесс разработки и тестирования

- Подготовка- Тест

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

Процесс разработки и тестирования

- Подготовка- Тест- Завершение

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

Процесс разработки и тестирования

OPEN IN PROGRESS ON REVIEW

IN BRANCH QA

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

Процесс разработки и тестирования

OPEN IN PROGRESS ON REVIEW

IN BRANCH QA

Regression Tests

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

Процесс разработки и тестирования

OPEN IN PROGRESS ON REVIEW

IN BRANCH QANew Tests Regression

Tests

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

Процесс разработки и тестирования

OPEN IN PROGRESS ON REVIEW

IN BRANCH QA

TO MERGE

New Tests Regression Tests

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

Процесс разработки и тестирования

OPEN IN PROGRESS ON REVIEW

IN BRANCH QA

IN BUILD TO MERGE

New Tests Regression Tests

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

Процесс разработки и тестирования

OPEN IN PROGRESS ON REVIEW

IN BRANCH QA

IN BUILD - OK IN BUILD TO MERGE

New Tests Regression Tests

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

Процесс разработки и тестирования

OPEN IN PROGRESS ON REVIEW

IN BRANCH QA

IN BUILD - OK IN BUILD TO MERGE

New Tests Regression Tests

ON PRODUCTION

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

Процесс разработки и тестирования

- Режимы- Настройки

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

Процесс разработки и тестирования

- Режимы- debug

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

Процесс разработки и тестирования

- Режимы- debug- docker

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

Процесс разработки и тестирования

- Режимы- debug- docker- valgrind- helgrind

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

Процесс разработки и тестирования

- Режимы- debug- docker- valgrind- helgrind- scripts

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

Процесс разработки и тестирования

- Режимы- debug- docker- valgrind- helgrind- scripts- showcmd

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

Процесс разработки и тестирования

- Режимы- debug- docker- valgrind- helgrind- scripts- showcmd- keep-daemon

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

Процесс разработки и тестирования

- Режимы- debug- docker- valgrind- helgrind- scripts- showcmd- keep-daemon- use-launched-daemon

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

Процесс разработки и тестирования

- Настройки- host- port

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

Процесс разработки и тестирования

- Настройки- host- port- system user

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

Процесс разработки и тестирования

- Настройки- host- port- system user- paths (bin, conf, proto/so, etc.)

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

Docker

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

Docker. Изолированность

1 машина для тестирования демонов

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

Docker. Изолированность

1 машина для тестирования демонов

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

Docker. Изолированность

1 машина для тестирования демонов

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

Docker. Изолированность

1 машина для тестирования демонов

много демонов

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

Docker. Изолированность

пример лога

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

Docker. Изолированность

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

Docker. Изолированность

$ docker port <container_name> <internal_port>

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

Docker. Интеграционное тестирование111100011010010100101100000110

11100000000000000001

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

Utils. Logger

- действия до запуска демона

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

Utils. Logger

- действия до запуска демона- действия после остановки демона

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

Utils. Logger

- действия до запуска демона- действия после остановки демона

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

Utils. Logger

- действия до запуска демона- действия после остановки демона

чт слчлс

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

Utils. Logger

- действия до запуска демона- действия после остановки демона

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

Utils. Logger

- Логирование исполняемых команд

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

Utils. Logger

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

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

Utils. Logger

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

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

Utils. Scripts

пример скрипта

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

Utils. Scripts

- php script.php- Данные, что и при фейле- Артефакты в ТС

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

Utils. Cleaners

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

Utils. Cleaners

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

Utils. Cleanersотслеживаются брошенные

демона

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

Utils. Cleanersотслеживаются брошенные

демона

отслеживаются брошенные контейнеры

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

Utils. Cleanersотслеживаются брошенные

демона

отслеживаются брошенные контейнеры

удаляются старые рабочие папки

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

Utils. Cleanersотслеживаются брошенные

демона

отслеживаются брошенные контейнеры

удаляются старые рабочие папки

чистится БД

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

Utils. Failures stats

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

Utils. Failures stats

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

Utils. Documentation

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

Utils. Documentation

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

Резюмируя

- Обнаруживать проблему на самых ранних этапах

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

Резюмируя

- Обнаруживать проблему на самых ранних этапах- Полноценный цикл CI

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

Резюмируя

- Обнаруживать проблему на самых ранних этапах- Полноценный цикл CI- Гибкий фреймворк и утилиты

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

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

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

Антон Волков

[email protected]

Badoo Development

tech.badoo.com

habrahabr.ru/company/badoo/

bit.ly/2058FhM

QAApi