Тестирование переходов и состояний
Это техника тест-дизайна, которая моделирует поведение системы как набор состояний, событий и переходов между ними. Идеально подходит для тестирования функциональности, где объект меняет свой статус (например, заказ, пользовательский аккаунт, документ).
Ключевые элементы:
- Состояния (States): Устойчивые положения, в которых может находиться объект ("Новый", "Оплачен", "Отменен").
- События (Events): Действия, которые вызывают смену состояния ("Оплатить", "Отменить").
- Переходы (Transitions): "Путь" из одного состояния в другое, вызванный событием.
- Действия (Actions): Что система делает в момент перехода ("Отправить email", "Создать счет").
Алгоритм применения:
- Определить все возможные состояния системы.
- Определить события, которые могут происходить в каждом состоянии.
- Построить диаграмму, соединив состояния стрелками-переходами.
- На основе диаграммы написать тесты, покрывающие:
- Все состояния (каждый тест "посещает" хотя бы одно уникальное состояние).
- Все переходы (каждый тест проверяет один уникальный переход). Это самый частый критерий.
- Невалидные переходы (попытки выполнить событие в неподходящем состоянии).
Пример 1: Жизненный цикл заказа в магазине
Кликайте на состояния (прямоугольники) и переходы (подписи к стрелкам), чтобы увидеть описание.
Создан
Оплачен
Отправлен
Доставлен
Отменен
Оплатить
Отправить
Доставить
Отменить
Отменить
Информация
Выберите элемент на диаграмме, чтобы узнать о нем больше.
Тест-кейсы к примеру
- Тест-кейс 1 (Happy Path): Путь: Создан → Оплачен → Отправлен → Доставлен. Описание: Проверка полного успешного жизненного цикла заказа.
- Тест-кейс 2 (Отмена до оплаты): Путь: Создан → Отменен. Описание: Пользователь создает, а затем сразу отменяет заказ.
- Тест-кейс 3 (Отмена после оплаты): Путь: Создан → Оплачен → Отменен. Описание: Пользователь оплачивает заказ, но отменяет его до отправки.
- Тест-кейс 4 (Негативный): Переход: Создан → Отправить. Описание: Попытка отправить неоплаченный заказ. Ожидание: Ошибка, статус заказа не изменился.
- Тест-кейс 5 (Негативный): Переход: Отменен → Оплатить. Описание: Попытка оплатить ранее отмененный заказ. Ожидание: Ошибка, статус заказа не изменился.
Пример 2: Аутентификация пользователя
Кликайте на состояния и переходы, чтобы увидеть описание.
Не в системе
Ожидает код
В системе
Заблокирован
Ввести номер
Верный код
Неверный код (x3)
Выйти
Тайм-аут
Информация
Выберите элемент на диаграмме, чтобы узнать о нем больше.
Тест-кейсы к примеру
- Тест-кейс 6 (Happy Path): Путь: Не в системе → Ожидает код → В системе → Не в системе. Описание: Успешный вход и последующий выход.
- Тест-кейс 7 (Блокировка): Путь: Не в системе → Ожидает код → ... (3 неверных кода) → Заблокирован. Описание: Ввод неверного кода 3 раза приводит к блокировке.
- Тест-кейс 8 (Разблокировка): Путь: ... → Заблокирован → Не в системе. Описание: Проверка автоматического снятия блокировки по истечении времени.
- Тест-кейс 9 (Негативный): Состояние: Не в системе. Событие: Ввести код. Описание: Попытка ввести код, не запросив его. Ожидание: Ошибка, состояние не изменилось.