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

47
Selenium Grid. OK Version 1
  • date post

    20-Oct-2014
  • Category

    Internet

  • view

    677
  • download

    2

description

 

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

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

Selenium Grid. OK Version

�1

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

О себе

• В IT c 2006 • В автоматизации тестирования с 2007 • Руковожу автоматизацией с 2009 !

!

62

@PapaMinos

http://test-failed.blogspot.com

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

Selenium

�3

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

Selenium Grid

HUB

NODE1

NODE  3

NODE  N

NODE  4

NODE  2

�4

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

Что мы хотим от автотестов

НадежностьСкорость

Трудные  места

Удобство

Окружения

�5

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

Скорость

�6

15  минут

Еще  про  графики

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

Как укладываться в 15 минут

�7

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

Масштабирование Grid

HUB

NODE1 NODE  2

HUB

NODE1 NODE  2 NODE  3 NODE  4

�8

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

Скриншоты Память  Трафик  Информативность

�9

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

Обычные команды Selenium

HUB

NODE1

NODE  3

NODE  N

NODE  4

NODE  2

±  1  Кб ±  1  Кб

�10

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

Скриншоты

HUB

NODE1

NODE  3

NODE  N

NODE  4

NODE  2

300-­‐700  Кб

1  Кб

�11

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

Информативность

�12

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

Правда жизни

�13

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

Как оно должно быть

• Стоять внутри ноды • Хранить все внутри • Доступно снаружи • Просто в обращении

�14

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

Микросервисы

• Микро(!) - всего несколько функций

• Простой протокол для работы извне

• Простая и понятная цель • Сервис(!) - может быть недоступен

�15

https://github.com/egorzamaraev/sample-­‐jetty-­‐service

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

Сервис скриншотов

�16

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

Создание скриншота

�17

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

Транскодирование

�18

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

Скорость: Скриншоты

• Быстрые (1,5-2х) и компактные (5-10х) • Скриншоты хранятся на всей ферме • Самоочистка по квоте • Нативный скриншот

�19

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

+Агенты

HUB

NODE1 NODE  3 NODE  5 NODE  N    .  .  .      

NODE  4NODE  2

A A A A A A

�20

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

Надежность: Зависание нод

�21

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

Расширим агента

A172.6.3.23:4947

/Screenshot/Killer

�22

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

Решенные проблемы

Node  Agent

/screenshot

/killer

/cache

/distr

/hosts

A

�23

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

Как укладываться в 15 минут

�24

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

Как выглядят тесты

BEFORE  (30%)

TEST  (40%)

AFTER  (30%)

tt  Теста

�25

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

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

TEST1 TEST2 TEST3

t

�26

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

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

Статические  данные

?

BEFORE TEST AFTER

Делегирование

�27

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

Окружения

628

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

Колхозить if-ами

�29

if (env==PROD){ … } else if (env==TEST){ … } else if (env==STAGING){ … } else if (env==DEV) { … } else { … }

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

�30

Mnemonic

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

Key

Prod  value

Test  value  Stage  value

Dev  value

�31

Key - Value

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

KEY

Bot  1

Bot  2

Bot  3

Ботнеты

�32

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

Ботнеты в природе

�33

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

Ботнеты в природе

�34

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

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

TEST

API

mnemonic.getMessage("key").getForCurrent();

�35

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

�36

Делегирование подготовки

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

�37

Storekeeper

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

Как это работает

TEST

API

sk.getBot()sk.deleteBot(bot)

�38

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

Storekeeper: Результаты

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

�39

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

Было

HUB

NODE1 NODE  2 NODE  3 NODE  4

�40

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

Стало

HUB

NODE1 NODE  2 NODE  3 NODE  4

A A A A

�41

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

Правила для микросервисов

• Простой • Без состояния (если возможно) • Здоровый и наблюдаемый • Отключаемый

�42

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

Мысль

�43

measure performance before and after each attempted optimization. Joshua Bloch, Effective Java

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

Куда идти?

• Selenium-Grid-Extras • Grible • Курсы от 10gen по mongodb

(бесплатные) • Мартин Фаулер о микросервисах • Про то как правильно готовить

Selenium-тесты: • внутренности WebDriver • ускорение тестов

�44

Цель.  Элияху  Голдратт

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

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

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

Спасибо! Никита Макаров Руководитель группы автоматизации тестирования, Одноклассники [email protected] !

!

�46

@PapaMinos

http://test-failed.blogspot.com

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

И, да…

есть  такая  работа  –  сидеть  в  «Одноклассниках»  !

http://v.ok.ru

647