Selenoid - сотни параллельных UI-тестов легко и быстро - ДЕКАБРЬ 2017 Selenoid - совместимый с Selenium легкий сервер для запуска изолированных ...

Страница создана Савелий Фетисов
 
ПРОДОЛЖИТЬ ЧТЕНИЕ
Selenoid - сотни параллельных UI-тестов легко и быстро - ДЕКАБРЬ 2017 Selenoid - совместимый с Selenium легкий сервер для запуска изолированных ...
Selenoid –
сотни параллельных
UI-тестов легко и быстро
Selenoid – совместимый с Selenium легкий сервер
для запуска изолированных браузеров в Docker контейнерах

ДЕКАБРЬ 2017

  PUBLIC                                                   1
Selenoid - сотни параллельных UI-тестов легко и быстро - ДЕКАБРЬ 2017 Selenoid - совместимый с Selenium легкий сервер для запуска изолированных ...
Обо мне

• В 2007 сисадмином-джуниором сделал «вайтивайти»

• Занимался вопросами настройки ИТ-инфраструктуры
  для нужд СМБ, организацией процесса техподдержки,
  исполнял роль ИТ-менеджера в нескольких средних
  проектах.

• Все время развивался в сторону автоматизации рутины
  и изучения программирования.

• С 2015 года занимаюсь автоматизированным
  тестированием.

    PUBLIC                                              2
Selenoid - сотни параллельных UI-тестов легко и быстро - ДЕКАБРЬ 2017 Selenoid - совместимый с Selenium легкий сервер для запуска изолированных ...
Содержание

•Выгода от применения Selenoid
 на конкретном проекте автоматизации
•Детальное сравнение Selenoid и Selenium Server
•Почему контейнеры, а не виртуальные машины?
•Демо

   PUBLIC                                         3
Selenoid - сотни параллельных UI-тестов легко и быстро - ДЕКАБРЬ 2017 Selenoid - совместимый с Selenium легкий сервер для запуска изолированных ...
О проекте

•Сложный UI
•Приложение в постоянной разработке
•Окружение не однородное
•> 1000 тестов, многие длительные 
•> 30 автотестировщиков

    PUBLIC                            4
Selenoid - сотни параллельных UI-тестов легко и быстро - ДЕКАБРЬ 2017 Selenoid - совместимый с Selenium легкий сервер для запуска изолированных ...
О проекте – как было

    PUBLIC             5
Selenoid - сотни параллельных UI-тестов легко и быстро - ДЕКАБРЬ 2017 Selenoid - совместимый с Selenium легкий сервер для запуска изолированных ...
О проекте – недостатки

                                        Регрессионные
                                        тесты
                                        однопоточные    Трудоемкое
                                                        управление
                                                        средой запуска

             Запуск тестов в разном
             и нестабильном окружении      Плохая       Профилактическая
                                           утилизация   перезагрузка нод
                                           ресурсов

    PUBLIC                                                                 6
Selenoid - сотни параллельных UI-тестов легко и быстро - ДЕКАБРЬ 2017 Selenoid - совместимый с Selenium легкий сервер для запуска изолированных ...
Selenium Server – варианты обхода недостатков

 •Selenium Server + контейнеры с браузерами
 •Библиотека перебирающая разные Selenium Hub
 •Selenium Grid на Apache Mesos
 •Jsonwire Grid
 •...

    PUBLIC                                      7
Selenoid - сотни параллельных UI-тестов легко и быстро - ДЕКАБРЬ 2017 Selenoid - совместимый с Selenium легкий сервер для запуска изолированных ...
О проекте – легкий переход на Selenoid

    PUBLIC                               8
Selenoid - сотни параллельных UI-тестов легко и быстро - ДЕКАБРЬ 2017 Selenoid - совместимый с Selenium легкий сервер для запуска изолированных ...
О проекте – как было

    PUBLIC             9
Selenoid - сотни параллельных UI-тестов легко и быстро - ДЕКАБРЬ 2017 Selenoid - совместимый с Selenium легкий сервер для запуска изолированных ...
О проекте – как стало

    PUBLIC              10
