Swagger-coverage что это и для чего нужно

Swagger-coverage это инструмент для анализа, который нужен для получения картины о “покрытии” регрессионными тестами на основе OAS 2 (Swagger). Говоря о покрытии, имеется ввиду не функциональсть, а именно наличие вызовов с определенными API методами, параметрами и получение всех кодов ответов, которые соответсвуют спецификации тестируемого API. Alt text

Когда это может быть полезно

  • Когда распределенная команда занимается автоматизацией тестирования и нужно получить анализ прогресса автоматизации.
  • При выборе стратегии автоматизации. Например: либо покрывать api методы на которых совсем нет тестов, либо те, где есть частичное покрытие.
  • Для отслеживания добавления новых сущностей(API методы/параметры/и прочее), на которых нет автотестов.

Как работает

Swagger-coverage состоит из двух частей.

  • Фильтры/интерсепторы для клиентов (на данный момент один фильтр для rest-assured). С помощью фильтров собираем всю информацию о ходе выполнения тестов.
  • Консольная приложение. Консольное приложение агрегирует собранную метаинформацию и строит понятный репорт.

Сама архитектура была вдохновленна allure-ом.

Добавление фильтра

Сначала нужно добавить фильтр в клиент. Добавить репозиторий в ваш pom.xml

 <repositories>
        <repository>
            <id>viclovsky</id>
            <url>https://dl.bintray.com/viclovsky/maven/</url>
        </repository>
 </repositories>

А также зависимость для фильтра (rest-assured)

<dependency>
     <groupId>com.github.viclovsky.swagger.coverage</groupId>
     <artifactId>swagger-coverage-rest-assured</artifactId>
     <version>${latest-swagger-coverage-version}</version>
 </dependency>

Для gradle аналогично:

repositories {
    maven { url 'https://dl.bintray.com/viclovsky/maven' }
}

и

compile "com.github.viclovsky.swagger.coverage:swagger-coverage-rest-assured:$latest-swagger-coverage-version"

Далее добавляем фильтр к клиенту:

RestAssured.given().filter(new SwaggerCoverageRestAssured())

Фильтр создаст папку по умолчанию swagger-coverage-output с метаинформацией для построения отчета о покрытии.

Построение отчета

Cкачиваем и распаковываем консольное приложение:

wget https://dl.bintray.com/viclovsky/maven/com/github/viclovsky/swagger/coverage/swagger-coverage-commandline/{latest-swagger-coverage-version}/swagger-coverage-commandline-{latest-swagger-coverage-version}.zip
unzip swagger-coverage-commandline-{latest-swagger-coverage-version}.zip

Далее его можно запускать, например так:

./swagger-coverage-commandline -s swagger.json -i swagger-coverage-output --ignoreHeaders X-Request-Id,X-Some-Header --ignoreNotOkStatusCodes