jubula – tdd ui qa automation tool
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• хотите чтобы тесты мог разрабатывать нетехнический специалист
В итоге