Представляю вашему вниманию мой доклад на конференции SQADays’2008.
Поскольку Selenium как инструмент для тестирования web-приложений показал себя вполне уверенно, встал вопрос о его оптимальном использовании. В частности об оптимизации процессов разработки тестов их исполнения. Для этих целей можно реализовать свой фреймворк (как например, поступили коллеги в Яндексе) для конкретных целей или же разработать более общее решение и выложить его в общий доступ (одно другому не мешает 🙂 ).
Цель данного доклада – познакомить присутствующих с несколькими удобными решениями.
1. Selenium IDE: возможности применения без использования тяжеловесных решений
Selenium, как инструмент для автоматизированного тестирования был бы менее эффективен и востребован, если бы не имел средств для быстрой записи/воспроизведения тестовых сценариев. Такой инструмент есть, и те кто уже имел дело с Selenium скорее всего уже знакомы с ним – это т.н. Selenium IDE:
Plugin к Firefox. Позволяет:
- Записывать тесты непосредственно из Firefox
- Воспроизводить загруженный тест в Firefox
- Воспроизводить загруженный тест в Firefox через SeleniumTestRunner
- Экспортировать записанный тест в один из поддерживаемых языков (java, ruby, php, c#, python…)
Достоинства
- Прост в использовании, не требует много ресурсов, не требует специальной подготовки сотрудников.
- Позволяет автоматизировать простые тестовые сценарии/операции
Недостатки
- Не позволяет использовать логические условия, циклы и т.п. что ограничивает его применимость линейными тестами
- Нет возможности запуска сьюитов, а не отдельных тестов
- Нет возможности параллельного запуска (только в разных экземплярах Firefox)
Конечно, как самостоятельный инструмент автоматизации, Selenium IDE весьма ограничен. Однако, если у вас есть много небольших или средних проектов, например на аутсорсинг, с фиксированным бюджетом, которые не предусматривают комплексную автоматизацию, данная IDE позволит автоматизировать рутинные операции по проверке функциональных и/или приемочных требований с минимальными затратами на внедрение и использование.
Как указывалось на предыдущей конференции QA специалистов, выбор фреймворка для проекта должен быть обусловлен прежде всего самим проектом: маленьким проектам – простые фреймворки, большим и сложным – соответственно сложные. Соответственно Selenium IDE может быть использован как простой фреймворк для автоматизации тестирования, в тех случаях, когда нет времени, денег и необходимости все усложнять.
2. Cubic Test: Eclipse + GEF + Selenium = визуальное управление тестами
Современные проприентарные приложения для автоматизации тестирования хороши, на мой взгляд, прежде всего тем, что предоставляют решение по организации и управлению автоматическими тестами. В случае с open source решениями ситуация хуже, так как тот же Selenium предоставляет скорее основу для формирования фреймворка для каждого конкретного случая, а не готовое решение. Cubic test предлагает вариант решения, сравнимый с мощными средами от ведущих производителей.
Его возможности:
- Интегрируется в EclipseIDEкак отдельная Perspective.
- Имеет инструменты Record/Playback.
- Использует визуальное моделирование и управление тестами (на базе Graphical Test Editor, GEF, также интегрируемого в Eclipse).
- Позволяет выносить общие сценарии в субтесты и подключать их по мере необходимости.
- Позволяет объединять тесты в наборы (сьюиты), также используя визуальное представление.
- Позволяет экспортировать графическое представление тестов в HTML Prototype или Watir (в том числе допускает написание собственных экспортеров).
Достоинства
- Оригинальная и простая для понимания концепция визуального управления тестами, основанная на распространенных и доступных opensourceинструментах.
- Прост в использовании и не требует специализированных навыков программирования на том или ином языке (java, ruby, c#…).
- Встроенные средства записи и воспроизведения.
Недостатки
- Отсутствие возможности параллельного воспроизведения тестовых наборов.
- Некорректная работа с кирилицей
Итого, Cubic test можно рассматривать как решение для проектов средней сложности, где есть возможность целенаправлено заниматься автоматизацией. При этом радует, что инструмент вполне доступен для использования junior тестировщиками. Проблема с кирилицей пока решается только ручной правкой тест-файлов (которые хранятся в текстовом формате).
3. Selenium grid: распределнная среда для тестирования web приложений – это просто.
Один из недостатков Selenium (он же его достоинство) – это запуск экземпляра браузера при выполнении тестов. Достоинства понятны – мы можем тестировать не просто web-приложение, а web-приложение в реальном окружении – в IE, Safari, Firefox на различных платформах. Недостатки тоже на поверхности – нам нужна графическая оболочка (windows, kde или gnome в linux и т.п.) для выполнения тестов и, что весьма немаловажно, само выполнение тестов в условиях приближанных к боевым занимает продолжительное время. Эту задачу берутся решить разработчики Selenium–grid. Они предоставляют решение, позволяющее с минимальными затратами получить распределненую и легко масштабируемую среду для параллельного выполнения большого числа тестов.
Итак, возможности:
- Самое главное – быстрое и простое распараллеливание выполнения тестов. В основе данной возможности лежит фреймворк TestNG (а не jUnit как у «классических» selenium-тестов).
- Возможность построения распределенной и масштабируемой среды для выполнения тестов.
Достоинства
- Многократное уменьшение времени выполнения при большом количестве тестовых сценариев.
- Возможность использования ранее написанных тестов (на java, ruby python…).
- Простой способ построения распределенной среды для выполнения тестов.
Недостатки
- Нет средств Record/Playback.
- Требует более высокой квалификации от сотрудников.
- Нетподдержки selence test cases.
- Сыроват. Например:
Проблемы с кирилицей при воспроизведении
Проблемы с запуском parallels tests
4. О чем еще стоит упомянуть?
Selenium on Rails. Простой способ интеграции Selenium с Ruby on Rail приложениями. Поскольку я сам с Ruby знаком очень поверхностно, этот инструмент представлю обзорно:
- Selenium Core не «замусоривают» /public.
- Не нужно создвать suite-файлы, они генерятся на лету — один suite на директорию в /test/selenium.
- Partial test cases. Позволяет выносить часто используемые последовательности действий в отдельные «кусочные» кейсы и подключать их по мере надобности.
- Загрузка фикстур и имитация сессий.
- Возможность использования нескольких более удобных форматов для TestCases, помимо HTML
– Selenese, самый простой тестовый формат.
– Rselenese, позволяет писать тесты на ruby.
– HTML/RHTML.
Bromine. Интегрированная тестовая среда на базе Selenium.
Selenium предоставляет возможности
- Создание тестов при помощи IDE
- Предоставляет JS framework
- Предоставляет Remote Control server
- Предоставляет Core runner
Bromine
- Многофункциональный QA инструмент
- Позволяет создавать проекты
- Привязывать требования к проектам
- Привязывать тесты к требованиям
- Предоставляет простой способ управления и запуска тестов
- Позволяет анализировать результаты запуска тестов
- Позволяет создавать дефекты
- Также имеется облегченная light версия только для запуска тестов и анализа результатов
На момент составления основы доклада, я только узнал о Bromine и не планировл его как-то подробно освещать, но непосредственно перед SQADays у меня нашлось время посмотреть что этот тул из себя представляет.
Собственно основное ощущение, которое возникло при первом знакомстве с Bromine – сырость. Реализован он в виде web-приложения на PHP+MySQL. Реализован мягко говоря не хорошо (по сути набор независимых скриптов без разделения логики и представления) и не смотря на указание версии 1.9 у меня не получилось сконфигурировать интеграцию с Selenium, так как приложение упорно теряло текущий выбранный проект.
Будем надеяться что не смотря на это Bromine можно использовать, так как он предлагает ряд интересных идей. Собственно когда у меня будет время, я постараюсь разобраться и настроить действующий стенд Bromine – а это заслуживает как минимум отдельной статьи.
5. О грустном
Как ни прискорбно указывать на этот факт, полноценных IDE и тем более промышленных решений на базе Selenium нет. Пока что наиболее гибким (но и наиболее ресурсоемким) остается вариант использования базовых средств Selenium, дорабатывая свои необходимые надстройки или разрабатывать свой уникальный framework под конкретную задачу.