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
Скорость
6
15	
  минут
Еще	
  про	
  графики
Как укладываться в 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
Расширим агента
A
172.6.3.23:4947
/Screenshot
/Killer
22
Решенные проблемы
Node	
  Agent
/screenshot
/killer
/cache
/distr
/hosts
A
23
Как укладываться в 15 минут
24
Как выглядят тесты
BEFORE	
  
(30%)
TEST	
  
(40%)
AFTER	
  
(30%)
t
t	
  Теста
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
Спасибо!
Никита Макаров 

Руководитель группы автоматизации тестирования,
Одноклассники
nikita.makarov@odnoklassniki.ru
!
!
46
@PapaMinos
http://test-failed.blogspot.com
И, да…
есть	
  такая	
  работа	
  –	
  сидеть	
  в	
  «Одноклассниках»	
  
!
http://v.ok.ru
647

CodeFest 2014. Макаров Н. — Selenium Grid. OK Version