Хабрахабр

Allure-framework. Часть 1

На просторах интернета не так много исчерпывающей русскоязычной информации по второй версии Allure, не говоря уже о проблемах с официальной документацией. Мы решили заполнить данный пробел и написать серию статей, которая поможет читателям детальнее разобраться с богатым функционалом фреймворка.

Allure-framework успешно применяется в работе автоматизатора функционального тестирования в программе ЕФС и значительно упрощает разбор результатов тестовых прогонов.

Также мы рассмотрим сборку самого отчета – как на локальной машине, так и с помощью Jenkins. В нашей первой статье мы расскажем, что такое Allure, для чего он нужен и как его подключить к вашему проекту. И проведем обзор всех страниц отчета.
Поехали!

Немного общего

Каждый ИТ-специалист, который сталкивался с автоматизацией тестирования, скорее всего разбирал результаты тестовых прогонов. Чем больше вы автоматизируете регрессионную модель, тем больше автотестов появляется в вашем проекте, следовательно, вы или ваш коллега из функционального тестирования тратите больше времени на анализ отчетов.

Это гибкий и легкий инструмент, который позволяет получить не только краткую информацию о ходе выполнения тестов, но и предоставляет всем участникам производственного процесса максимум полезной информации из повседневного выполнения автоматизированных тестов. Allure Framework – популярный инструмент построения отчётов автотестов, упрощающий их анализ.

Также к отчету могут быть прикреплены логи, обозначены тестовые шаги, добавлены вложения с разнообразным контентом, получена информация о таймингах и времени выполнения тестов. Разработчикам и тестировщикам использование отчетов Allure позволяет сократить жизненный цикл дефекта: падения тестов могут быть разделены на дефекты продукта и дефекты самого теста, что сокращает затраты времени на анализ дефекта и его устранение. Кроме того, Allure-отчеты поддерживают взаимодействие с системами непрерывной интеграции и баг-трекинговыми системами, что позволяет всегда держать под рукой нужную информацию о прохождении тестов и дефектах.

Тест-менеджерам Allure дает общее представление о работоспособности проекта, позволяет понять, какие фичи проекта покрыты тестами, как сгруппированы дефекты, каков общий тренд качества проекта.

Образец отчета вы можете посмотреть по ссылке. После формирования Allure-отчет представляет собой удобочитаемый интерактивный HTML–документ, который может быть сохранен либо отправлен по почте.

Подключение Allure к Maven-проекту

Для того чтобы получить информацию о выполнении автотеста, из которой потом будет сформирован информативный Allure–отчет, необходимо к проекту с автотестами подключить адаптер. Во время выполнения тестов адаптер соберет всю необходимую информацию: время начала теста, время его окончания, с какой ошибкой тест упал и т.д. После прохождения каждого теста адаптер соберет все данные и агрегирует их в .json файлы и файлы ресурсов. Из множества таких файлов в дальнейшем и будет сформирован сам отчет.

Рассмотрим некоторые из них. Для разных тестовых фреймворков вам потребуются разные адаптеры.

Allure-Junit4

Данный адаптер позволяет собирать информацию из тестов, разработанных с использованием фреймворка Junit4. Для подключения адаптера необходимо модифицировать pom.xml вашего проекта. В секцию properties добавляем:

<properties> ... <maven-surefire-plugin.version>2.20.1</maven-surefire-plugin.version> <aspectj.version>1.8.10</aspectj.version> <allure-junit4.version>2.6.0</allure-junit4.version> ...
</properties>

В секцию dependencies добавляем:

<dependencies> ... <dependency> <groupId>io.qameta.allure</groupId> <artifactId>allure-junit4</artifactId> <version>$</version> </dependency> ...
</dependencies>

Также необходимо модифицировать (или создать) секцию build следующим образом:

<build> <plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>${maven-surefire-plugin.version}</version> <configuration> <testFailureIgnore>false</testFailureIgnore> <argLine>-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"</argLine> <properties> <property> <name>listener</name> <value>io.qameta.allure.junit4.AllureJunit4</value> </property> </properties> <systemProperties> <property> <name>allure.results.directory</name> <value>${project.build.directory}/allure-results</value> </property> </systemProperties> </configuration> <dependencies> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${aspectj.version}</version> </dependency> </dependencies> </plugin> ... </plugins>
</build>

