Tellurium,AOST и много других страшных DSL надстроек...

Oct 03, 2008 15:59

Давно хотел написать о различных надстройках что появились для селениума. В принципе селениум и сам по себе достаточно удобен для написания автотестов для веба, но вот некоторым неймётся уменьшить уровень вхождения для написания автотестов (чем проще писать, тем больше смогут это делать). В итоге получается очень много различных "химер" на базе селениума - например Selenium+Fitnesse или фреймворк для автотестов о котором я хочу рассказать - Tellurium (раньше назывался AOST).
Так вот АОСТ (так и подмывает назвать его моющим средством, из небезизвестной рекламы) позвоялет писать автотесты для веба практически нормальным английским функциональным языком примерно в слудующем виде:

openUrl "http://code.google.com/p/aost/"
click "menu.project_home"
waitForPageToLoad 30000
click "menu.downloads"
waitForPageToLoad 30000
click "menu.wiki"
waitForPageToLoad 30000
click "menu.issues"
waitForPageToLoad 30000

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

ui.Container(uid: "google_start_page", clocator: [tag: "td"], group: "true"){
    InputBox(uid: "searchbox", clocator: [title: "Google Search"])
    SubmitButton(uid: "googlesearch", clocator: [name: "btnG", value: "Google Search"])
    SubmitButton(uid: "Imfeelinglucky", clocator: [value: "I'm Feeling Lucky"])
}


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

Написан Теллуриум на новомодном груви с использованием жава, в комплект уже включены библиотеки для работы с JUnit и TestNG тестами а также сам селениум сервер. Собсна писать можно точно такие же тесты в формате JUnit или TestNG а также просто оформлять тесты в виде отдельных файлов и скармливать их батнику (прежде нужно сбилдить проект) который собсна запускает селениум сервер и выполняет скармливаемый тест (очень кстати удобно и быстро). Хвала разработчикам они подумали и о способах идентификации элементов управления, вместе с теллуриумом поставляется плагин для файрфокса, который позволяет определить  идентификатор элемента сразу в формате теллуриума

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


код в принципе очень прост,понятен и линеен, практически идеальный тест, запускается очень просто, путем вызова из командной строки бат файла "rundsl.bat "  в качестве параметра к которому отправляется имя дсл файла. Выполняется весь скрипт очень быстро (Теллуриум предусматривает ожидание прогрузки страниц, где это необходимо), единственно результаты будут доступны только в виде ReturnCode консольного приложения, но ничто не мешает запускать тесты JUnit  с прикрученным теллуриумом. Кстати при написании скрипта можно использовать все мощностя языка груви (условные операторы,циклы и т.д.).

В общем штука достаточно удобная, реализована тоже неплохо, единственно пока не вижу практической необходимости внедрения данного фреймворка ибо писать и на селениуме достаточно быстро и удобно (плагин для файрфокса продолжает рулить) да и аост сыроват
Previous post Next post
Up