Микро сервисы – Хирургическая
бригада автоматизации
тестирования с помощью Selenium
О себе
• Я тестировщик
• В тестировании около 6 лет
• Занимаюсь автоматизацией тестирования
в Одноклассниках
При проведении тестирования
Когда что-то автоматизируют
При автоматизации тестирования
При автоматизации тестирования
Инфрастуктура автотестирования
NODE1

NODE 2
HUB
NODE 3

NODE 4
NODE N
Скриншоты

Память
Трафик
Информативность
Память
Узкое место
Информативность
Что-то другое..
Может надо хранить
скриншоты там, где их снимали
…А в отчеты передавать только
ссылки
… и позаботиться, чтобы и на
нодах место не кончалось
Сервис скриншотов
Транскодирование
PNG

PNG
WebP
Что получилось
•
•
•
•
•

Скриншоты локальные
WebP
Самоочистка
Нативный скриншот
+1 сервис
Зависание нод
Node
Driver
Browser
Агент
172.6.3.23:4947

/Screenshot
/Killer
Что получилось
• Управление временем жизни браузера
• Возможность перезагружать ноды
• +1 хэндлер к агенту
Решенные проблемы
/screenshot

/killer

Node Agent
/cache
/distr
/hosts
Контент
Музыка

Фото
Видео
Local File Detector - принцип

HUB

NODE
Local File Detector - схема
NODE
HUB

NODE

NODE
Как это работает
Итог по инфраструктурным
проблемам
•
•
•
•

Дополнительные рычаги управления
Ускорение процесса общения с инфраструктурой
Решение инфраструктурных проблем
+2 сервиса
При автоматизации тестирования
Что мы хотим от автотестов

Скорость

Надежность

Окружения

Удобство

Трудные места
Стандартное расширение

NODE1

NODE 2

HUB

NODE1

NODE 2

NODE 3

HUB

NODE 4
Как выглядят тесты
t Теста

BEFORE

TEST

t

AFTER
Как должны выглядеть тесты
t

TEST1

TEST2

TEST3
Как бы это сделать…?
?

BEFORE
private static final

TEST

AFTER
Проблемы статических данных
Кэши
• Пользовательские
• Контентные
Окружения
• Production
• Stage
• Testing
• Dev

Другие факторы
• Время
• Устаревание
• ошибки
Мнемоник

Bot 1
KEY

Bot 2
Bot 3
Взаимодействие

API
TEST

mnemonic.getMessage("key").getForTest();
Что получилось
•
•
•

Фильтрация данных
Удобная работа с данными
+1 сервис и База Данных
•Регистрировать ботов
•Удалять ботов
•Контролировать состояние ботов
Как это работает

API
TEST
sk.getBot()
sk.deleteBot(bot)
Что получилось
•
•
•
•
•

Ускорение тестов
Профит при увеличении числа ботов
Запас ботов
Локальный запуск
+1 сервис
Что в итоге

Управляемость

Надежность
Удобство

Скорость

Возможности
Было
...
NODE1

NODE 2

NODE 3

NODE 4

NODE 5

HUB

NODE N
Стало
...
NODE1

NODE 2

NODE 3

NODE 4

NODE 5

HUB

NODE N
Все бесплатно!!!
http://www.eclipse.org/jetty/
DropWizard - http://dropwizard.codahale.com/
http://www.mongodb.org/
https://developers.google.com/speed/webp/
http://www.quartz-scheduler.org/
https://github.com/egorzamaraev/sample-jetty-service
Спасибо!!!

http://www.ok.ru/egorza
egor.zamaraev@odnoklassniki.ru

Micro services – surgical team in test automation with SeleniumSelenium microservices