Allure-Junit5

Данный адаптер позволяет собирать информацию из тестов, разработанных на Junit5. Для подключения адаптера необходимо модифицировать pom.xml вашего проекта. В секцию properties добавляем:

<properties> ... <maven-surefire-plugin.version>2.19.1</maven-surefire-plugin.version> <junit-platform-surefire-provider.version>1.1.0</junit-platform-surefire-provider.version> <aspectj.version>1.8.10</aspectj.version> <allure-junit5.version>2.6.0</allure-junit5.version> ...
</properties>

В секцию dependencies добавляем:

<dependencies> ... <dependency> <groupId>io.qameta.allure</groupId> <artifactId>allure-junit5</artifactId> <version>${allure-junit5.version}</version> </dependency> ...
</dependencies>

Также необходимо модифицировать (или создать) секцию build следующим образом:

<build> <plugins> ... <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>${maven-surefire-plugin.version}</version> <configuration> <testFailureIgnore>false</testFailureIgnore> <argLine> -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar" </argLine> <systemProperties> <property> <name>junit.jupiter.extensions.autodetection.enabled</name> <value>true</value> </property> <property> <name>allure.results.directory</name> <value>${project.build.directory}/allure-results</value> </property> </systemProperties> </configuration> <dependencies> <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-surefire-provider</artifactId> <version>${junit-platform-surefire-provider.version}</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${aspectj.version}</version> </dependency> </dependencies> </plugin> ... </plugins>
</build>

20 и проблем запуска на Java 9 разработчики Junit5 рекомендуют использовать Surefire версии 2. Примечание
Из-за утечки памяти в Surefire 2. 1.
19.

Allure-Testng

Данный адаптер позволяет собирать информацию из тестов разработанных на TestNG. Для подключения адаптера необходимо модифицировать pom.xml вашего проекта. В секцию properties добавляем:

<properties> ... <maven-surefire-plugin.version>2.20.1</maven-surefire-plugin.version> <aspectj.version>1.8.10</aspectj.version> <allure-testng.version>2.6.0</allure-testng.version> ...
</properties>

В секцию dependencies добавляем:

<dependencies> ... <dependency> <groupId>io.qameta.allure</groupId> <artifactId>allure-testng</artifactId> <version>${allure-testng.version}</version> </dependency> ...
</dependencies>

Также необходимо модифицировать (или создать) секцию build следующим образом:

<build> <plugins> ... <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>${maven-surefire-plugin.version}</version> <configuration> <argLine>-javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar"</argLine> <systemProperties> <property> <name>allure.results.directory</name> <value>${project.build.directory}/allure-results</value> </property> </systemProperties> </configuration> <dependencies> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${aspectj.version}</version> </dependency> </dependencies> </plugin> ... </plugins>
</build>

Получение исходных файлов для сборки html-отчета

Исходные файлы представляют собой множество JSON-файлов с результатами тестов, а также файлов некоторых других типов (файлы вложений с разнообразными расширениями, .properties и др). Данные файлы будут автоматически генерироваться после прогона ваших автотестов (в нашем примере в директории target/allure-results). Затем из этих файлов необходимо собрать удобный для чтения html-отчет.

Сборка html-отчета на локальной машине

Для сборки html–отчета необходима утилита, которая называется allure–commandline. Получить отчет можно несколькими способами:

Скачать последнюю версию allure–commandline по ссылке; Способ 1:
1.

Распаковать архив; 2.

Добавить путь до директории bin из распакованного архива в системную переменную окружения. 3.

Чтобы убедиться в корректности установки, выполните в командной строке команду

allure --version

Должно появиться сообщение вида:

6. $ allure --version
2. 0

После установки allure–commandline откройте в проводнике папку с исходными для построения отчета файлами (в нашем примере target/allure-results) и в окне команд (терминале) выполните команду

allure serve

После этого должен сформироваться сам html–отчет, который откроется в браузере по умолчанию автоматически.

Добавить в pom.xml вашего проекта allure-maven плагин. Способ 2 (рекомендуемый):
1. Для этого модифицируем секцию build следующим образом:

<build> <plugins> ... <plugin> <groupId>io.qameta.allure</groupId> <artifactId>allure-maven</artifactId> <version>2.9</version> <configuration> <reportVersion>2.6.0</reportVersion> </configuration> </plugin> ... </plugins>
</build>

