Основы автоматизации тестирования с помощью Selenium

Цель этой статьи – познакомить вас с инструментом Selenium, его преимуществами и функциональными возможностями, а также показать, как легко создать свой первый тест на языке C#.

Selenium – один из самых узнаваемых инструментов с открытым исходным кодом. Он обладает расширенным набором функций автоматизации тестирования веб-приложений, а благодаря универсальной архитектуре позволяет создавать скрипты на таких языках, как C#, Java, PHP, Ruby, Python или JavaScript.

Содержание

БЕСПЛАТНО СКАЧАТЬ КНИГИ в телеграм канале "Библиотека тестировщика"

Когда мы используем Selenium?

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

Говоря о преимуществах Selenium, стоит остановиться на двух направлениях: экономия времени и качество работы.

Экономия времени

Хотя автоматизированные тесты на начальном этапе разработки программного обеспечения требуют много работы, они улучшают и ускоряют процесс тестирования на последующих этапах. Огромным преимуществом автоматизированных тестов является то, что при правильном внедрении в процесс CI/CD можно назначать их запуск на определенный момент.

Качество работы

Автоматизированные тесты позволяют проводить регрессионные и повторные тесты (retests) за более короткий промежуток времени при условии высокого качества подготовленных скриптов. В большинстве случаев практически невозможно протестировать большой проект вручную при каждом изменении или обновлении системы без привлечения значительного числа тестировщиков. Здесь на помощь приходят скрипты тестирования – они позволяют быстро запустить тестирование производительности и регрессионные тесты.

Тестировщик, использующий автоматизированные тесты, способен предоставить большое количество тестовых данных при любых изменениях в программном обеспечении, системе или среде, а также автоматически обнаружить ошибки, которые могут быть пропущены при ручном тестировании из-за человеческого фактора или нехватки времени. Работа тестировщика особенно важна и становится значимой частью процесса разработки программного обеспечения при работе над сложными, масштабными проектами.

Библиотеки Selenium

Чтобы использовать Selenium в полной мере, необходимо знать о трех библиотеках, из которых он состоит: IDE, WebDriver и Grid.

Selenium IDE

Это плагин для Firefox или Chrome, который позволяет записывать и воссоздавать действия в браузере. Его преимуществами являются:

  • Дружественный пользовательский интерфейс
  • Интуитивно понятное управление без опыта работы с программным обеспечением
  • Возможность отладки

Однако и этот инструмент не идеален:

  • Его нельзя подключить к базе данных (например, импортировать файлы CSV или таблицы Excel)
  • Невозможно создать отчет по тестам

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

Установка Selenium IDE

Сначала нужно запустить браузер Mozilla Firefox и установить аддон.

Для удобства использования стоит установить дополнительный плагин Selenium IDE Button, который обеспечивает быстрый запуск Selenium IDE.

Последнее, что упростит работу, – это загрузка XPath Checker. Это интерактивный редактор выражений XPath, позволяющий легко локализовать элементы веб-приложения.

После установки аддонов необходимо перезапустить браузер и проверить Меню -> Аддоны, чтобы увидеть, появились ли они в списке. Если да, вернитесь в Меню  и выберите Настроить.  Затем перетащите значок кнопки Selenium IDE в верхнюю панель быстрого набора и нажмите клавишу Esc.

Selenium WebDriver

Это самый популярный инструмент из семейства Selenium, который предоставляет пользователю готовый API, позволяющий взаимодействовать с браузером. Как клиент интернет-браузера, используя протокол HTTP, он отправляет JSON-файл, созданный на одном из языков программирования. Затем код осуществляет навигацию по браузеру с помощью специального драйвера. Кроме того, WebDriver поддерживает тесты в мобильной версии.

Большое преимущество Selenium WebDriver в том, что при хорошо подобранных сценариях и автоматизированном обслуживании тестов он позволяет регулярно проверять в системе области с высоким риском появления дефектов. Регулярное повторное и регрессионное тестирование позволяет проверить корректность работы наиболее важных функций приложения. Кроме того, используя объектную модель Page Object Model, вы можете легко вносить исправления в тестовые сценарии.

Работа Selenium WebDriver показана на следующем изображении:

Работа Selenium WebDriver

После изучения теоретических основ пора переходить к практике.

Работа с Selenium WebDriver

Для начала работы с Selenium WebDriver необходимо установить IDE, то есть интегрированную среду программирования, например,  Rider или Visual Studio.

После установки вы можете начать работу над первым тестом с помощью Selenium WebDriver (мы будем работать в среде Rider).

1. Создание нового Unit Test -проекта с использованием языка C#.

Создание нового Unit Test -проекта с использованием языка C#

2. Загрузка NuGet-пакетов.

Загрузка NuGet пакетов

3. Создание класса FirstTestSelenium и определение полей _driver и _wait.

Создание класса FirstTestSelenium и определение полей _driver и _wait

4. Создание метода Setup(), который, благодаря атрибуту [SetUp], будет выполняться перед каждым тестом. В этом методе _driver и _wait должны быть инициализированы, а окно браузера максимизировано через Window.Maximize().

Создание метода Setup()

5. Создание тестового метода  с атрибутом [Test].

Внутри метода, дающего команду драйверу загрузить указанный сайт, нужно найти элемент и присвоить его переменной actualLogo.

Создание тестового метода  с [Test] атрибутом

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

6. Последний элемент теста – создание метода с атрибутом [TearDown], который будет запускаться после каждого выполненного теста, закрывать окно браузера и завершать сессию WebDriver.

Создание метода с атрибутом [TearDown]

7. Следующее изображение показывает, что тест был выполнен положительно.

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

8. Весь класс вместе с выполненным тестом выглядит так, как показано ниже (необходимо подчеркнуть, что это простейший тест, использующий Page Object Pattern):

Код в Selenium на C# полностью

Стоит отметить, что тестирование проводилось в браузере Chrome, и на оборудовании с системой Windows. Выполнение этого же теста в другой инфраструктуре становится намного проще благодаря использованию новейшей библиотеки Selenium – Grid.

Selenium Grid

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

Его работа иллюстрируется следующим изображением:

Selenium Grid
source: testelka.pl

Что такое хаб?

Хаб (hub) – это машина, которая является центральной точкой Grid. Она получает запросы и распределяет их между узлами (тестовыми машинами с различными комбинациями операционных систем, браузеров и других параметров). Когда хаб получает запрос на проведение теста, например, на Windows 10 и браузере Chrome, он ищет узел, который ссылается на данную спецификацию, и запускает тесты на этом узле.

Запуск архитектуры хаба

Хаб можно запустить двумя способами. Первый – это загрузка и запуск JAR-файла для каждого узла (что проблематично, если тесты требуют запуска на разных версиях браузеров). Второй – использование Docker, на котором мы можем установить Node для разных версий браузеров и использовать их одновременно в соответствии с определенными потребностями. Инфраструктура Docker также проще в управлении и менее обременительна для системы, чем запуск виртуальной машины.

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

Подведение итогов

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

Перевод статьи «Test automation with Selenium — basics and a first test».

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *