ݺߣ

ݺߣShare a Scribd company logo
Горячко Дмитрий

Расширяемая платформа для создания
и управления автоматизированными
тестами на основе технологии Java.
Прежде чем начать
Продукт создаётся java разработчиками и архитекторами с
использованием опыта нескольких Java автоматизаторов со стажем,
адресуя задачи, которые возникали перед компанией на многих
реальных проектах
О себе: профессиональный Java разработчик с 10 летним стажем, докладчик
различных беларуских конференций на тему инженерии ПО, основатель
и руководитель Agile Java Development компании JazzTeam, имею
хороший опыт в автоматизации тестирования (принимал участие в
работе над платформой по автоматизации тестирования одной из
успешных SOA платформ http://sopera.com и др.), являюсь
организатором "Первой в Беларуси Региональной IT Конференции Solit"
http://solit.iSoligorsk.org, а также коммитером Eclipse Open Source
сообщества.

2
Эта презентация
• Рассказ о платформе, мотивации и возможностях
для конечного пользователя
• Рассказ об особенностях разработки платформы,
что может вдохновить Вас на использование
наших идей

Ваш feedback очень важен 

3
Как это выглядит?
• Тесты пишутся на XML

• Пользователь работает
с отчётами

4
Demo доступ
• Jenkins http://dev.jazzteam.org:8080
• Username x2sdemo, password x2sdemo
• Выберите последний билд и перейдите по ссылке
“Build Artifacts”, или сразу используйте прямую
ссылку для доступа к отчётам
http://dev.jazzteam.org:8080/job/xml2selenium-reportssmoketestcases_master/57/artifact/xml2seleniumreports-manualsmoke-testcases/target/xml2selenium/
• Слева в отчётах доступны ссылки на исходный код
тест кейсов и тестов

5
Почему мы работаем над этим
• В большом количестве проектов, где мы участвовали, как java
разработчики, мы наталкивались на схожие проблемы
– Управление Web UI Selenium тестами со стороны менеджмента
(Индия)
– Создание поддерживаемых, читаемых Web UI тестов (Голландия)
– Рефакторинг, ООП, повторное использование Selenium тестов
(Германия, Беларусь)
– Взаимодействие между разработчиками и автоматизаторами (Россия)

• Более подробное обоснование
http://jazzteam.org/ru/products/xml2selenium-test-automationplatform/why-xml-dsl-platform-required
• Связки Selenium + Concordion, Fitnesse = по прежнему нужно
создавать fixtures

6
Как всё устроено
• Автоматизаторы создают тесты на XML, разбивая их по папкам
и файлам
– Запускают их локально через IDE или через Maven, проверяют, всё ли
работает

• XML > Version Control System > Jenkins Job through trigger >
XML2Selenium reports in build artifacts

7
Доступ к отчётам из Jenkins

8
Business report: теги, фильтры, папки

9
Business report: основная таблица

10
BDD report: для менеджеров

11
BDD report: bdd плагин

12
BDD report: различные комбинации

13
Репорты: техническая информация

14
BA-User-Friendly интеграция с Junit

15
BA-User-Friendly интеграция с Junit

16
Примеры XML
Импорты, теги, наследование, считать значение в переменную, JVM параметры

17
Примеры XML
Groovy scripting, Java Script, общий контекст между XML и JS

18
Примеры XML
Фреймы, цикл, селекторы

19
Примеры XML
Before, After, самотестирование

20
Примеры XML
Asserts

21
Примеры XML
Работа с фреймами и наследованием

22
Почему платформа?
• Название XML2Selenium говорит только о Web
UI/Mobile составляющей возможностей
платформы
• Нет зависимости от jenkins, junit, можно
создавать свои раннеры в разных runtimes (cloud,
Servlets, метод main, OSGI)
• Нет зависимости от Selenium, различные наборы
плагинов реализуют различные функции
23
Бизнес-преимущества
• Низкая стоимость
создания тестов
• Интеграция с
документацией
(@since, @version,
@ready)
• Встроенные
возможности
управления

• Тесты получаются
поддерживаемыми и
читаемыми
• Повышается reusability
• Инклюды и плагины
позволяют
генерализировать и
накапливать опыт
• Встроенные BDD/DDT
24
XML DSL
• Все теги – плагины
(точки расширения,
события)
• Все репорты –
плагины
• Зависимость от junit,
web driver - плагин

25
XML DSL
• Для всех наборов
плагинов (DB, Web UI,
SOA) поддерживаются
(основа языка):
– Переменные
– Контексты переменных
– Параметризированные
методы (фреймы)
– Импорты
– Groovy скриптинг в
атрибутах и в отдельном
теге
– Возможность делать assert

– Теги iterate, if, resource
– Теги before, after
– Возможность наследования и
переопределения фреймов и
любых элементов с атрибутом ref
– Самотестирование (expected)
– Интеграция с документацией
(тегирование, иерархичное
разбиение на папки и файлы,
атрибуты @since, тег bdd)
– 2 стандартных отчёта по
умолчанию с отдельными
артифактами для каждого тега
– Система логгирования, для
каждого теста и тест кейса – свой
лог

26
Web UI
• Набор тегов/плагинов для
всех базовых элементов
• Тег webelement
поддерживает различные
действия и локаторы
– Id, subId, Xpath, CSSSelector,
tagName
– Проверить, что элемент
существует
– Считать атрибут или текст
– Осуществить действие с
элементом (нажать и т.д.)

• Работа с JavaScript
• Screenshot/Snapshot/Vi
deo
• По сути – обёртка над
возможностями
Selenium/WebDriver
– Работа с мышью
– Асинхронный JS
– WaitFor

27
Возможности отчётов
• Вся информация о всех
тестах в одном месте
• Фильтрация, тегирование
• Доступ к описаниям,
исходному коду
• Доступ ко всем артифактам –
логи, скриншоты и т.д.
• Возможность получить
понятную пользователю
информацию об исключении
• Навигирование по иерархии
тестов

• Отчёт в формате BDD
• По наведении на
конкретный элемент
дерева – виден исходный
код этого участка
• Можно использовать
русский язык
• Нет непонятных
исключений, названий
классов, методов
• Выделение цветом

28
Интеграция с JUnit

29
Самотестирование, DDT

30
Самотестирование, DDT

31
Как это сделано?
• Процессы: 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,
автотестирование,
тестирование собой
своих же отчётов
32
Другие фишки
• Все плагины и инклюды
– maven проекты =>
могут быть помещены в
nexus репозитории –
приватные и публичные
• Thread saved
• Плагины автоматически
обнаруживаются в
classpath

• Загрузка данных из
ресурсов, хранилищ
данных, помещение
по ключам в контекст
теста
• Разделение логов по
тест кейсам, тестам
• Public API, Java Docs

33
Планы на будущее
• 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

34
Дополнительная информация
• http://jazzteam.org/ru/products/xml2selenium-testautomation-platform
• http://jazzteam.org/ru/products/xml2selenium-testautomation-platform/why-xml-dsl-platform-required
• Доклад на конференции Solit-2013 Создание продукта
для автоматизации тестировании. Что нужно
учитывать, чтобы создать технологическую
платформу. Разбор конкретного примера – продукта
XML2Selenium
• Доклад на конференции Solit-2013 Эволюция
тестирования на Selenium

35
Спасибо за внимание!
• zmicer@jazzteam.org
• http://www.Zmicer.com
• Skype: dzmitry_harachka

36

More Related Content

Расширяемая платформа для создания и управления автоматизированными тестами на основе технологий Java и Selenium

  • 1. Горячко Дмитрий Расширяемая платформа для создания и управления автоматизированными тестами на основе технологии Java.
  • 2. Прежде чем начать Продукт создаётся java разработчиками и архитекторами с использованием опыта нескольких Java автоматизаторов со стажем, адресуя задачи, которые возникали перед компанией на многих реальных проектах О себе: профессиональный Java разработчик с 10 летним стажем, докладчик различных беларуских конференций на тему инженерии ПО, основатель и руководитель Agile Java Development компании JazzTeam, имею хороший опыт в автоматизации тестирования (принимал участие в работе над платформой по автоматизации тестирования одной из успешных SOA платформ http://sopera.com и др.), являюсь организатором "Первой в Беларуси Региональной IT Конференции Solit" http://solit.iSoligorsk.org, а также коммитером Eclipse Open Source сообщества. 2
  • 3. Эта презентация • Рассказ о платформе, мотивации и возможностях для конечного пользователя • Рассказ об особенностях разработки платформы, что может вдохновить Вас на использование наших идей Ваш feedback очень важен  3
  • 4. Как это выглядит? • Тесты пишутся на XML • Пользователь работает с отчётами 4
  • 5. Demo доступ • Jenkins http://dev.jazzteam.org:8080 • Username x2sdemo, password x2sdemo • Выберите последний билд и перейдите по ссылке “Build Artifacts”, или сразу используйте прямую ссылку для доступа к отчётам http://dev.jazzteam.org:8080/job/xml2selenium-reportssmoketestcases_master/57/artifact/xml2seleniumreports-manualsmoke-testcases/target/xml2selenium/ • Слева в отчётах доступны ссылки на исходный код тест кейсов и тестов 5
  • 6. Почему мы работаем над этим • В большом количестве проектов, где мы участвовали, как java разработчики, мы наталкивались на схожие проблемы – Управление Web UI Selenium тестами со стороны менеджмента (Индия) – Создание поддерживаемых, читаемых Web UI тестов (Голландия) – Рефакторинг, ООП, повторное использование Selenium тестов (Германия, Беларусь) – Взаимодействие между разработчиками и автоматизаторами (Россия) • Более подробное обоснование http://jazzteam.org/ru/products/xml2selenium-test-automationplatform/why-xml-dsl-platform-required • Связки Selenium + Concordion, Fitnesse = по прежнему нужно создавать fixtures 6
  • 7. Как всё устроено • Автоматизаторы создают тесты на XML, разбивая их по папкам и файлам – Запускают их локально через IDE или через Maven, проверяют, всё ли работает • XML > Version Control System > Jenkins Job through trigger > XML2Selenium reports in build artifacts 7
  • 9. Business report: теги, фильтры, папки 9
  • 11. BDD report: для менеджеров 11
  • 12. BDD report: bdd плагин 12
  • 13. BDD report: различные комбинации 13
  • 17. Примеры XML Импорты, теги, наследование, считать значение в переменную, JVM параметры 17
  • 18. Примеры XML Groovy scripting, Java Script, общий контекст между XML и JS 18
  • 20. Примеры XML Before, After, самотестирование 20
  • 22. Примеры XML Работа с фреймами и наследованием 22
  • 23. Почему платформа? • Название XML2Selenium говорит только о Web UI/Mobile составляющей возможностей платформы • Нет зависимости от jenkins, junit, можно создавать свои раннеры в разных runtimes (cloud, Servlets, метод main, OSGI) • Нет зависимости от Selenium, различные наборы плагинов реализуют различные функции 23
  • 24. Бизнес-преимущества • Низкая стоимость создания тестов • Интеграция с документацией (@since, @version, @ready) • Встроенные возможности управления • Тесты получаются поддерживаемыми и читаемыми • Повышается reusability • Инклюды и плагины позволяют генерализировать и накапливать опыт • Встроенные BDD/DDT 24
  • 25. XML DSL • Все теги – плагины (точки расширения, события) • Все репорты – плагины • Зависимость от junit, web driver - плагин 25
  • 26. XML DSL • Для всех наборов плагинов (DB, Web UI, SOA) поддерживаются (основа языка): – Переменные – Контексты переменных – Параметризированные методы (фреймы) – Импорты – Groovy скриптинг в атрибутах и в отдельном теге – Возможность делать assert – Теги iterate, if, resource – Теги before, after – Возможность наследования и переопределения фреймов и любых элементов с атрибутом ref – Самотестирование (expected) – Интеграция с документацией (тегирование, иерархичное разбиение на папки и файлы, атрибуты @since, тег bdd) – 2 стандартных отчёта по умолчанию с отдельными артифактами для каждого тега – Система логгирования, для каждого теста и тест кейса – свой лог 26
  • 27. Web UI • Набор тегов/плагинов для всех базовых элементов • Тег webelement поддерживает различные действия и локаторы – Id, subId, Xpath, CSSSelector, tagName – Проверить, что элемент существует – Считать атрибут или текст – Осуществить действие с элементом (нажать и т.д.) • Работа с JavaScript • Screenshot/Snapshot/Vi deo • По сути – обёртка над возможностями Selenium/WebDriver – Работа с мышью – Асинхронный JS – WaitFor 27
  • 28. Возможности отчётов • Вся информация о всех тестах в одном месте • Фильтрация, тегирование • Доступ к описаниям, исходному коду • Доступ ко всем артифактам – логи, скриншоты и т.д. • Возможность получить понятную пользователю информацию об исключении • Навигирование по иерархии тестов • Отчёт в формате BDD • По наведении на конкретный элемент дерева – виден исходный код этого участка • Можно использовать русский язык • Нет непонятных исключений, названий классов, методов • Выделение цветом 28
  • 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, автотестирование, тестирование собой своих же отчётов 32
  • 33. Другие фишки • Все плагины и инклюды – maven проекты => могут быть помещены в nexus репозитории – приватные и публичные • Thread saved • Плагины автоматически обнаруживаются в classpath • Загрузка данных из ресурсов, хранилищ данных, помещение по ключам в контекст теста • Разделение логов по тест кейсам, тестам • Public API, Java Docs 33
  • 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 34
  • 35. Дополнительная информация • http://jazzteam.org/ru/products/xml2selenium-testautomation-platform • http://jazzteam.org/ru/products/xml2selenium-testautomation-platform/why-xml-dsl-platform-required • Доклад на конференции Solit-2013 Создание продукта для автоматизации тестировании. Что нужно учитывать, чтобы создать технологическую платформу. Разбор конкретного примера – продукта XML2Selenium • Доклад на конференции Solit-2013 Эволюция тестирования на Selenium 35
  • 36. Спасибо за внимание! • zmicer@jazzteam.org • http://www.Zmicer.com • Skype: dzmitry_harachka 36