Что такое State Transition Testing (тестирование переходов состояний)?

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

Ответ

State Transition Testing — это техника тест-дизайна, которая фокусируется на проверке корректности переходов системы между различными состояниями в ответ на события или входные данные. Она особенно полезна для систем с конечным числом состояний (finite-state machines), где результат зависит от истории предыдущих действий.

Основная идея: система может находиться в определенном состоянии (State), и событие (Event) переводит ее в другое состояние, возможно, с каким-то действием (Action). Тестирование проверяет как валидные, так и невалидные переходы.

Пример для банкомата:

  1. Состояние: Карта вставленаСобытие: Ввод корректного PINНовое состояние: Доступ разрешен.
  2. Состояние: Карта вставленаСобытие: Ввод неверного PIN 3 разаНовое состояние: Карта заблокирована.

Пример тест-кейса на Python:

class LoginSystem:
    def __init__(self):
        self.state = "LOGGED_OUT"
        self.attempts = 0

    def enter_password(self, pwd):
        if pwd == "correct":
            self.state = "LOGGED_IN"
        else:
            self.attempts += 1
            if self.attempts >= 3:
                self.state = "LOCKED"

def test_state_transition_to_locked():
    system = LoginSystem()
    # Три неверные попытки
    for _ in range(3):
        system.enter_password("wrong")
    assert system.state == "LOCKED"

Когда применять: тестирование workflow (заказ товара, процесс одобрения), логики авторизации, бизнес-процессов с четкими этапами.