47
Selenium Grid. OK Version

Selenium grid. OK version

Embed Size (px)

DESCRIPTION

How we manage selenium grid problems with microservices

Citation preview

Page 1: Selenium grid. OK version

Selenium Grid.OK Version

Page 2: Selenium grid. OK version

О себе

• В IT c 2006• В автоматизации

тестирования с 2007• Руковожу

автоматизацией с 2009@PapaMinos

http://test-failed.blogspot.com

Page 3: Selenium grid. OK version

Selenium

Page 4: Selenium grid. OK version

Selenium Grid

HUB

NODE1

NODE 3

NODE N

NODE 4

NODE 2

Page 5: Selenium grid. OK version

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

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

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

Удобство

Окружения

Page 6: Selenium grid. OK version

Скорость

15 минут

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

Page 7: Selenium grid. OK version

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

Page 8: Selenium grid. OK version

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

HUB

NODE1 NODE 2

HUB

NODE1 NODE 2 NODE 3 NODE 4

Page 9: Selenium grid. OK version

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

Page 10: Selenium grid. OK version

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

HUB

NODE1

NODE 3

NODE N

NODE 4

NODE 2

± 1 Кб ± 1 Кб

Page 11: Selenium grid. OK version

Скриншоты

HUB

NODE1

NODE 3

NODE N

NODE 4

NODE 2

300-700 Кб

1 Кб

Page 12: Selenium grid. OK version

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

Page 13: Selenium grid. OK version

Правда жизни

Page 14: Selenium grid. OK version

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

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

Page 15: Selenium grid. OK version

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

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

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

Page 16: Selenium grid. OK version

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

Page 17: Selenium grid. OK version

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

Page 18: Selenium grid. OK version

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

Page 19: Selenium grid. OK version

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

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

Page 20: Selenium grid. OK version

+Агенты

HUB

NODE1 NODE 3 NODE 5 NODE N . . .

NODE 4NODE 2

A A A A A A

Page 21: Selenium grid. OK version

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

Page 22: Selenium grid. OK version

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

A172.6.3.23:4947

/Screenshot/Killer

Page 23: Selenium grid. OK version

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

Node Agent

/screenshot

/killer

/cache

/distr

/hosts

A

Page 24: Selenium grid. OK version

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

Page 25: Selenium grid. OK version

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

BEFORE (30%) TEST(40%)

AFTER(30%)

tt Теста

Page 26: Selenium grid. OK version

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

TEST1 TEST2 TEST3

t

Page 27: Selenium grid. OK version

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

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

?

BEFORE TEST AFTER

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

Page 28: Selenium grid. OK version

Окружения

Page 29: Selenium grid. OK version

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

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

Page 30: Selenium grid. OK version

Mnemonic

Page 31: Selenium grid. OK version

Key

Prod value

Test valueStage value

Dev value

Key - Value

Page 32: Selenium grid. OK version

KEY

Bot 1

Bot 2

Bot 3

Ботнеты

Page 33: Selenium grid. OK version

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

Page 34: Selenium grid. OK version

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

Page 35: Selenium grid. OK version

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

TEST

API

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

Page 36: Selenium grid. OK version

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

Page 37: Selenium grid. OK version

•Регистрировать ботов•Удалять ботов•Контролировать состояние ботов

Storekeeper

Page 38: Selenium grid. OK version

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

TEST

API

sk.getBot()sk.deleteBot(bot)

Page 39: Selenium grid. OK version

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

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

Page 40: Selenium grid. OK version

Было

HUB

NODE1 NODE 2 NODE 3 NODE 4

Page 41: Selenium grid. OK version

Стало

HUB

NODE1 NODE 2 NODE 3 NODE 4

A A A A

Page 42: Selenium grid. OK version

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

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

Page 43: Selenium grid. OK version

Мысль

measure performance before and after each attempted optimization.

Joshua Bloch, Effective Java

Page 44: Selenium grid. OK version

Куда идти?

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

db (бесплатные)

• Мартин Фаулер о микросервисах

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

Page 45: 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/

Технологии

Page 46: Selenium grid. OK version

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

Page 47: Selenium grid. OK version

И, да…

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

http://v.ok.ru