Upload
nikita-makarov
View
235
Download
2
Embed Size (px)
DESCRIPTION
How we manage selenium grid problems with microservices
Citation preview
Selenium Grid.OK Version
О себе
• В IT c 2006• В автоматизации
тестирования с 2007• Руковожу
автоматизацией с 2009@PapaMinos
http://test-failed.blogspot.com
Selenium
Selenium Grid
HUB
NODE1
NODE 3
NODE N
NODE 4
NODE 2
Что мы хотим от автотестов
НадежностьСкорость
Трудные места
Удобство
Окружения
Как укладываться в 15 минут
Масштабирование Grid
HUB
NODE1 NODE 2
HUB
NODE1 NODE 2 NODE 3 NODE 4
Скриншоты ПамятьТрафикИнформативность
Обычные команды Selenium
HUB
NODE1
NODE 3
NODE N
NODE 4
NODE 2
± 1 Кб ± 1 Кб
Скриншоты
HUB
NODE1
NODE 3
NODE N
NODE 4
NODE 2
300-700 Кб
1 Кб
Информативность
Правда жизни
Как оно должно быть
• Стоять внутри ноды • Хранить все внутри• Доступно снаружи • Просто в обращении
Микросервисы
• Микро(!) - всего несколько функций• Простой протокол для работы извне• Простая и понятная цель• Сервис(!) - может быть недоступен
https://github.com/egorzamaraev/sample-jetty-service
Сервис скриншотов
Создание скриншота
Транскодирование
Скорость: Скриншоты
• Быстрые (1,5-2х) и компактные (5-10х)• Скриншоты хранятся на всей ферме• Самоочистка по квоте• Нативный скриншот
+Агенты
HUB
NODE1 NODE 3 NODE 5 NODE N . . .
NODE 4NODE 2
A A A A A A
Надежность: Зависание нод
Расширим агента
A172.6.3.23:4947
/Screenshot/Killer
Решенные проблемы
Node Agent
/screenshot
/killer
/cache
/distr
/hosts
A
Как укладываться в 15 минут
Как выглядят тесты
BEFORE (30%) TEST(40%)
AFTER(30%)
tt Теста
Как должны выглядеть тесты
TEST1 TEST2 TEST3
t
Как бы это сделать…?
Статические данные
?
BEFORE TEST AFTER
Делегирование
Окружения
Колхозить if-ами
if (env==PROD){ …} else if (env==TEST){ …} else if (env==STAGING){ …} else if (env==DEV) { …} else { …}
Mnemonic
Key
Prod value
Test valueStage value
Dev value
Key - Value
KEY
Bot 1
Bot 2
Bot 3
Ботнеты
Ботнеты в природе
Ботнеты в природе
Взаимодействие
TEST
API
mnemonic.getMessage("key").getForCurrent();
Делегирование подготовки
•Регистрировать ботов•Удалять ботов•Контролировать состояние ботов
Storekeeper
Как это работает
TEST
API
sk.getBot()sk.deleteBot(bot)
Storekeeper: Результаты
• Ускорение тестов• Профит при увеличении числа ботов• Запас ботов • Локальный запуск• +1 сервис
Было
HUB
NODE1 NODE 2 NODE 3 NODE 4
Стало
HUB
NODE1 NODE 2 NODE 3 NODE 4
A A A A
Правила для микросервисов
• Простой• Без состояния (если возможно)• Здоровый и наблюдаемый• Отключаемый
Мысль
measure performance before and after each attempted optimization.
Joshua Bloch, Effective Java
Куда идти?
• Selenium-Grid-Extras• Grible• Курсы от 10gen по mongo
db (бесплатные)
• Мартин Фаулер о микросервисах
Цель. Элияху Голдратт
http://www.mongodb.org/
DropWizard - http://dropwizard.codahale.com/
https://developers.google.com/speed/webp/
http://www.eclipse.org/jetty/
http://www.quartz-scheduler.org/
Технологии
Спасибо!Никита Макаров Руководитель группы автоматизации тестирования,Одноклассники[email protected]