Ответ
Smoke-тестирование (Дымовое тестирование) — это поверхностная проверка основных, критически важных функций приложения после каждой новой сборки. Его цель — быстро определить, "пригодна ли сборка для дальнейшего, более глубокого тестирования".
Регрессионное тестирование — это глубокое и детальное тестирование, направленное на проверку того, что последние изменения не нарушили существующую функциональность.
Ключевые отличия:
| Аспект | Smoke-тестирование | Регрессионное тестирование |
|---|---|---|
| Глубина | Поверхностное, проверяет "идёт ли дым" (работает ли вообще) | Глубокое, проверяет корректность работы |
| Цель | Валидация стабильности сборки для начала тестирования | Валидация отсутствия регрессий после изменений |
| Объем | Минимальный набор ключевых сценариев (5-10% от полного набора) | Обширный набор тестов, покрывающий затронутые области или всю систему |
| Время выполнения | Минуты или десятки минут | Часы или дни |
| Когда выполняется | Сразу после каждой сборки | После smoke-тестов, перед релизом, после значительных изменений |
Пример на псевдокоде:
# Smoke-тест: Быстрая проверка, что система "жива" и базовые функции доступны.
def smoke_test():
assert app.start() == True # Приложение запускается
assert user_can_login() == True # Критичный путь: вход
assert main_page_loads() == True # Главная страница открывается
# Регрессионный тест: Детальная проверка функциональности после фикса бага в корзине.
def regression_test_after_cart_fix():
smoke_test() # Сначала убедимся, что система стабильна
# Затем глубокая проверка затронутого функционала:
assert add_item_to_cart() == True
assert update_item_quantity() == True
assert apply_promo_code() == True
assert checkout_flow() == True
# И проверка смежных областей:
assert search_functionality() == True # Не сломалась ли поисковая выдача?
Smoke-тест — это чек-лист для сборки, регрессионный тест — полная диагностика системы.