Назначение
Тест-кейс описывает проверяемый сценарий на языке Given/When/Then (нотация Gherkin). Цель — однозначность: и человек, и автотест понимают, что проверяем и какой результат ожидаем. Бонус BDD: один формат связывает требование, проверку и (при автоматизации) код теста.
Структура: Feature → Scenario → Given (предусловие) → When (действие) → Then (ожидаемый результат). And/But — доп. условия. Один сценарий = одна проверяемая мысль.
Подробный шаблон
Feature: <возможность>
# Краткое описание: зачем эта фича пользователю.
Scenario: <короткое имя проверяемой ситуации>
Given <предусловие — состояние ДО действия>
And <доп. предусловие, если нужно>
When <одно действие пользователя/системы>
Then <наблюдаемый ожидаемый результат>
And <доп. проверка>
Scenario Outline: <проверка на наборе данных>
Given поле суммы
When я ввожу <значение>
Then результат <итог>
Examples:
| значение | итог |
| 0 | ошибка «> 0» |
| 100 | принято |
Пример 1 — happy + край + ошибка
Feature: Автонарезка видео в Shorts
Scenario: Длинное видео успешно нарезается
Given пользователь загрузил видео длительностью 12 минут
When он запускает автонарезку
Then создаётся минимум 3 клипа формата 9:16
And каждый клип содержит русские субтитры
And длительность каждого клипа не превышает 60 секунд
Scenario: Видео короче минимума (край)
Given пользователь загрузил видео длительностью 40 секунд
When он пытается запустить автонарезку
Then показывается подсказка «нужно видео от 1 минуты»
And кнопка «Нарезать» неактивна
Scenario: Сбой обработки (ошибка)
Given видео отправлено на нарезку
When сервис обработки недоступен
Then показывается ошибка с предложением повторить
And исходное видео не удаляется
Пример 2 — авторизация
Feature: Вход в облако
Scenario: Успешный вход
Given зарегистрированный пользователь с верными данными
When он вводит email и пароль и нажимает «Войти»
Then он попадает в свой аккаунт
And его персональное ядро синхронизируется
Scenario: Неверный пароль
Given зарегистрированный пользователь
When он вводит верный email и неверный пароль
Then показывается «неверный email или пароль»
And он остаётся на экране входа
But конкретная причина (email/пароль) не раскрывается (безопасность)
Чек-лист качества
- Один сценарий = одна проверяемая мысль.
- Given/When/Then не смешаны (Given — состояние, When — действие, Then — результат).
- Обычно одно
Whenна сценарий (несколько действий → раздроби). - Результат в
Thenнаблюдаем и однозначен. - Покрыты happy path + края + ошибки.
- Формулировки от пользователя/поведения, не от реализации.
Частые ошибки
- Действие в Given («Given нажимаю кнопку»). → Given — это состояние ДО; действие — в When.
- Несколько действий в одном When. → Раздели на сценарии (иначе непонятно, что сломалось).
- Результат-впечатление («Then всё работает»). → Конкретная наблюдаемая проверка.
- Привязка к реализации («Then запись появляется в таблице users»). → Описывай поведение, видимое пользователю.
- Только happy path. → Края и ошибки — обязательно.