codefest 2014. Макаров Н. — selenium grid. ok version
Post on 20-Oct-2014
677 views
DESCRIPTION
TRANSCRIPT
Selenium Grid. OK Version
�1
О себе
• В IT c 2006 • В автоматизации тестирования с 2007 • Руковожу автоматизацией с 2009 !
!
62
@PapaMinos
http://test-failed.blogspot.com
Selenium
�3
Selenium Grid
HUB
NODE1
NODE 3
NODE N
NODE 4
NODE 2
�4
Что мы хотим от автотестов
НадежностьСкорость
Трудные места
Удобство
Окружения
�5
Как укладываться в 15 минут
�7
Масштабирование Grid
HUB
NODE1 NODE 2
HUB
NODE1 NODE 2 NODE 3 NODE 4
�8
Скриншоты Память Трафик Информативность
�9
Обычные команды Selenium
HUB
NODE1
NODE 3
NODE N
NODE 4
NODE 2
± 1 Кб ± 1 Кб
�10
Скриншоты
HUB
NODE1
NODE 3
NODE N
NODE 4
NODE 2
300-‐700 Кб
1 Кб
�11
Информативность
�12
Правда жизни
�13
Как оно должно быть
• Стоять внутри ноды • Хранить все внутри • Доступно снаружи • Просто в обращении
�14
Микросервисы
• Микро(!) - всего несколько функций
• Простой протокол для работы извне
• Простая и понятная цель • Сервис(!) - может быть недоступен
�15
https://github.com/egorzamaraev/sample-‐jetty-‐service
Сервис скриншотов
�16
Создание скриншота
�17
Транскодирование
�18
Скорость: Скриншоты
• Быстрые (1,5-2х) и компактные (5-10х) • Скриншоты хранятся на всей ферме • Самоочистка по квоте • Нативный скриншот
�19
+Агенты
HUB
NODE1 NODE 3 NODE 5 NODE N . . .
NODE 4NODE 2
A A A A A A
�20
Надежность: Зависание нод
�21
Расширим агента
A172.6.3.23:4947
/Screenshot/Killer
�22
Решенные проблемы
Node Agent
/screenshot
/killer
/cache
/distr
/hosts
A
�23
Как укладываться в 15 минут
�24
Как выглядят тесты
BEFORE (30%)
TEST (40%)
AFTER (30%)
tt Теста
�25
Как должны выглядеть тесты
TEST1 TEST2 TEST3
t
�26
Как бы это сделать…?
Статические данные
?
BEFORE TEST AFTER
Делегирование
�27
Окружения
628
Колхозить if-ами
�29
if (env==PROD){ … } else if (env==TEST){ … } else if (env==STAGING){ … } else if (env==DEV) { … } else { … }
�30
Mnemonic
Key
Prod value
Test value Stage value
Dev value
�31
Key - Value
KEY
Bot 1
Bot 2
Bot 3
Ботнеты
�32
Ботнеты в природе
�33
Ботнеты в природе
�34
Взаимодействие
TEST
API
mnemonic.getMessage("key").getForCurrent();
�35
�36
Делегирование подготовки
�37
Storekeeper
Как это работает
TEST
API
sk.getBot()sk.deleteBot(bot)
�38
Storekeeper: Результаты
• Ускорение тестов • Профит при увеличении числа ботов • Запас ботов • Локальный запуск
�39
Было
HUB
NODE1 NODE 2 NODE 3 NODE 4
�40
Стало
HUB
NODE1 NODE 2 NODE 3 NODE 4
A A A A
�41
Правила для микросервисов
• Простой • Без состояния (если возможно) • Здоровый и наблюдаемый • Отключаемый
�42
Мысль
�43
measure performance before and after each attempted optimization. Joshua Bloch, Effective Java
Куда идти?
• Selenium-Grid-Extras • Grible • Курсы от 10gen по mongodb
(бесплатные) • Мартин Фаулер о микросервисах • Про то как правильно готовить
Selenium-тесты: • внутренности WebDriver • ускорение тестов
�44
Цель. Элияху Голдратт
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/
Технологии
�45
Спасибо! Никита Макаров Руководитель группы автоматизации тестирования, Одноклассники [email protected] !
!
�46
@PapaMinos
http://test-failed.blogspot.com