Интерактивная шпаргалка: Диаграмма Переходов и Состояний

Визуализируйте поведение системы и стройте тесты на основе её жизненного цикла.

Тестирование переходов и состояний

Это техника тест-дизайна, которая моделирует поведение системы как набор состояний, событий и переходов между ними. Идеально подходит для тестирования функциональности, где объект меняет свой статус (например, заказ, пользовательский аккаунт, документ).


Ключевые элементы:

  • Состояния (States): Устойчивые положения, в которых может находиться объект ("Новый", "Оплачен", "Отменен").
  • События (Events): Действия, которые вызывают смену состояния ("Оплатить", "Отменить").
  • Переходы (Transitions): "Путь" из одного состояния в другое, вызванный событием.
  • Действия (Actions): Что система делает в момент перехода ("Отправить email", "Создать счет").

Алгоритм применения:

  1. Определить все возможные состояния системы.
  2. Определить события, которые могут происходить в каждом состоянии.
  3. Построить диаграмму, соединив состояния стрелками-переходами.
  4. На основе диаграммы написать тесты, покрывающие:
    • Все состояния (каждый тест "посещает" хотя бы одно уникальное состояние).
    • Все переходы (каждый тест проверяет один уникальный переход). Это самый частый критерий.
    • Невалидные переходы (попытки выполнить событие в неподходящем состоянии).

Пример 1: Жизненный цикл заказа в магазине

Кликайте на состояния (прямоугольники) и переходы (подписи к стрелкам), чтобы увидеть описание.

Создан
Оплачен
Отправлен
Доставлен
Отменен
Оплатить
Отправить
Доставить
Отменить
Отменить
Информация

Выберите элемент на диаграмме, чтобы узнать о нем больше.

Тест-кейсы к примеру

  • Тест-кейс 1 (Happy Path): Путь: Создан → Оплачен → Отправлен → Доставлен. Описание: Проверка полного успешного жизненного цикла заказа.
  • Тест-кейс 2 (Отмена до оплаты): Путь: Создан → Отменен. Описание: Пользователь создает, а затем сразу отменяет заказ.
  • Тест-кейс 3 (Отмена после оплаты): Путь: Создан → Оплачен → Отменен. Описание: Пользователь оплачивает заказ, но отменяет его до отправки.
  • Тест-кейс 4 (Негативный): Переход: Создан → Отправить. Описание: Попытка отправить неоплаченный заказ. Ожидание: Ошибка, статус заказа не изменился.
  • Тест-кейс 5 (Негативный): Переход: Отменен → Оплатить. Описание: Попытка оплатить ранее отмененный заказ. Ожидание: Ошибка, статус заказа не изменился.

Пример 2: Аутентификация пользователя

Кликайте на состояния и переходы, чтобы увидеть описание.

Не в системе
Ожидает код
В системе
Заблокирован
Ввести номер
Верный код
Неверный код (x3)
Выйти
Тайм-аут
Информация

Выберите элемент на диаграмме, чтобы узнать о нем больше.

Тест-кейсы к примеру

  • Тест-кейс 6 (Happy Path): Путь: Не в системе → Ожидает код → В системе → Не в системе. Описание: Успешный вход и последующий выход.
  • Тест-кейс 7 (Блокировка): Путь: Не в системе → Ожидает код → ... (3 неверных кода) → Заблокирован. Описание: Ввод неверного кода 3 раза приводит к блокировке.
  • Тест-кейс 8 (Разблокировка): Путь: ... → Заблокирован → Не в системе. Описание: Проверка автоматического снятия блокировки по истечении времени.
  • Тест-кейс 9 (Негативный): Состояние: Не в системе. Событие: Ввести код. Описание: Попытка ввести код, не запросив его. Ожидание: Ошибка, состояние не изменилось.