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 BDD | Cucumber HTML | Extent 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.
Официальные ресурсы
- Serenity BDD Documentation — официальные руководства и справочник по Screenplay
- Cucumber Documentation — BDD-фреймворк, который оборачивает Serenity
- Serenity/JS Documentation — JavaScript/TypeScript-порт Serenity BDD
- Test Automation University — бесплатные курсы, включая материалы по Serenity
See Also
- Katalon Studio: Полноценная All-in-One Платформа для Автоматизации Тестирования - Полное руководство по Katalon Studio как all-in-one решению для…
- Allure Framework: Создание Красивых Отчетов о Тестировании - Allure Framework: интерактивные HTML-отчеты, интеграция…
- Автоматизация BDD с Cucumber: Полное Руководство по Тестированию, Ориентированному на Поведение - Всестороннее руководство по автоматизации BDD с Cucumber,…
- Продвинутые Техники Pytest: Мастерство Автоматизации Тестирования на Python - Полное руководство по продвинутым возможностям pytest включая…
