Репортинг
Репортинг - построение читаемого отчета о результатах выполнения тестов. В отчете прежде всего должна присутствовать информация о:
- Количестве запущенных тестов
- По каждому тесту:
- его название
- название сьюта
- результат
- время выполнения
- сообщение об ошибке, если тест упал
- Количество успешно выполненных тестов
- Количество упавших тестов
- Время выполнения всех тестов
- Дата и время запуска
Эту информацию должен содержать любой отчет о выполнении тестов. Также отчет может содержать дополнительную информацию, полезную для дебаггинга:
- Полный стек трейс, если тест упал
- Последовательность степов (test story) и их результат
- Встроенные скриншоты на каждый степ и/или при падении теста
- Встроенные логи и/или другие attachments (любые текстовы и медиа файлы, включая html dump страницы)
- Значения переменных при DDT
- Значения переменных тестового окружения (версия приложения, браузер и другое)
Кроме этого отчет может содержать отчеты о покрытии требований и другую визуальную информацию:
- Чарты и графики о результатах выполнения тестов
- Чарты и графики о покрытии требований
- Другая визуальная информация сводного характера
Информация о результатах теста получается и сохраняется после запуска тестов тест раннером. Часто это xml файл. Для тестовых фреймворков XUnit xml файл с результатами имеет один и тот же формат, что позволяет инструментам, строящим визуализированный отчет (чаще всего html), работать с ним единообразно.
Таким образом информация о результатах прохождения тестов собирается и сохраняется при запуске тестов, но визулизироваться может на следующих этапах:
- Сразу после запуска непосредственным тест раннером (например, testng или junit)
- При запуске билд инструментом (surefire plugin для maven)
- При запуске через CI (соотвествующие плагины)
- Отдельный инструмент для генерации отчета (вручную)
Кроме того, если набор информации, которую собирает тест раннер, вам кажется неполным, то можно использовать различные test report фреймворки, которые собирает больше информации и строят более красивые и полные отчеты либо создать такой инструмент самому. Как правило, такие инструменты состоят из 3 компонентов:
- Адаптер для тест раннера (listener). Этот модуль подключается к тест раннеру (непосредственному или встроенному в билд инструмент) и собирает информацию о выполнении тестов независимо от встроенного в тест раннер механизма.
- Модель - это информация о формате хранения собранной информации о выполнении тестов (структура xml файла, например)
- Генератор html репорта на основе имеющейся модели по информации, сохраненной в конкретном xml файле.
Примером такого репорт фреймворка может служить ReportNG, который подключается и работает с TestNG тест раннером. Пример его конфигурации с maven:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.7</version>
<configuration>
<testSourceDirectory>${basedir}/src/main/java/</testSourceDirectory>
<testClassesDirectory>${project.build.directory}/classes/</testClassesDirectory>
<properties>
<property>
<name>usedefaultlisteners</name>
<value>false</value>
</property>
<property>
<name>listener</name>
<value>org.uncommons.reportng.HTMLReporter, org.uncommons.reportng.JUnitXMLReporter</value>
</property>
</properties>
<workingDirectory>${project.basedir}</workingDirectory>
<argLine>-Dmaven.browser</argLine>
</configuration>
</plugin>
</plugins>
</build>
Пример репорта можно увидеть по адресу http://reportng.uncommons.org/sample/index.html Официальный сайт фреймворка http://reportng.uncommons.org/
Минус этого фреймворка заключается в том, что он работает только с TestNG, но не работает с JUnit. Более универсальный фреймворк такого же типа - allure framework разработанный в yandex. Allure framework умеет работать как с TestNG, так и с JUnit. Более того, он может работать с BDD инструментами (Cucumber) и с тест раннерами на других языках (NUnit - С#, pytest - python и другие). Такая универсальность делает его отличным выбором для любого проекта по автоматизации (пожалуй кроме случая с thucydides).
Подключается к maven allure следующим образом:
<build>
plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.16</version>
<configuration>
<testSourceDirectory>${basedir}/src/main/java/</testSourceDirectory>
<testClassesDirectory>${project.build.directory}/classes/</testClassesDirectory>
<testFailureIgnore>false</testFailureIgnore>
<argLine>-javaagent:${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar
</argLine>
<properties>
<property>
<name>listener</name>
<value>ru.yandex.qatools.allure.testng.AllureTestListener</value>
</property>
</properties>
<argLine>-Dmaven.browser</argLine>
</configuration>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>${aspectj.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
Также есть библиотека, предоставляющая дополнительный функционал, призванный сделать репорт еще более читаемым и полным.
<dependency>
<groupId>ru.yandex.qatools.allure</groupId>
<artifactId>allure-testng-adaptor</artifactId>
<version>${allure.version}</version>
</dependency>
А также модуль для генерации html репорта:
<reporting>
<excludeDefaults>true</excludeDefaults>
<plugins>
<plugin>
<groupId>ru.yandex.qatools.allure</groupId>
<artifactId>allure-maven-plugin</artifactId>
<version>LATEST</version>
</plugin>
</plugins>
</reporting>
При такой конфигурации maven проекта достаточно запустить тесты (mvn clean test
), чтобы сгенерировался xml файл в отдельной папке с информацией, собранной allure-testNG адаптером. Команда mvn site
сгенерирует html отчет в папке site. Пример отчета, а также полную документацию и примеры проектом вы найдете на сайте инструмента: http://allure.qatools.ru/