Что такое тестирование по use case?

Тестирование по use case выводит тест-кейсы из документов use case — структурированных описаний того, как акторы взаимодействуют с системой для достижения целей. Каждый use case содержит основной сценарий успеха и альтернативные потоки, предоставляя естественные тестовые сценарии.

Анатомия use case

ЭлементОписаниеПример
НазваниеКраткий описательный заголовок«Оформить заказ»
АкторКто инициирует взаимодействиеКлиент, Администратор
ПредусловиеЧто должно быть истинным перед началомПользователь авторизован, корзина не пуста
Основной потокПошаговый happy path1. Выбрать доставку… 2. Ввести оплату…
Альтернативные потокиОтклонения от основного потока2a. Оплата отклонена → показать ошибку
ПостусловиеЧто истинно после успехаЗаказ создан, email отправлен

Пример: Use Case «Оформить заказ»

Актор: Зарегистрированный клиент Предусловие: Клиент авторизован, корзина содержит 1+ товаров

Основной поток:

  1. Система отображает сводку корзины с товарами и итогом
  2. Клиент выбирает способ доставки
  3. Система рассчитывает стоимость доставки и обновляет итог
  4. Клиент вводит платёжную информацию
  5. Система проверяет данные оплаты
  6. Клиент подтверждает заказ
  7. Система обрабатывает платёж
  8. Система создаёт заказ и отправляет email подтверждения
  9. Система отображает страницу подтверждения заказа

Альтернативные потоки:

  • 2a. Только один способ доставки → система автоматически выбирает его
  • 4a. Клиент выбирает сохранённый способ оплаты → переход к шагу 6
  • 5a. Валидация оплаты не прошла → система показывает ошибку, возврат к шагу 4
  • 7a. Обработка платежа не удалась → система показывает ошибку, предлагает повторить
  • 7b. Таймаут оплаты → система показывает сообщение о таймауте, заказ не создан
  • 8a. Сервис email недоступен → заказ создан, email поставлен в очередь
flowchart TD A[1. Показать корзину] --> B[2. Выбрать доставку] B --> C[3. Рассчитать итог] C --> D[4. Ввести оплату] D --> E[5. Проверить оплату] E -->|Валидно| F[6. Подтвердить заказ] E -->|Невалидно 5a| D F --> G[7. Обработать платёж] G -->|Успех| H[8. Создать заказ + email] G -->|Ошибка 7a| D G -->|Таймаут 7b| I[Показать таймаут] H --> J[9. Показать подтверждение]

Вывод тест-кейсов

Правило: Создать минимум один тест-кейс на каждый поток (основной + каждый альтернативный).

TCПотокОписание
TC1ОсновнойHappy path, все шаги 1-9 успешны
TC22aАвто-выбор доставки
TC34aСохранённый платёж, переход к подтверждению
TC45aНевалидная оплата → ошибка → повтор
TC57aПлатёж не прошёл → предложить повтор
TC67bТаймаут оплаты → заказ не создан
TC78aEmail не доступен → заказ создан, email в очереди

7 тест-кейсов из 1 use case.

Поиск пропущенного покрытия

Use case часто выявляют пробелы тестирования. Задавайте вопросы:

  • Что если корзина опустеет между шагами 1 и 6?
  • Что если цена изменится во время оформления?
  • Как насчёт прав доступа актора?
  • Что происходит после постусловия?

Продвинутое тестирование по use case

Комбинирование потоков

Реальные сценарии часто комбинируют несколько альтернативных потоков последовательно:

TCКомбинированные потокиСценарий
TC85a → ОсновнойНевалидная оплата, повтор с правильными данными → успех
TC97a → 4aПлатёж не прошёл, использовать сохранённый метод → успех
TC105a → 5a → 7aДва невалидных ввода, затем валидный, но карта отклонена

Тестирование use case для API

Сопоставьте use case с последовательностями API-вызовов:

Шаг 1: GET /cart → 200 (сводка корзины)
Шаг 2: PUT /cart/shipping → 200 (выбор доставки)
Шаг 3: GET /cart/total → 200 (пересчитанный итог)
Шаг 4: POST /orders/payment-intent → 200 (инфо об оплате)
Шаг 5: POST /orders/validate → 200 или 400 (валидация)
Шаг 6: POST /orders/confirm → 201 (заказ создан)

Критерии покрытия

Покрытие потоков (минимум): Каждый поток выполнен хотя бы раз. Покрытие шагов: Каждый шаг каждого потока выполнен хотя бы раз. Вариация данных: Тот же поток с разными валидными/невалидными данными (комбинируя с EP/BVA).

Упражнение: Выведите тест-кейсы из use case

Use Case: Сброс пароля

Актор: Зарегистрированный пользователь Предусловие: У пользователя есть аккаунт с подтверждённым email

Основной поток:

  1. Пользователь нажимает «Забыл пароль»
  2. Система показывает форму ввода email
  3. Пользователь вводит зарегистрированный email
  4. Система отправляет ссылку сброса на email
  5. Пользователь кликает по ссылке в течение 24 часов
  6. Система показывает форму нового пароля
  7. Пользователь вводит новый пароль (по политике: 8+ символов, 1 заглавная, 1 цифра)
  8. Система проверяет и сохраняет новый пароль
  9. Система подтверждает смену пароля и отправляет уведомление

Альтернативные потоки:

  • 3a. Email не зарегистрирован → «Если аккаунт существует, письмо отправлено» (безопасность)
  • 5a. Ссылка истекла (>24 ч) → «Ссылка истекла»
  • 5b. Ссылка уже использована → «Ссылка уже использована»
  • 7a. Пароль не соответствует политике → конкретная ошибка
  • 7b. Новый пароль совпадает со старым → «Выберите другой пароль»

Задание: Выведите тест-кейсы для всех потоков. Добавьте 2 дополнительных сценария исключений.

Подсказка

Подумайте: что если пользователь запросит несколько ссылок сброса? Что если аккаунт заблокирован? Как насчёт SQL injection в поле email?

Решение

Тест-кейсы из документированных потоков: 8 тест-кейсов

Дополнительные сценарии исключений:

TCСценарийОжидаемый результат
TC9Несколько запросов сброса → работает только последняя ссылкаПредыдущие ссылки недействительны
TC10Деактивированный аккаунт → запрос сбросаОбщее сообщение (не раскрывать статус)
TC11XSS в поле emailInput очищен, нет выполнения
TC12Запросить сброс, сменить пароль обычным способом, кликнуть ссылкуСсылка должна быть недействительной

Итого: 12 тест-кейсов.

Советы профессионала

  • Каждый альтернативный поток — тест-кейс. Не пропускайте их — альтернативные потоки скрывают большинство дефектов.
  • Проверяйте предусловия. Что происходит, если предусловие НЕ выполнено? Это ещё один тестовый сценарий.
  • Думайте о постусловиях. Проверяйте не только успех действия, но и все побочные эффекты (отправка писем, обновление БД, создание логов).
  • Use case хорошо сочетаются с исследовательским тестированием. Документированные потоки направляют структурированное тестирование; затем исследуйте за пределами документированных путей.
  • Нумеруйте потоки последовательно. «5a» означает «альтернатива на шаге 5, вариант a» — это упрощает трассировку при создании тест-кейсов.