В одну статью всё не уместится, в этой будут даны основы, которые будут необходимы для общего понимания и использования CubicTest.
CubicTest приятный инструмент для тех, кто занимается функциональным тестированием веб-страниц. Самостоятельной версии нет и для его использования потребуется Eclipse (я использовал Galileo). Тесты в итоге можно экспортировать либо в скрипты Selenium Core, либо в скрипты Watir, а можно никуда не экспортировать и запускать из Eclipse. В документации особо указывается, что с CubicTest можно протестировать всё, что основано на HTML, но Java апплеты и Flash ему не по зубам (какой сюрприз).
Но, обо всём по-порядку.
Установка
Установка CubicTest в Galileo, проще, чем описано на странице с инструкциями по установке (там используется старая версия Eclipse). Отчасти потому, что требуемые компоненты уже содержатся в Eclipse.
1. В Eclipse откройте меню Help > Install New Software
2. В новом окне в поле Work with нужно ввести http://boss.bekk.no/cubictest/update/ и нажать Add. После этого в списке доступных программ появится краткий список Web Testing Tool (в моём случае всего один).
3. Напротив CubicTest нужно поставить галочку и нажать Finish. После этого инсталятор проверит зависимости и выдаст список на загрузку и установку после чего нужно будет перегрузить Eclipse.
С установкой всё.
Создание проекта.
Ничего необычного нет, есть только несколько специфичных опций.
1. Выбор точки отсчёта (Startpoint)
Точка отсчёта это откуда начинается тест. Есть три варианта (v 1.9.6):
- URL - привязываемся к реальной страничке.
- Extension - привязываемся к страничке (или шагу) из другого теста
- Sub test - тест нельзя будет запустить самостоятельно, он может быть только частью другого теста.
После этого будут только вопросы о том, добавлять ли CubicTest и Selenium в classpath. Тут уже личное дело каждого.
Так же в каждом проекте по умолчанию создаётся файл test-project.properties, в нём хранится информация о том, какой браузер и в каком режиме использовать для тестов. Google Chrome поддерживается изначально и никаких танцев с бубном не потребуется.
Концепция.
Проще пока не придумали.
В CubicTest реализовано несколько сущностей, которые и позволяют эффективно создавать тесты с помощью визуального редактора:
Наборы тестов (test suites) – наборы отдельных тестов (tests), собранных в логическую группу и взаимодействующих (прямо или косвенно) друг с другом.
Тесты (tests) – собственно тесты, описание последовательностей действий и состояний web приложения.
Страницы (page) и Состояния (states) – страницы или состояния. Например, если на тестируемой странице ввести текст, то это измени её состояние и добавит state в test.
Транзакции (transactions) и взаимодействие с пользователем (user interactions). Взаимодействие с пользователем – это те действия, которые совершаются на страницы – клики, ввод текста, выбор элементов списка. Несколько таких действий – это транзакция, которая меняет состояние (state) страницы (page).
Элементы страницы (Page elements) – это сущности представляющие элементы html, которые присутствуют или не присутствуют на странице. Через них осуществляется взаимодействие с пользователем (user interactions) и они используются для проверок.
Контекст (Context) – это элементы разметки одним махом – div, table (tr, td), span. Логически же это представление вложенности в DOM дереве, а их использование позволяет тестировать эквивалентные значения в разных частях HTML документа.
Идентификаторы (Itentifiers) – это свойства, по которым можно найти контекст и определить элемент на страницы. Идентификаторов не мало, часть из – атрибуты элементов, а часть HTML теги. В зависимости от элемента страницы набор идентификаторов раз и с помощью комбинаций элементов и контекста можно задавать элменты достаточно гибко. При исполнении теста CubicTest автоматически строит XPath по выставленным идентификаторам.
Точка отсчета (Start point) и расширения (Extentions) – об этом уже говорилось чуть выше. Это точки откуда начинается тест – web страница или другой тест.
Виртуальные страницы (Commons) – это страницы почти как настоящие, но на самом деле не существуюющие. Содержащиеся на них элементы можно использовать для проверок на разных страницах (что то вроде Data Module в Delphi).
Сабтесты (Sub Tests) – практически любой тест может быть включен в состав другого теста и будет выполнен в соответствии с порядком подключения.
Из всего этого складывается довольно простая матрёшка:

На этом я пока закончу и в продолжении расскажу уже о сами принципы и подходах к написанию тестов веб приложений с помощью CubicTest.