О проекте – сравнение до и после

                                До                   После
 Тесты для дебага          в разном
                                        в одинаковом окружении
 и регрессии запускаются   окружении
                           плохая       экономия ресурсов
 Потребление ресурсов
                           утилизация   ~ 50% CPU, ~80% RAM, ~ 90% HDD

 Кол-во потоков
                           1-2 потока   До 20-30 потоков
 регрессионных тестов
 Стабильность и            нестабильное очень стабильно
 управление окружением     окружение    и легко управляемо
 Профилактическая                       не нужна, даже для добавления
                           нужна
 перезагрузка ноды                      новых версий браузеров

     PUBLIC                                                              11
О проекте – потребление ресурсов

                               До                  После
 30 ВМ для дебага     30 X 2 = 60 cpu
 в облаке             30 X 4 = 120 GB RAM
                      4 X 4 = 16 cpu
 4 ВМ для регрессии
                      4 X 4 = 16 GB RAM
 ВМ для Selenoid и                          4 cpu
 Selenoid UI                                2 GB RAM
                                            32 cpu
 ВМ докер хост
                                            32 GB RAM
                            76 cpu                 36 cpu
 Итого
                          136 GB RAM             34 GB RAM

     PUBLIC                                                  12
Детальное сравнение

  Selenoid VS Selenium Server

    PUBLIC                      13
Selenoid – основные преимущества над Selenium Server

•Быстрая установка
•Удобная работа с браузерами
•Легкое масштабирование
•Удобный UI и логирование
•Очереди и гибкие лимиты

    PUBLIC                                             14
Selenium Server Установка

•Ручная установка:
  • Java
  • Браузеры нужных версий
•Загрузка и распаковка
   • Selenium JAR
   • web-driver binaries
•Запустить это все ;)

    PUBLIC                   15
Selenoid Установка

• Установить Docker

• Загрузить Config Manager (12 Мбайт):
  $ wget –O cm
  https://github.com/aerokube/cm/releases/download/1.2.3/cm_linux_amd64
  $ chmod +x cm

• Запустить Selenoid
 $   ./cm selenoid start –-vnc
• Selenoid работает на стандартном порту Selenium – 4444

      PUBLIC                                                              16
Selenoid – основные преимущества над Selenium Server

✓Быстрая установка

    PUBLIC                                             17
Selenium Server Обслуживание браузеров

•Обновление версий браузеров трудозатратно 

•Соответствие версий WebDriver и браузеров   

•Один и тот же браузер с разными версиями?   

    PUBLIC                                         18
Selenoid Обслуживание браузеров

• Готовые образы контейнеров
  c преднастроенными браузерами

• Каждый браузер в изолированном
  контейнере

• Для каждого теста чистый браузер,
  как будто только что инсталлированный в ОС

    PUBLIC                                     19
Selenoid Конфигурация браузеров

• Автоматическая генерация
  config.json с помощью CM
 ./cm selenoid start –vnc
• Пример фрагмента config.json

    PUBLIC                        20
Selenoid – основные преимущества над Selenium Server

✓Быстрая установка
✓ Удобная работа с браузерами

    PUBLIC                                             21
Selenium Масштабирование браузеров на уровне хоста

•Selenium Grid –
 проблема ховера

•Стабильно работающих
 браузеров < 10-20

    PUBLIC                                           22
Selenoid Масштабирование браузеров на уровне хоста

•Потребление ресурсов
 0,5 – 1 ядро CPU
 200 – 500 Мбайт RAM

•tmpfs – файл подкачки в RAM

•Таймаут неактивности
 автоматически освобождает ресурсы

    PUBLIC                                           23
Масштабирование на уровне балансировщика Selenium

• Утечки памяти в режиме работы HUB

• Проблемы с Jetty (Java-based HTTP server )
 https://stackoverflow.com/questions/tagged/jetty
 5700 вопросов на Stackoverflow

• Встроенная UI консоль нагружает HUB

• Логи перемешиваются

     PUBLIC                                         24
Selenoid Масштабирование на уровне балансировщика

Пример реального масштабирования
Selenium грида работающего на Selenoid:

• 5000 + параллельных браузеров

• 5 датацентров

• Linux (desktop)

• Windows (IE, Edge)

    PUBLIC                                          25
Selenoid – это Selenium на Golang

 Быстрый и легкий сервер:

 •Написан полностью на Golang

 •7 Мбайт исполняемый файл

 •60 Мбайт потребление RAM

    PUBLIC                          26
Selenoid – основные преимущества над Selenium Server

✓Быстрая установка
✓ Удобная работа с браузерами
✓ Легкое масштабирование

    PUBLIC                                             27
