Введение в Serenity BDD

Serenity BDD (ранее Thucydides) — это мощная библиотека с открытым исходным кодом, которая улучшает разработку, ориентированную на поведение, предоставляя исключительные возможности отчетности и живой документации. Построенный поверх популярных BDD (как обсуждается в BDD: From Requirements to Automation) фреймворков, таких как Cucumber и JBehave, Serenity превращает автоматизацию тестирования во всестороннюю, удобную для заинтересованных сторон документацию.

Это руководство исследует интеграцию Serenity с BDD (как обсуждается в Cucumber BDD Automation: Complete Guide to Behavior-Driven Development Testing) фреймворками, паттерн Screenplay для поддерживаемой автоматизации тестов и его ведущие в отрасли возможности отчетности.

Живая Документация: Тесты как Документация

Serenity автоматически генерирует богатые, повествовательные отчеты, которые служат живой документацией поведения вашей системы.

Настройка Проекта

<!-- pom.xml -->
<dependencies>
    <dependency>
        <groupId>net.serenity-bdd</groupId>
 (как обсуждается в [Gauge Framework Guide: Language-Independent BDD Alternative to Cucumber](/blog/gauge-framework-guide))        <artifactId>serenity-core</artifactId>
        <version>4.0.30</version>
    </dependency>
    <dependency>
        <groupId>net.serenity-bdd</groupId>
        <artifactId>serenity-cucumber</artifactId>
        <version>4.0.30</version>
    </dependency>
    <dependency>
        <groupId>net.serenity-bdd</groupId>
        <artifactId>serenity-screenplay</artifactId>
        <version>4.0.30</version>
    </dependency>
</dependencies>

Паттерн Screenplay: Тестирование, Ориентированное на Актеров

Паттерн Screenplay обеспечивает более поддерживаемый и выразительный подход к автоматизации тестирования.

Компоненты Screenplay

// Задачи
public class Login implements Task {
    private final String username;
    private final String password;

    public static Login withCredentials(String username, String password) {
        return new Login(username, password);
    }

    @Override
    @Step("{0} входит с именем пользователя #username")
    public <T extends Actor> void performAs(T actor) {
        actor.attemptsTo(
            Open.browserOn().the(LoginPage.class),
            Enter.theValue(username).into(LoginPage.USERNAME_FIELD),
            Enter.theValue(password).into(LoginPage.PASSWORD_FIELD),
            Click.on(LoginPage.LOGIN_BUTTON)
        );
    }
}

Сравнение Функций Отчетов

ФункцияSerenity BDDCucumber HTMLExtent Reports
Живая ДокументацияОтличнаяБазоваяХорошая
СкриншотыАвтоматическиеРучныеРучные
История ТестовДаНетДа
Трассировка ТребованийДаНетОграниченная
Фильтрация по ТегамПродвинутаяБазоваяХорошая
Метрики ПроизводительностиДаНетОграниченные
Удобство для Заинтересованных СторонОтличноеПлохоеХорошее

Заключение

Serenity BDD возводит разработку, ориентированную на поведение, на новый уровень, превращая тесты во всестороннюю живую документацию. Его бесшовная интеграция с Cucumber и JBehave в сочетании с мощным паттерном Screenplay и богатыми возможностями отчетности делает его отличным выбором для команд, ищущих автоматизацию тестирования, удобную для заинтересованных сторон.

Ключевые преимущества:

  • Живая Документация: Автоматическая генерация повествовательных отчетов
  • Паттерн Screenplay: Поддерживаемый дизайн тестов, ориентированный на актеров
  • Богатые Отчеты: Скриншоты, история и трассировка требований
  • Интеграция с Фреймворками: Работает с Cucumber, JBehave, JUnit
  • Ценность для Заинтересованных Сторон: Отчеты, читаемые для нетехнических специалистов

Для команд, приоритизирующих коммуникацию, отслеживаемость и всестороннюю документацию наряду с автоматизацией тестирования, Serenity BDD предоставляет непревзойденное решение, которое устраняет разрыв между техническим тестированием и пониманием бизнеса.