2. Убедиться, что автотесты, по которым вы хотите получить отчет, уже выполнены (прогнать тесты можно командой mvn clean test) и в папке «target» вашего проекта присутствует «allure-results» с исходными для построения отчета файлами.

Выполнить команду 3.

mvn allure:serve

После этого должен сформироваться сам html–отчет, который автоматически откроется в браузере.

Сборка html-отчета на Jenkins

Для сборки html–отчета на Jenkins необходимо установить Allure Plugin для вашего Jenkins (на данном этапе Jenkins должен быть уже развернут, настроен Job, прогоняющий ваши тесты, а результаты прогонов должны складываться в Workspace вашего Job).

Установка Allure plugin:

Перейти в Manage Jenkins → Manage Plugins
2. 1. В поле filter набрать Allure plugin
4. Перейти на вкладку Available
3. Отметить чекбокс найденного Allure plugin и нажать Install without restart

Установка Allure Commandline:

Перейти в Manage Jenkins → Global Tool Configuration
2. Рассмотрим вариант установки Allure Commandline на машине, имеющей доступ к Maven central.
1. В поле Name вписать наименование Allure Commandline, например, Allure 2. В блоке Allure Commandline нажать кнопку Add Allure Commandline
3. 0
4. 6. 6. Выбрать версию библиотеки, которая будет выкачана из Maven central, например, 2. Нажать кнопку Save 0
5.

Конфигурация Job для сборки отчета:

Перейти в конфигурацию своей Job
2. 1. В поле Results указать путь до директории «allure-results» с исходными для построения отчета файлами: target/allure-results
4. В разделе Post-build Actions нажать кнопку Add post-build action → Allure Report
3. Нажать кнопку Save

После ее выполнения в блоке Build History напротив номера сборки появится значок Allure, кликнув по которому, вы увидите сформированный html-отчет: После выполнения всех настроек запустите свою джобу.

Краткий обзор страниц отчета

1. Страница «Overview».

Она имеет блочную структуру. Overview является главной страницей Allure-отчета. Рассмотрим блоки, присутствующие на главной странице по умолчанию:

Блок ALLURE REPORT. 1. Включает в себя дату и время прохождения теста, общее количество прогнанных кейсов, а также диаграмму с указанием процента и количества успешных, упавших и сломавшихся в процессе выполнения тестов.

Блок TREND. 2. Показывает тренд прохождения тестов от сборки к сборке.

Блок SUITES. 3. В данном случае тесты были распределены по пакетам. Показывает распределение результатов тестов по тестовым наборам.

Блок ENVIRONMENT. 4. Данная информация попадает в отчет из специального файла, расположенного в проекте. Показывает тестовое окружение, на котором запускались тесты.

Блок CATEGORIES. 5. Показывает распределение неуспешно прошедших тестов по видам дефектов.

Блок FEATURES BY STORIES. 6. Показывает распределение тестов по функционалу, который они проверяют.

Блок EXECUTORS. 7. Если выполнение производилось на инструменте CI (например, на Jenkins), то будет предоставлена информация о джобе и номере сборки. Показывает исполнителя текущей сборки.

Страница «Categories». 2.

Данная страница предоставляет информацио о распределении дефектов по их видам.

Страница «Suites». 3.

На данной странице представляется стандартное распределение выполнявшихся тестов по тестовым наборам или классам, в которых находятся тестовые методы.

Страница «Graphs». 4.

На этой странице можно получить информацию о тестовом прогоне в графическом виде: статус прогона, распределение тестов по их критичности, длительности прохождения, перезапусках, категориях дефектах и так далее.

Страница «Timeline». 5.

В случае запуска тестов в параллельном режиме:

Данная страница визуализирует временные рамки прохождения каждого теста.

Страница «Behaviors». 6.

На данной странице тесты сгруппированы по проверяемому функционалу (Epic, Feature, Story).

Страница «Packages». 7.

На этой странице тесты сгруппированы по пакетам, в которых лежат тестовые классы.

Заключение

Подводя итоги первой статьи, отметим, что мы познакомились с основными возможностями Allure, рассмотрели его подключение к некоторым тестовым фреймворкам, узнали, как собрать отчет по результатам тестового прогона, а также провели обзор всех типовых страниц отчета.

Примечание
Пример кода представлен по ссылке.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть