Smoke, Sanity, Regression, Retest

Draft

Чёткое различие между smoke, sanity, regression и retest: когда что применять и какие ошибки в терминологии чаще всего мешают команде.

Содержание

Эти четыре термина часто смешивают, из-за чего команды по-разному понимают объём проверки и спорят уже на уровне слов. На практике важно договориться не о “правильном учебниковом определении”, а о едином смысле внутри команды.

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 достаточным основанием для релиза, если изменение затрагивало зависимые области.