jubula – tdd ui qa automation tool

Post on 05-Aug-2015

95 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Jubula – TDD UI QA Automation tool

Антон НаумовичDPI Solutions

О себе

Антон НаумовичБолее 10 лет опыта в IT

• C++ тимлид и архитектор в LogicNow• В DPI Solutions курирую проекты по автоматизации• В прошлом – разработчик в Microsoft, команда

Hyper-V (Windows Server)• Активист сообщества автоматизаторов COMAQA.BY

Что такое Jubula

Jubula – это мощный профессиональный инструмент для автоматизации функционального тестирования ПО через графический интерфейс пользователя

История

• Разработан в немецкой компании Bredex• Основан на коммерческом инструменте GUIDancer• Развивается сообществом Eclipse

• Является standalone-инструментом (существует также плагин к Eclipse)• Поддерживает автоматизацию десктопных

приложений: включая Java (Swing, SWT/RCP/GEF, JavaFX), native Win32, .Net, HTML, iOS• Платформы: Windows, Linux/Unix и Mac• Полностью бесплатный и open-source

Что характерно

• Клиент – интегрированная среда для разработки, запуска и анализа тестов (либо плагин к Eclipse)• Сервер (AUT Agent) – сервис для запуска AUT-приложения

и контроля за выполнением тестов• Поддерживается интерфейс командной строки для

интеграции в Continuous Integration системы

* AUT – Application Under Test

Архитектура Jubula

Только соответствие поддерживаемым технологиям:• Не нужен доступ к исходным кодам• Не нужны модификации исполняемых файлов

Что требуется от AUT-приложения

• Повторное использование тестов + рефакторинг• Слой абстракций для UI-элементов• Библиотека готовых действий, “ожидалок” и проверок• Не требует навыков программирования• Record-play есть, но не рекомендуется к использованию• Test-Driven Development• Data-Driven Testing

Идеология Jubula

Что же такое Test-Driven Development

Разработка через тестирование: сначала пишутся тесты, затем реализуется соответствующий функционал

«Разработка через тестирование поощряет простой дизайн и внушает уверенность»

Цикл Test-Driven Development

• Пишем тест: конец немного предсказуем – FAIL (Red)• Пишем код до успешного прохождения тестов (Green)• Приводим код в должное состояние (Refactor)

• Раннее фиксирование требований через тесты• Знакомство бизнес-специалистов с процессами разработки• Поощряет взаимодействие между заказчиком,

разработчиками, тестировщиками• Идеально подходит под agile-процессы

Почему важен TDD через UI?

Data-Driven Testing – это • отвязывание данных, используемых для тестов, от самих тестов• ожидаемый результат обычно идет вместе с данными

Data-Driven Testing

Легко поддерживать и расширять тестовые данные

Итак

Рассмотрим типовой процесс создания теста

Шаг 1

• Создаем тестовый проект

Шаг 1

• Задаем имя проекта

Шаг 1

• Выбираем тулкит в зависимости от типа приложения

Шаг 1

• Выбираем языки, используемые для тестовых данных

Шаг 1

• Указываем название приложения (произвольное)

Шаг 1

• Вносим уникальный идентификатор приложения для проекта

• Выбираем директорию с приложением

• Выбираем исполняемый файл

Шаг 2

• Создаем Тест-кейс

• Задаем имя кейса

• Открываем кейс двойным кликом

Шаг 3

Теперь нужно добавить степы в свой кейс:

• Первым степом открываем приложение

• Степы добавляются обычным перетаскиванием

Шаг 3

• Теперь нужно добавить к степу параметры

• Имя степа (для удобства использования)

• Метод активации “TITLEBAR” = клик по титульной строке приложения

Шаг 3

• Таким же образом добавляем все нужные степы• В параметрах можно

использовать переменные, для использования Data-Driven подхода (=<ИМЯ ПЕРЕМЕННОЙ>)• В проверке необходимо

задать оператор сравнения