Selenium Grid Консоль

•Неудобная
 и малоинформативная
 консоль

•Нельзя посмотреть
 «живые» логи
 отдельной сессии

    PUBLIC              28
Selenoid Консоль

    PUBLIC         29
Selenoid Консоль – статистика загрузки

    PUBLIC                               30
Консоль Selenoid – подключение по VNC в контейнер

    PUBLIC                                          31
Консоль Selenoid – логи отдельных браузеров

    PUBLIC                                    32
Selenoid – основные преимущества над Selenium Server

✓Быстрая установка
✓ Удобная работа с браузерами
✓ Легкое масштабирование
✓ Удобный UI и логирование

    PUBLIC                                             33
Selenoid – гибкий контроль потребления ресурсов

 •Ограничение количества сессий на хост

 •Очереди

 •Лимит на CPUs отдельного контейнера

 •Лимит на RAM отдельного контейнера

    PUBLIC                                        34
Selenoid – основные преимущества над Selenium Server

✓Быстрая установка
✓ Удобная работа с браузерами
✓ Легкое масштабирование
✓ Удобный UI и логирование
✓ Очереди и гибкие лимиты

    PUBLIC                                             35
Selenoid – дополнительные преимущества

• Изменение конфигурации Selenoid на «горячую»

• Совместимость с другими образами Selenium контейнеров

• Поддержка централизованного логирования

• Статистика нагрузки отдается как JSON

• Установка разрешения экрана прямо через код тестов

• Видеозапись тестов - NEW

    PUBLIC                                                36
Почему Docker?

    PUBLIC       37
Контейнер vs VM

    PUBLIC        38
Преимущества Docker для запуска UI-тестов

•Linux покрывает 80% всех браузеров

•Нет потери фокуса при запуске параллельных тестов

•Чистая ОС у автотестировщика и разработчика

•Любое одновременное сочетание браузеров

•Быстрый старт браузеров

•Экономия вычислительных ресурсов хоста
    PUBLIC                                           39
Selenoid и IE

    PUBLIC      40
Selenoid и IE

   • Запустить бинарник Selenoid вместо Selenium
       C:\selenoid.exe -conf C:\browsers.json -disable-docker
   • Решить проблему с потерей ховера (фокуса):
       Use headless_ie_selenium.exe
   • Задать Selenium capabilities, которые улучшат устойчивость работы IE

   Подробнее в статье – «Selenium on Windows: revisited»
   https://medium.com/@aandryashin/selenium-on-windows-revisited-1ab8d51ccc06

      PUBLIC                                                                    41
Демо

•Установка Selenoid

•Запуск параллельных автотестов

•Подключение по VNC внутрь контейнеров с браузером

•Просмотр «живых» логов по отдельному браузеру

•Видеозапись тестов - NEW

   PUBLIC                                            42
Установка Selenoid

 •Скачивание Configuration manager
 •Запуск Selenoid
 •Запуск Selenoid-UI

    PUBLIC                           43
PUBLIC   44
Запуск тестов и просмотр

•Запуск параллельных автотестов
•Подключение по VNC внутрь контейнеров
 Просмотр логов по сессиям
•Видеозапись тестов

    PUBLIC                               45
PUBLIC   46
Резюме

•> 5 автоматизаторов на проекте – внедряйте Selenoid ☺

•Простая миграция

•Экономит время, ресурсы и нервы

•Бесплатный + низкая стоимость владения

•Постоянное развитие и хорошая техподдержка

   PUBLIC                                                47
Контакты разработчиков

https://github.com/aerokube

самая быстрая техподдержка в телеграмм-канале:

https://t.me/aerokube

Актуальная документация:
                                                 Aerokube
• http://aerokube.com/selenoid/latest/

• http://aerokube.com/selenoid-ui/latest/

• http://aerokube.com/ggr/latest/
    PUBLIC                                                  48
Спасибо за внимание!

senin24@gmail.com
@senin24 – facebook, telegram

  PUBLIC                        49
IE или Edge в контейнере

    PUBLIC                 50
Docker in Windows 

Два варианта:
1. Linux Docker in
   Linux-VM on Hyper-V
2. Native Windows Docker
   (only in Windows 2016)

“Reason of large container
size is because of DLLs which
are interlinked processes
calling each other”
http://collabnix.com/archives
/1965

       PUBLIC                   51
Вы также можете почитать