Регрессионное, smoke и sanity
Три практичных вида проверок, которые экономят командам нервы при каждом релизе.
Регрессионное тестирование проверяет, что новые изменения не сломали уже работавшее; smoke — что сборка вообще живая; sanity — что конкретная правка действительно сработала.
Регрессия: «не сломали ли старое»
Самый коварный класс багов — регрессии: вы чините одно, а ломаете соседнее. Регрессионное тестирование — это повторный прогон существующих тестов после любого изменения. Именно регрессию автоматизируют в первую очередь: вручную перепроверять всю систему на каждый коммит невозможно.
def slugify(text):
"""Превращает заголовок в URL-slug."""
return text.strip().lower().replace(" ", "-")
# Регрессионный набор: эти проверки гоняем ПОСЛЕ КАЖДОГО изменения slugify
regression = [
("Hello World", "hello-world"),
(" Trim Me ", "trim-me"),
("ALL CAPS", "all-caps"),
]
for text, expected in regression:
assert slugify(text) == expected
print(f"Регрессия пройдена: {len(regression)} старых сценария всё ещё работают")
Вывод:
Регрессия пройдена: 3 старых сценария всё ещё работают
Если завтра кто-то «улучшит» slugify и забудет про strip(), этот набор тут же покраснеет — регрессия поймана.
Smoke: «вообще запускается?»
Smoke-тест (от «дым пошёл — не загорелось») — это короткий набор самых базовых проверок: приложение стартует, главная страница открывается, логин работает. Его гоняют сразу после сборки. Если smoke красный — нет смысла запускать остальные тесты, сборка нерабочая.
Sanity: «починили ли именно это?»
Sanity-проверка — узкая и быстрая: после конкретного фикса убеждаемся, что именно эта функция теперь ведёт себя правильно, не прогоняя весь набор. Это «проверка здравомыслия» перед более глубоким тестированием.
| Вид | Когда | Глубина |
| Smoke | Сразу после сборки | Широкая, но поверхностная |
| Sanity | После конкретного фикса | Узкая, но точечная |
| Регрессия | После любого изменения | Полный прогон старых тестов |
Итог
- Регрессия защищает от поломки уже работавшего — её автоматизируют в первую очередь.
- Smoke — быстрая широкая проверка «сборка вообще живая».
- Sanity — узкая проверка, что конкретный фикс сработал.