Шаг 3

Добавляем данные:• Данные добавляются для всех выбранных языков• Для каждого набора данных можно задать свой

оператор сравнения

Шаг 3

Добавляем имена использованных компонентов:

• Поочередно проходя по степам задаем имена компонентов, с которыми будут проводиться действия, в области “Component Names”

Шаг 4

Теперь мы готовы создать тест-сьют……с любым удобным именем

Шаг 4

Старый добрый drag-n-drop нашего кейса в область редактирования тест-сьюта:

Шаг 4

Тест готов! А красный крест на сьюте говорит о том, что функционал не реализован, а значит мы на стадии “Red”

Шаг 5

После реализации функционала делаем маппинг:

Шаг 5

• Для этого запускаем агент

• Запускаем приложение

• Стартуем маппер

Шаг 5

• Маппер подсвечивает элементы зеленым цветом

• Сочетанием Ctrl+Shift+Q добавляем элемент в список

• Перетаскиваем наш объект из кейсов на мап

Шаг 5

• Повторяем действие для всех элементов

Шаг 6

Запускаем тесты

*Внимание! Приложение должно быть запущено с подключенным агентом, как мы делали перед маппингом

Шаг 6

Результаты:

Fail, Something wrong!Pass, Ok!

Сохраняются скриншоты

• Тестовые проекты и результаты хранятся во встроенной базе данных• При желании встроенная база заменяется на внешнюю• Возможен экспорт в XML формат для хранения в системе

контроля версий

Хранение тестов и результатов

Tips and tricks• Создавайте отдельные «ключевые слова» для

повторяющихся действий, это увеличит повторное использование действий (Используйте Extract Test Case)

• Удобно иметь отдельный тест-сьют с тестами по функционалу, который еще не реализован (Red). По мере реализации функционала тесты оттуда необходимо будет переносить в Regression

• Структурируйте эти «ключевые слова», располагая их в именованных папках по категориям

• Максимально используйте возможности Data-Driven Testing

Аналоги

Автоматизация десктопных приложений

Возможность писать как keyword, так и скриптовые тесты

Мощный встроенный mapping-tool

Нет поддержки TDD

ОЧЕНЬ дорогая лицензия

Аналоги

Автоматизация десктопных приложений

«Свободная» архитектура тестового проекта

Только скриптовые тесты, нет Keyword-driven

Ограниченная поддержка Java-приложений

Платная лицензия

Аналоги

Автоматизация десктопных приложений

Простой Basic-подобный синтаксис

Тесты – просто набор скриптов без архитектуры

Нет встроенной валидации

Бесплатный

Аналоги

Автоматизация десктопных приложений

Поддержка Record-play

Базирование на Record-play

Платная лицензия

Поддержка различных платформ, включая мобильные

Итого: плюсы

Jubula это:

• Собственный UI, встроенная база данных для хранения тестов и результатов, встроенная поддержка DDT, включая использование как встроенных, так и внешних источников данных, например .xls-файлы

• Полноценный самостоятельный инструмент автоматизации, не зависящий от сторонних библиотек, инструментов, языков, IDE

• Бесплатная лицензия

• Встроенная поддержка TDD: маппинг объектов после написания тестовых сценариев

Итого: минусы

Ложка дёгтя:

• Предопределенная архитектура проекта – на больших проектах со временем образуется нагромождение степов и тест-кейсов

• Тесты не портируются и не конвертируются в код

• UI и flow, требующие привыкания

• Ручная интеграция в Continuous Integration

Используйте Jubula, если:• нужен бесплатный инструмент• нужна базовая функциональная автоматизация через UI• хотите быстро начать автоматизацию• хотите по минимуму заниматься тестовой инфраструктурой• хотите получить плюсы TDD и DDT• хотите чтобы тесты мог разрабатывать нетехнический специалист

В итоге

Спасибо! Вопросы?

Антон Наумовичnaumovich@dpi.solutionsskype: dpi.naumovich

top related