360 likes | 378 Views
u0420u0430u0441u0448u0438u0440u044fu0435u043cu0430u044f u043fu043bu0430u0442u0444u043eu0440u043cu0430 u0434u043bu044f u0441u043eu0437u0434u0430u043du0438u044f u0438 u0443u043fu0440u0430u0432u043bu0435u043du0438u044f u0430u0432u0442u043eu043cu0430u0442u0438u0437u0438u0440u043eu0432u0430u043du043du044bu043cu0438 u0442u0435u0441u0442u0430u043cu0438 u043du0430 u043eu0441u043du043eu0432u0435 u0442u0435u0445u043du043eu043bu043eu0433u0438u0439 Java u0438 Selenium
E N D
Горячко Дмитрий Расширяемая платформа для создания и управления автоматизированными тестами на основе технологии 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-reports- smoketestcases_master/57/artifact/xml2selenium- reports-manualsmoke-testcases/target/xml2selenium/ • Слева в отчётах доступны ссылки на исходный код тест кейсов и тестов 5
Почему мы работаем над этим • В большом количестве проектов, где мы участвовали, как 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 6
Как всё устроено • Автоматизаторы создают тесты на XML, разбивая их по папкам и файлам – Запускают их локально через IDE или через Maven, проверяют, всё ли работает • XML > Version Control System > Jenkins Job through trigger > XML2Selenium reports in build artifacts 7
Примеры 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
Как это сделано? • DSL: XSD, JAXB • Plugins: smth. like eclipse plugins • Plugins repos: nexus • Тестирование: unit tests, автотестирование, тестирование собой своих же отчётов • Процессы: git, gerrit, jenkins, maven, java, agile/scrum, DDT, TDD • Плагинность: reflexion, classpath, classloaders • Репорт: XML + XSLT = static HTML (в данный момент) 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-test- automation-platform • http://jazzteam.org/ru/products/xml2selenium-test- automation-platform/why-xml-dsl-platform-required • Доклад на конференции Solit-2013 Создание продукта для автоматизации тестировании. Что нужно учитывать, чтобы создать технологическую платформу. Разбор конкретного примера – продукта XML2Selenium • Доклад на конференции Solit-2013 Эволюция тестирования на Selenium 35
Спасибо за внимание! • zmicer@jazzteam.org • http://www.Zmicer.com • Skype: dzmitry_harachka 36