Блог A1QA

О тестировании и качестве ПО

Автоматизация тестирования с помощью Selenoid

Многие команды инженеров по тестированию ПО при выполнении автоматизированных тестов отдают предпочтение такому инструменту, как Selenium Grid. Данное решение позволяет получить распределенную среду для параллельного выполнения большого количества тестов. Однако в процессе работы над проектом могут возникать определенные сложности. Их можно избежать, если вместо Selenium Grid использовать Selenoid.

Читайте дальше и вы узнаете об:

  • Особенностях работы с Selenium Grid.
  • Преимуществах и возможностях Selenoid.

Особенности работы с Selenium Grid

Selenium Grid – кластер, состоящий из нескольких Selenium-серверов, который позволяет создавать распределенную сеть для одновременного запуска тестов в нескольких браузерах. Выделяют центральный сервер (хаб) и узлы (ноды), которые к нему подключены.

Решение это популярное, но при работе с ним инженеры по автоматизации должны иметь в виду следующие особенности:

  • Длительный процесс развертывания

Для установки Selenium Grid понадобится:

  1. скачать и установить Java Development Kit;
  2. найти и скачать актуальную версию Selenium Server JAR;
  3. скачать необходимые версии веб-драйверов;
  4. распаковать веб-драйвера из архивов;
  5. установить необходимые версии браузеров;
  6. ввести ряд достаточно длинных команд в командную строку.
  • Сложные команды запуска

Вот примеры команд для старта сервера и узлов:

  • Снижение скорости работы

При использовании большого количества нод с разными браузерами хаб начинает работать достаточно медленно.

  • Вопрос совместимости

Важно следить, чтобы версии нод и браузеров были совместимы. Иначе может возникнуть конфликт.

Что можно предпринять?

Некоторые сложности, например, длительный процесс установки, могут быть преодолены.

Оптимизировать процесс поможет Docker – контейнерная платформа для быстрой сборки, отладки и развертывания приложений.

После создания образа можно переходить к созданию контейнера, который будет содержать все необходимое для работы приложения: библиотеки, системные инструменты, код и среду исполнения.

Существуют официальные образы Selenium с браузерами различных версий, однако даже при их использовании процесс запуска браузеров из контейнеров может оказаться не самым оптимальным, поскольку все особенности работы с Selenium Grid сохранятся.

Selenoid как альтернатива

Чем можно заменить Selenium Grid? Достойным вариантом является Selenoid – инструмент, с помощью которого можно быстрее и проще запускать браузеры в Docker-контейнерах. Процесс отличается от аналогичного в Selenium.

Для каждого запроса нового браузера Selenoid запускает новый контейнер и останавливает его после закрытия сессии.

В каждом контейнере находится определенная версия браузера, нужная версия веб-драйвера или Selenium-сервера и все необходимые зависимости (например, графические библиотеки). При этом благодаря изоляции процессов, можно запускать любое количество разных версий браузеров одновременно.

Selenoid написан на языке Golang и поддерживает все востребованные браузеры.

Selenoid vs. Selenium Grid

Цель использования данных решений одна – создание единой среды для параллельного запуска автотестов. При этом между решениями существует ряд важных отличий. В чем же преимущества Selenoid?

  • Изолированное окружение

В Selenoid каждый браузер запускается в отдельном контейнере, что позволяет полностью изолировать окружение браузера.

При использовании Selenium Grid существует вероятность, что настройки браузера могут быть изменены.

  • Масштабируемость

В процессе работы с Selenium Grid после создания большого количества нод тесты могут перестать выполняться.

В Selenoid окружение никак не влияет на качественное и непрерывное проведение тестов.

  • Потребление и утилизация ресурсов

Поскольку Selenium Server написан на Java, расход ресурсов при большой нагрузке значительно возрастает.

Selenoid позволяет поддерживать высокую нагрузку без дополнительных ресурсозатрат.

В среднем при десяти запущенных сессиях Selenium Server на Java потребляет 500 МБ оперативной памяти, в то время как Selenoid – всего 50-60 МБ.

Кроме того, Selenoid утилизирует все неактивные контейнеры после завершения сессии, тем самым постоянно поддерживая нужное количество свободной памяти.

  • Установка

В отличие от достаточно длительного процесса развертывания Selenium Grid, установка Selenoid не займет много времени. Главное – установить Docker и ввести лишь одну команду.

  • Одновременная поддержка нескольких версий одного браузера

Данная опция доступна лишь у Selenoid. Для этого нужно создать несколько контейнеров с необходимыми браузерами.

  • Фокус

Нужно помнить о том, что при работе с Selenium Grid могут появиться проблемы при запуске нескольких браузеров на одной машине.

Операционная система работает таким образом, что в фокусе может быть только одно окно. Поэтому окна могут начать конкурировать за фокус.

В Selenoid такой проблемы нет, поскольку каждый тест запускается в отдельном контейнере.

  • Пользовательский интерфейс и логи

В Selenium Grid возникают сложности при получении логов определенных браузерных сессий. В то время как Selenoid позволяет быстро получить доступ к имеющимся журналам.

Помимо этого, есть возможность интеграции с ELK стеком для более быстрого сбора и анализа текущих файлов регистрации.

Также Selenoid достаточно удобен в использовании и располагает информативным интерфейсом.

Дополнительные возможности Selenoid

Помимо вышеупомянутых преимуществ, Selenoid обладает рядом дополнительных функций, которые способствуют оптимизации работы.

  • Хранение данных в оперативной памяти

В Selenoid все временные файлы хранятся в Tmpfs.

Tmpfs – это временное файловое хранилище, которое позволяет хранить файлы в оперативной памяти. Доступ к ОЗУ, как известно, осуществляется намного быстрее, чем к файловой системе жесткого диска.

  • Различное разрешение экрана

Selenoid позволяет самостоятельно настраивать подходящее разрешение экрана для запущенного контейнера. Сделать это можно посредством выставления необходимых параметров в настройках компонента Browser Capabilities.

  • Отображение экрана браузера

В Selenoid во время исполнения тестов существует возможность подключиться к порту VNC в режиме реального времени, получить доступ к экрану нужного браузера и даже вмешаться в процесс исполнения автотеста.

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

Selenoid позволяет проводить видеозапись исполняемых тестов.

Активация записи в Selenoid на примере браузера Google Chrome происходит за счет выставления параметра true в соответствующую настройку компонента Browser Capabilities:

ChromeOptions options = new ChromeOptions();

options.setCapability(“enableVideo”,true);

Подводя итог

Инженеры по автоматизации отдают предпочтение вышеупомянутым решениям, поскольку они позволяют параллельно выполнять большое количество тестов.

Однако Selenoid демонстрирует очень высокий уровень гибкости в настройке среды исполнения. Стабильность данного решения, значительная экономия времени при его использовании и ряд дополнительных возможностей позволяет инженерам оптимизировать процесс и в сжатые сроки обеспечивать высокое качество программных продуктов.

А у вашей команды есть опыт работы c Selenoid?

Заказать консультацию по автоматизации тестирования специалистов A1QA можно здесь.

Поделиться статьей: