![image](https://habrastorage.org/webt/ud/ap/hd/udaphdrzaavfvktzcy_wpdryopu.jpeg)
Jubula (Джубула) – инструмент для автоматизации тестирования, известный не многим тестировщикам в России. В нашу компанию он пришёл вместе с проектом из Германии.
Программа разработана компанией BREDEX GmbH и является бесплатной. Разработчик указывает, что Jubula способна тестировать приложения на Swing, SWT/RCP/GEF и JavaFX. Тестировщику, использующему Jubula не обязательно знать ни один из языков программирования, поскольку тестирование осуществляется методом чёрного ящика и не требует наличия исходного кода, что позволяет каждому автоматизировать свои тест-кейсы самостоятельно.
Jubula может использоваться как отдельное приложение (как в нашем проекте) или в виде плагина к Eclipse (https://projects.eclipse.org/projects/technology.jubula).
После установки приложения, всё уже готово к использованию: настроена база данных для хранения проектов и AUT-Agent (обеспечивает связь Jubula с тестируемым приложением).
Чтобы создать новый проект, нужно выбрать в меню Test – New и заполнить поля. В AUT executable выбираем путь к исполняемому файлу для запуска тестируемого приложения.
![image](https://habrastorage.org/webt/of/lb/ma/oflbmal2uq0ffj-6uxcpuerdzdi.png)
Конечно, для большого проекта, в котором работают несколько тестировщиков потребуются специальные настройки централизованной базы данных, в которой будут храниться созданные тест-кейсы для регрессионного тестирования, с доступом для всех пользователей.
Для тестирования приложения с помощью Jubula необходимо, собственно, само приложение с графическим интерфейсом. Программа уже содержит набор самых необходимых действий:
![image](https://habrastorage.org/webt/-n/h-/ka/-nh-ka2uoblrh3zye-07lxfet98.png)
В основе создания тест-кейсов в Jubula лежит метод ключевых слов (keyword). То есть создавая новый тест-кейс, пользователь находит необходимые действия используя такие слова как click, check, wait и др., добавляет их в тест и присваивает им нужные параметры.
Кроме этого, Jubula предоставляет возможность «записать» действия, выполняемые тестировщиком, и воспроизвести их впоследствии. Этот метод не пользуется популярностью, хотя и уместен для быстрого создания предусловий, когда, к примеру, необходимо «добраться» до нужного окна, в котором уже будут произведены проверки.
Для создания тест-кейса можно просто перетащить шаг из Test Case Browser в рабочую область, в которой открыт Ваш тест-сьют. Несколько шагов можно объединить в модуль (Refactor – Extract Test Case), который в последствии может быть использован в разных тест-кейсах. Изменение модуля приведёт к изменению шагов во всех тестах, где он используется, с этим нужно быть аккуратнее. Если модуль открыт в рабочей области, легко посмотреть все тест-кейсы, где он используется, нажав F7. В Jubula есть еще много «горячих клавиш», которые очень удобно выделены отдельной строкой в разделе «Help». Кроме того, в Help Contents с помощью поисковой строки можно найти интересующую информацию по любой функции программы (на английском языке).
![image](https://habrastorage.org/webt/0b/sg/fv/0bsgfvmnm-lsuapdgtc9yuqcpky.png)
Перед созданием тест-кейсов нужно добавить все графические компоненты, используемые в тесте. Это делается легко с помощью Object Mapping Mode, который активируется, когда приложение открыто. Наводим курсор на нужный объект и нажимаем Ctrl + Shift + q. Объекту нужно присвоить имя и сохранить, затем его можно выбрать в окошке Component Names в нужном шаге.
![image](https://habrastorage.org/webt/0x/ii/lt/0xiiltb-n1ycb3vm29kcqzww2hu.png)
При необходимости Jubula позволяет создать собственные специфические шаги. Для этого существуют действия executeExternalCommand и invokeExternal(Method). С их помощью запускаются скрипты или .jar файлы. Без знания JAVA создать собственные команды не получится. В нашем проекте инженер-конфигуратор написал несколько крупных .jar файлов, к которым Jubula обращается через .bat, прописываемые в executeExternalCommand.
Рассмотрим на примере модуля, созданного в нашем проекте для сравнения активного окна с изображением, хранящимся на SVN. Сначала в виде переменной сохраняется имя будущего .jpg файла (StoreValue), в стандартном шаге takeScreenshotofActivWindow прописывается это имя и путь, по которому будет располагаться новый скриншот, а затем в шаге executeExternalCommand запускается .bat файл, где указаны изображения, которые будем сравнивать и некоторые параметры, как размер изображения и максимально допустимое отклонение в пикселях. Через этот же .bat файл запускается .jar, в котором есть классы для сравнения текста, изображений, pdf- и csv-файлов. Эта внутренняя кухня нужна в основном только тому, кто настраивает Jubula для проекта впервые, или добавляет то, чего очень не хватало. При создании тест-кейса тестировщик берет уже готовый модуль (у нас, например, Compare Image), задаёт параметры и даже и не знает, что прописано в .bat, и тем более в .jar.
Jubula может взаимодействовать со сторонними приложениями во время тестирования. Наше приложение генерирует отчёты в форматах PDF и CSV. Через приложение можно открыть отчёт в Adobe Reader, Jubula сохранит его с помощью комбинаций клавиш, задаст ему имя, которое выбрал тестировщик заранее, а затем сравнит его с файлом, сохраненным на SVN описанным выше способом через executeExternalCommand.
Результаты проведения теста показаны максимально подробно, можно посмотреть все входные и выходные параметры. Если тест упал на каком-то шаге, то Jubula делает скриншот этого момента, к которому можно обратиться в любое время (эту функцию можно отключить для экономии места). Кроме того, для шага с ошибкой в большинстве случаев доступен Log-View, где коротко описано в чём суть ошибки. Результаты можно автоматически сохранять в выбранную папку в формате XML/HTML.
Для того чтобы определить действия, следующие за появлением ошибки, используется Event_Handler – так называемый обработчик события. Его можно настроить в зависимости от типа ошибки на продолжение, повторение (заданное количество раз), выход, паузу и др. В event handler можно добавить тестовый шаг или несколько шагов, которые должны быть выполнены в случае ошибки.
Влиять на выбор следующего шага можно с помощью If-Then-Else, что очень удобно при повторяющихся действиях с различными параметрами.
While-Do или Do-While Loop хорошо помогают, если нужно «долистать» до нужного значения [Нажимать «вниз», пока не появится значение «5» или наоборот, пока значение не равно «5», нажимать «вниз»].
![image](https://habrastorage.org/webt/yv/u3/5t/yvu35tjzpj4ts3ciero33rmyzmg.png)
Естественно, в Jubula имеется возможность запускать ночные прогоны, чтобы утром порадоваться зелёным галочкам напротив своих тестов.
Jubula проводит тест, как если бы пользователь его проводил на своем компьютере: водит курсором по окнам приложения, кликает на клавиши, поэтому для чистоты эксперимента в этот момент нельзя двигать мышь или трогать клавиатуру. А как показывает опыт, даже не трогая ничего, пользователь способен смутить Jubula одним своим взглядом так, что она не сможет найти нужную кнопку, или нажать её, или ещё что-то. Поэтому лучшим вариантом будет запускать Jubula на другой машине. В нашем проекте это удалённая машина, куда каждый заходит под своим пользователем, но все его изменения в Jubula становятся доступны и всем остальным.
В нашем проекте Jubula интегрирована с Polarion, это позволяет просматривать статистику, какие тесты прошли или не прошли, какие вообще не были запущены в этом прогоне. Для каждого отдельного тест-кейса в Polarion есть поле Test Records, в котором отображаются результаты последних ночных прогонов в Jubula, их количество можно установить самостоятельно (вплоть до 300). Эта функция помогает легко отследить, с какой версии тест перестал проходить, если за ним не было регулярного наблюдения.
Одним существенным недостатком программы является отсутствие возможности откатить любое изменение, функции «шаг назад», «отменить» или что-то подобное просто нет. Максимум что возможно, это всё закрыть, не сохраняя изменения. Но если нажать «Save», то всё. В экстренных случаях есть возможность восстановить версию проекта от определённой даты, это чревато тем, что изменения, сделанные после этого дня будут навсегда утрачены.
Jubula – это реально хорошая программа для автоматизации тестов, написанных для десктопного приложения. При желании и наличии навыков у пользователя она позволяет проверить всё, и не только GUI, но и функционал со стороны сервера. Но создание это действительно нежное, к нему надо найти подход, и тогда можно пользоваться им долго и счастливо!