MyWackoSite : Публикации/2010/ATCC/NTI

Разработка панели управления для запуска автоматизированных тестовых сценариев

Н.О. Желяков, Т.А. Золотухин
Научный руководитель: к.ф.-м.н., С.А. Козлов
Новосибирский государственный университет,
г. Новосибирск, nzhelyakov@gmail.com

Статья посвящена вопросам автоматизации тестирования. Авторы описывают собственный подход, объединяющий две современные практики тестирования и разработки программного обеспечения: функциональное тестирование и непрерывную интеграцию (continuous integration).
Представим, что есть сложный программный продукт. Пользователи могут взаимодействовать с ним через web-интерфейс. Возникает задача автоматизации тестирования интерфейса пользователями с различными ролями при различных конфигурациях продукта.
Помочь в решении данной задачи может программный продукт, обладающий удобным графическим интерфейсом и позволяющий автоматизировать запуск тестовых сценариев. Продукт должен:
1. Скачивать наборы тестов из удалённого хранилища
2. Позволять пользователю составлять тестовые сценарии из наборов тестов и задавать различные параметры
3. Запускать на виртуальных машинах Selenium RC[1]
4. Исполнять тестовые сценарии
5. Собирать результаты выполнения тестов и отображать статистику по ним
6. Хранить шаблоны сценариев, которые позволяют выбирать часто используемые тесты и параметры
В качестве основы было решено использовать сервер Hudson[2], который де-факто является стандартом реализации непрерывной интеграции (continuous integration). Он довольно легко расширяем и частично реализует нужный функционал. Hudson позволяет:
1. Скачивать наборы тестов из репозиториев
2. Запускать тестовые сценарии
3. Задавать различные параметры
4. Собирать статистику по выполненным тестам
Таким образом, необходимо было лишь дополнить Hudson необходимым и отсутствующим функционалом. Решено было сделать это в виде отдельных плагинов.
Первый плагин позволяет получить структуру директории, в которой находятся тесты, и отобразить эту структуру в web-интерфейсе в виде иерархического дерева. Таким образом, пользователь получает возможность использовать удобный графический интерфейс для создания тестовых сценариев и выбирать тесты простыми кликами по их именам.
Второй разработанный авторами плагин позволяет использовать шаблоны тестовых сценариев. Тестовые сценарии часто создаются из одних и тех же тестов с одинаковым набором параметров. Для того чтобы сделать процедуру выбора более удобной, была реализована возможность сохранять стандартные параметры в виде шаблона, который в дальнейшем можно использовать в процессе запуска тестов.
Для выполнения тестов необходим запущенный Selenium RC. Для работы с ним авторы создали третий плагин и два приложения. Одно из них называется Remote Agent. Это приложение устанавливается на виртуальную машину. Именно оно запускает Selenium RC и позволяет осуществлять мониторинг его состояния. Сам Remote Agent запускается автоматически при открытии RDP сессии.
Используя плагин, пользователь может задать атрибуты, которые характеризуют виртуальную машину, на которой будет запущен Selenium RC. Например, установленный на удалённой машине браузер. Если пользователь введёт iexplore, то Selenium RC будет запущен на машине, где есть Internet Explorer. Пользователю также необходимо задать ip адрес и порт машины, где уже запущен Selenium Manager.
Selenium Manager – приложение, разработанное авторами. Оно имеет список всех доступных виртуальных машин вместе с их атрибутами. Когда Manager получает запрос от плагина, он находит машину, удовлетворяющую всем атрибутам, находящимся в запросе. После этого Manager открывает RDP соединение к выбранной машине.
Таким образом, Hudson и разработанный авторами набор плагинов позволяют существенно ускорить процесс тестирования, а также снизить трудозатраты сотрудников отдела контроля качества. Стоит отметить, что данная разработка принята в тестовую эксплуатацию в отдел контроля качества компании Parallels.
В настоящее время идёт процесс оптимизации и усовершенствования различных компонент. Авторы планируют выложить разработанные плагины в свободный доступ и опубликовать их исходный код.

Литература.
1. О продукте Selenium [Электронный ресурс] // Веб-узел сообщества продукта Selenium. – Режим доступа: http://seleniumhq.org/.
2. О продукте Hudson [Электронный ресурс] // Веб-узел сообщества сервера Hudson. – Режим доступа: http://hudson-ci.org/.