Техника · State Transition Testing

Диаграмма
переходов

Системы с памятью — не просто «вход → выход». Поведение зависит от текущего состояния. State Transition Testing проверяет, что каждый переход работает правильно, а недопустимые переходы блокируются.

Статусы задачи в таск-трекере
S1 Новая S2 В работе S3 На проверке S4 Закрыта S5 Отменена Взять в работу На проверку Одобрить На доработку Отменить Отменить Активное состояние Финальное Отменено
Таблица переходов (0-switch coverage)
ТК Текущее состояние Действие Ожидаемое состояние Тип
T1S1 — НоваяВзять в работуS2 — В работе valid
T2S2 — В работеОтправить на проверкуS3 — На проверке valid
T3S3 — На проверкеОдобритьS4 — Закрыта valid
T4S3 — На проверкеВернуть на доработкуS2 — В работе valid
T5S1 — НоваяОтменитьS5 — Отменена valid
T6S2 — В работеОтменитьS5 — Отменена valid
T7S4 — ЗакрытаВзять в работу (повторно)Ошибка — переход недопустим invalid
T8S5 — ОтмененаОтправить на проверкуОшибка — переход недопустим invalid
Вопрос 01
Что такое «0-switch coverage» в State Transition Testing?
Тестирование только состояний без каких-либо переходов
Каждый переход (стрелка на диаграмме) выполнен хотя бы один раз
Каждое состояние посещено хотя бы один раз
Вопрос 02
Зачем тестировать недопустимые переходы (T7, T8 — invalid)?
Чтобы достичь 0-switch coverage
Проверить, что система правильно блокирует их — разработчики часто не реализуют защиту от недопустимых переходов
Измерить время ответа при неверных действиях
Вопрос 03
Задача находится в S3 (На проверке). Пользователь нажимает «Взять в работу» — этого перехода нет на диаграмме. Что должна сделать система?
Молча проигнорировать нажатие
Перейти в S2 — разрешить повторное взятие в работу
Вернуть ошибку — переход S3→S2 через «Взять в работу» не предусмотрен диаграммой
Что запомнить
  • 0-switch coverage = тест на каждый переход (стрелку). Минимальный уровень покрытия для State Transition Testing.
  • 1-switch coverage добавляет покрытие всех пар последовательных переходов — более сильная гарантия, но больше тест-кейсов.
  • Тестируй недопустимые переходы: попробуй действие из каждого состояния, для которого оно не предусмотрено. Это часто выявляет отсутствующие проверки на стороне сервера.
  • Диаграмма переходов применима везде, где у объекта есть жизненный цикл: заказ, заявка, документ, пользователь.