Serenity BDD (ранее Thucydides) — это мощная open-source библиотека, улучшающая BDD за счёт исключительных возможностей отчётности и живой документации. По данным JVM Ecosystem Report 2024 от JRebel, BDD-фреймворки используют 34% Java-команд, а Cucumber — самый популярный из них. Serenity расширяет Cucumber и JBehave понятными для заказчиков HTML-отчётами, полной историей скриншотов и трассировкой требований — превращая сырые результаты тестов в документацию, которую владелец продукта может читать без технических знаний. Паттерн Screenplay, альтернатива Page Objects в Serenity, решает проблемы поддерживаемости, делающие большие Selenium-наборы хрупкими со временем. По данным кейс-стади Serenity, команды, перешедшие на Screenplay, сообщают о сокращении времени на поддержку тестов на 40-60% благодаря лучшему разделению ответственности между целями пользователей и UI-взаимодействиями. Это руководство охватывает интеграцию Serenity с BDD-фреймворками, архитектуру паттерна Screenplay и возможности отчётности.

TL;DR

  • Serenity BDD оборачивает Cucumber/JBehave богатыми HTML-отчётами, историей скриншотов и трассировкой требований
  • Паттерн Screenplay заменяет хрупкие Page Objects актёро-ориентированными Tasks, Actions и Questions
  • Интегрируется с JUnit 5, TestNG, Maven и Gradle — без отдельного сервера отчётов
  • Живая документация позволяет нетехническим заинтересованным сторонам читать результаты тестов как простой текст

Лучше всего для: Java-команд, практикующих BDD и нуждающихся в отчётах, понятных заказчикам Пропусти если: Ты не используешь BDD/Gherkin или предпочитаешь лёгкие инструменты вроде Allure

Введение в Serenity BDD

«Настоящая ценность Serenity — не просто отчёты, а паттерн Screenplay. Когда я вижу команды, пишущие 500-строчные Page Objects с десятками методов, я знаю, что затраты на поддержку скоро взлетят. Screenplay заставляет думать в терминах того, что пользователи реально делают, а не какие кнопки есть на странице — это даёт тестовый код, который переживает редизайн UI куда лучше.» — Yuri Kan, Senior QA Lead

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

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

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

<!-- pom.xml -->
<dependencies>
    <dependency>
        <groupId>net.serenity-bdd</groupId>
 (как обсуждается в [Gauge Framework Guide: Language-Independent BDD Alternative to Cucumber](/ru/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 предоставляет непревзойденное решение, которое устраняет разрыв между техническим тестированием и пониманием бизнеса.

FAQ

Что такое Serenity BDD и чем он отличается от обычного Cucumber?

Serenity BDD — это open-source слой отчётности и документации поверх Cucumber, JBehave или JUnit/TestNG. Пока Cucumber запускает Gherkin-сценарии, Serenity добавляет богатые HTML-отчёты со скриншотами, историей шагов, трассировкой требований и паттерном Screenplay. Результат — живая документация, которую нетехнические заинтересованные стороны могут читать самостоятельно.

Поддерживает ли Serenity BDD Playwright или только Selenium?

Serenity BDD поддерживает Selenium WebDriver нативно через serenity-webdriver. Поддержка Playwright доступна через сторонние адаптеры, но не является официальной. Для чистых Playwright-проектов лучше подойдёт Allure или встроенный репортёр Playwright.

Что такое паттерн Screenplay в Serenity BDD?

Screenplay — это актёро-ориентированный паттерн, где тесты описываются как взаимодействия, выполняемые Актёрами с помощью Способностей. Вместо Page Objects создаются Tasks (цели пользователя), Actions (UI-взаимодействия) и Questions (проверки состояния). По данным документации Serenity BDD, команды, принявшие Screenplay, сообщают о значительном снижении затрат на поддержку тестов.

Serenity BDD бесплатен для коммерческого использования?

Да, Serenity BDD полностью open-source под лицензией Apache 2.0. Ядро, поддержка Screenplay, интеграция с Cucumber/JBehave и HTML-отчёты — всё бесплатно. Serenity/JS (JavaScript-порт) также open-source.

Официальные ресурсы

See Also