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