Эти четыре термина часто смешивают, из-за чего команды по-разному понимают объём проверки и спорят уже на уровне слов. На практике важно договориться не о “правильном учебниковом определении”, а о едином смысле внутри команды.
Smoke testing
Smoke — это быстрая проверка того, что система в целом жива и пригодна к дальнейшему тестированию или использованию. Обычно сюда входят самые критичные happy-path сценарии: запуск, логин, базовая навигация, создание ключевой сущности, доступность основного API.
Sanity testing
Sanity — это узкая и целевая проверка конкретного изменения или проблемной зоны. Например, после небольшой правки в расчёте скидки команда проверяет именно связанные сценарии и соседние области, а не весь продукт.
Regression testing
Regression — это повторная проверка уже существующей функциональности, чтобы убедиться, что новые изменения не сломали старое поведение. Регрессия обычно шире smoke и sanity и строится вокруг известных продуктовых рисков.
Retest
Retest — это проверка конкретного исправленного дефекта. Вопрос здесь узкий: действительно ли баг исправлен в том сценарии, где он был найден. Retest не заменяет regression, потому что он не отвечает на вопрос, что ещё могло пострадать рядом.
Как различать на практике
- →Smoke: стоит ли вообще продолжать тестирование этой сборки.
- →Sanity: не сломано ли ожидаемое поведение в конкретной области после локального изменения.
- →Retest: исправлен ли конкретный дефект.
- →Regression: не пострадала ли остальная функциональность из-за изменений.
Best practice
- →Зафиксируйте словарь терминов внутри команды, чтобы одинаково понимать объём проверки.
- →Не подменяйте regression случайным набором старых тест-кейсов — он должен быть риск-ориентированным.
- →Не считайте retest достаточным основанием для релиза, если изменение затрагивало зависимые области.