Ответ
Given-When-Then (GWT) — это шаблон для структурирования тестовых сценариев, особенно в Behavior-Driven Development (BDD). Он делает тесты читаемыми и связывает их с бизнес-требованиями.
- Given (Дано) — описывает начальное состояние системы или контекст.
- When (Когда) — описывает действие или событие, которое выполняется.
- Then (Тогда) — описывает ожидаемый результат или изменение состояния.
Пример на Java с Cucumber:
// Файл .feature (спецификация на естественном языке)
Feature: User Login
Scenario: Successful login with valid credentials
Given the user is on the login page
When the user enters valid username and password
Then the user is redirected to the home page
// Step Definitions (реализация шагов)
public class LoginSteps {
@Given("the user is on the login page")
public void userIsOnLoginPage() {
driver.get("https://app.com/login");
}
@When("the user enters valid username and password")
public void userEntersCredentials() {
page.enterCredentials("testUser", "securePass123");
page.clickLogin();
}
@Then("the user is redirected to the home page")
public void userIsOnHomePage() {
assertTrue(homePage.isDisplayed());
assertEquals("Welcome, testUser", homePage.getWelcomeMessage());
}
}
Преимущества подхода:
- Читаемость: Сценарии понятны разработчикам, тестировщикам и бизнес-аналитикам.
- Структура: Четкое разделение на предусловия, действия и проверки.
- Документация: Файлы
.featureслужат живой документацией системы. - Переиспользование: Шаги (Steps) можно комбинировать для создания новых сценариев.