Расширяемая платформа для создания и управления...
DESCRIPTION
Продукт XML2Selenium - это расширяемая, плагинная платформа для создания и управления автоматизированными тестами на основе технологии Java. XML2Selenium имеет интеграцию с JUnit, работает поверх Selenium (это изменяемо). XML2Selenim позволяет создавать автоматизированные тесты в простом и понятном обычному (без навыков программирования) QA инженеру формате. XML2Selenium позволяет также управлять всеми стадиями работы с автоматизированными тестами, начиная от стадии создания и заканчивая управлением тестами. Главными конкурентными преимуществами являются - низкая стоимость вхождения. Начинающие автоматизаторы, и даже QA инженеры без навыков программирования создают качественные тесты, а значит легко поддерживаемые, легко изменяемые, с использованием DDT (Data Driven Testing) подходов, что увеличивает повторно-используемость тестов - встроенные возможности структуризации тестов по папкам и файлам, а также по тегам, что позволяет качественно отобразить документацию на тесты. Внедряя эту платформу, вы автоматически улучшаете свои процессы управления тестами - XML2Selenium - это плагинная, расширяемая платформа, позволяющая кастомизировать процессы под ваши нужды, создать новые плагины, добавить интеграцию с нужными системами, и многое другое - все повторно-используемые части (инклюды, плагины) могут помещаться в репозитории, откуда ими могут пользоваться QA инженеры с других проектов компании, тем самым распространяется опыт и знания в области автоматизации - XML2Selenium имеет широкий спектр полезных свойств в области автоматизации, таких как поддержка создания видео, снепшотов и скриншотов страниц, Groovy и JS скриптинга, поддержки объектно-ориентированного программирования на XML и многих других Традиционно многие компании не инвестируют много в QA инженеров, при этом сложность продуктов и количество Use Cases растёт, и компании утыкаются в барьер, когда архитектура тестов становится сравнительно такого же уровня, как и архитектура приложения. Это же касается и автоматизации тестирования. Ключевыми проблемами становятся: - вопросы поддержки и тестирования многих инсталяций продукта на стороне заказчика - вопросы тестирования нескольких версий (бренчей) одного и того же продукта - повторнTRANSCRIPT
Расширяемая платформа для создания и управления автоматизированными тестами на основе технологии Java.
Горячко Дмитрий
2
Прежде чем начатьПродукт создаётся java разработчиками и архитекторами с использованием
опыта нескольких Java автоматизаторов со стажем, адресуя задачи, которые возникали перед компанией на многих реальных проектах
О себе: профессиональный Java разработчик с 10 летним стажем, докладчик различных беларуских конференций на тему инженерии ПО, основатель и руководитель Agile Java Development компании JazzTeam, имею хороший опыт в автоматизации тестирования (принимал участие в работе над платформой по автоматизации тестирования одной из успешных SOA платформ http://sopera.com и др.), являюсь организатором "Первой в Беларуси Региональной IT Конференции Solit" http://solit.iSoligorsk.org, а также коммитером Eclipse Open Source сообщества.
3
Эта презентация• Рассказ о платформе, мотивации и возможностях
для конечного пользователя• Рассказ об особенностях разработки платформы,
что может вдохновить Вас на использование наших идей
Ваш feedback очень важен
4
Как это выглядит?• Тесты пишутся на XML • Пользователь работает
с отчётами
5
Demo доступ• Jenkins http://dev.jazzteam.org:8080• Username x2sdemo, password x2sdemo• Выберите последний билд и перейдите по ссылке
“Build Artifacts”, или сразу используйте прямую ссылку для доступа к отчётам http://dev.jazzteam.org:8080/job/xml2selenium-reports-smoketestcases_master/57/artifact/xml2selenium-reports-manualsmoke-testcases/target/xml2selenium/
• Слева в отчётах доступны ссылки на исходный код тест кейсов и тестов
6
Почему мы работаем над этим• В большом количестве проектов, где мы участвовали, как java
разработчики, мы наталкивались на схожие проблемы– Управление Web UI Selenium тестами со стороны менеджмента (Индия)– Создание поддерживаемых, читаемых Web UI тестов (Голландия)– Рефакторинг, ООП, повторное использование Selenium тестов (Германия,
Беларусь)– Взаимодействие между разработчиками и автоматизаторами (Россия)
• Более подробное обоснование http://jazzteam.org/ru/products/xml2selenium-test-automation-platform/why-xml-dsl-platform-required
• Связки Selenium + Concordion, Fitnesse = по прежнему нужно создавать fixtures
7
Как всё устроено• Автоматизаторы создают тесты на XML, разбивая их по папкам и
файлам– Запускают их локально через IDE или через Maven, проверяют, всё ли работает
• XML > Version Control System > Jenkins Job through trigger > XML2Selenium reports in build artifacts
8
Доступ к отчётам из Jenkins
9
Business report: теги, фильтры, папки
10
Business report: основная таблица
11
BDD report: для менеджеров
12
BDD report: bdd плагин
13
BDD report: различные комбинации
14
Репорты: техническая информация
15
BA-User-Friendly интеграция с Junit
16
BA-User-Friendly интеграция с Junit
17
Примеры XMLИмпорты, теги, наследование, считать значение в переменную, JVM параметры
18
Примеры XMLGroovy scripting, Java Script, общий контекст между XML и JS
19
Примеры XMLФреймы, цикл, селекторы
20
Примеры XMLBefore, After, самотестирование
21
Примеры XMLAsserts
22
Примеры XMLРабота с фреймами и наследованием
23
• Название XML2Selenium говорит только о Web UI/Mobile составляющей возможностей платформы
• Нет зависимости от jenkins, junit, можно создавать свои раннеры в разных runtimes (cloud, Servlets, метод main, OSGI)
• Нет зависимости от Selenium, различные наборы плагинов реализуют различные функции
Почему платформа?
24
• Низкая стоимость создания тестов
• Интеграция с документацией (@since, @version, @ready)
• Встроенные возможности управления
• Тесты получаются поддерживаемыми и читаемыми
• Повышается reusability• Инклюды и плагины
позволяют генерализировать и накапливать опыт
• Встроенные BDD/DDT
Бизнес-преимущества
25
• Все теги – плагины (точки расширения, события)
• Все репорты – плагины• Зависимость от junit,
web driver - плагин
XML DSL
26
• Для всех наборов плагинов (DB, Web UI, SOA) поддерживаются (основа языка):– Переменные– Контексты переменных– Параметризированные методы
(фреймы)– Импорты– Groovy скриптинг в атрибутах и
в отдельном теге– Возможность делать assert
– Теги iterate, if, resource– Теги before, after– Возможность наследования и
переопределения фреймов и любых элементов с атрибутом ref
– Самотестирование (expected)– Интеграция с документацией
(тегирование, иерархичное разбиение на папки и файлы, атрибуты @since, тег bdd)
– 2 стандартных отчёта по умолчанию с отдельными артифактами для каждого тега
– Система логгирования, для каждого теста и тест кейса – свой лог
XML DSL
27
• Набор тегов/плагинов для всех базовых элементов
• Тег webelement поддерживает различные действия и локаторы– Id, subId, Xpath, CSSSelector,
tagName– Проверить, что элемент
существует– Считать атрибут или текст– Осуществить действие с
элементом (нажать и т.д.)
• Работа с JavaScript• Screenshot/Snapshot/
Video• По сути – обёртка над
возможностями Selenium/WebDriver– Работа с мышью– Асинхронный JS– WaitFor
Web UI
28
• Вся информация о всех тестах в одном месте
• Фильтрация, тегирование• Доступ к описаниям, исходному
коду• Доступ ко всем артифактам –
логи, скриншоты и т.д.• Возможность получить понятную
пользователю информацию об исключении
• Навигирование по иерархии тестов
• Отчёт в формате BDD• По наведении на конкретный
элемент дерева – виден исходный код этого участка
• Можно использовать русский язык
• Нет непонятных исключений, названий классов, методов
• Выделение цветом
Возможности отчётов
29
Интеграция с JUnit
30
Самотестирование, DDT
31
Самотестирование, DDT
32
• Процессы: git, gerrit, jenkins, maven, java, agile/scrum, DDT, TDD
• Плагинность: reflexion, classpath, classloaders
• Репорт: XML + XSLT = static HTML (в данный момент)
• DSL: XSD, JAXB• Plugins: smth. like eclipse
plugins• Plugins repos: nexus• Тестирование: unit
tests, автотестирование, тестирование собой своих же отчётов
Как это сделано?
33
• Все плагины и инклюды – maven проекты => могут быть помещены в nexus репозитории – приватные и публичные
• Thread saved• Плагины автоматически
обнаруживаются в classpath
• Загрузка данных из ресурсов, хранилищ данных, помещение по ключам в контекст теста
• Разделение логов по тест кейсам, тестам
• Public API, Java Docs
Другие фишки
34
• Cloud solution– Jenkins– Web UI SAAS– ? Интеграция с
http://www.saucelabs.com
• XML2Selenium IDE– Only clicks no XML
• Развитие репортов– Статистика по билдам– Срезы за месяц, год
• Другие наборы плагинов– DBs– Mobile
• Public Nexus репозиторий для инклюдов и плагинов
• Open Source• Маркетинг и бизнес-
развитие– Xml2selenium.com– Xml2selenium.net
Планы на будущее
35
• http://jazzteam.org/ru/products/xml2selenium-test-automation-platform
• http://jazzteam.org/ru/products/xml2selenium-test-automation-platform/why-xml-dsl-platform-required
• Доклад на конференции Solit-2013 Создание продукта для автоматизации тестировании. Что нужно учитывать, чтобы создать технологическую платформу. Разбор конкретного примера – продукта XML2Selenium
• Доклад на конференции Solit-2013 Эволюция тестирования на Selenium
Дополнительная информация