Какую технику тест-дизайна следует использовать для проверки логики смены статусов?

«Какую технику тест-дизайна следует использовать для проверки логики смены статусов?» — вопрос из категории Техники тест-дизайна, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для тестирования логических цепочек со сменой статусов оптимально применять Технику тестирования переходов состояний (State Transition Testing).

Суть метода: Система представляется как конечный автомат с набором состояний (статусов). Тестируются корректные и некорректные переходы между ними в ответ на события.

Практический пример (Процесс заказа):

# Пример кода для проверки переходов статусов заказа
class Order:
    def __init__(self):
        self.status = "NEW"
        self.allowed_transitions = {
            "NEW": ["PROCESSING", "CANCELLED"],
            "PROCESSING": ["SHIPPED", "CANCELLED"],
            "SHIPPED": ["DELIVERED"],
            "DELIVERED": [],
            "CANCELLED": []
        }

    def change_status(self, new_status):
        if new_status in self.allowed_transitions[self.status]:
            self.status = new_status
        else:
            raise ValueError(f"Invalid transition from {self.status} to {new_status}")

# Тест на валидный переход
order = Order()
order.change_status("PROCESSING")
assert order.status == "PROCESSING"

# Тест на невалидный переход (должен вызвать ошибку)
try:
    order.change_status("DELIVERED")
    assert False, "Should have raised an error"
except ValueError:
    assert True

Что необходимо проверить с помощью этой техники:

  1. Все валидные переходы, указанные в спецификации.
  2. Невалидные переходы (например, попытка перевести заказ из DELIVERED обратно в PROCESSING). Система должна обрабатывать их корректно (выдавать ошибку, игнорировать).
  3. Граничные состояния (начальное и конечное).
  4. Побочные эффекты перехода (например, при смене статуса на SHIPPED должна создаваться накладная).

Для наглядности и полноты покрытия часто строят Таблицу/Диаграмму переходов состояний.