В чём разница между Smoke и регрессионным тестированием и когда они применяются?

«В чём разница между Smoke и регрессионным тестированием и когда они применяются?» — вопрос из категории Основы тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Smoke-тестирование (Sanity Check) — это быстрая проверка ключевой функциональности после сборки (build), чтобы убедиться, что система в принципе работоспособна для начала более глубокого тестирования. Это "поверхностный" тест.

Регрессионное тестирование — это полная или выборочная проверка уже протестированной функциональности после внесения изменений (багфикс, новая фича), чтобы убедиться, что эти изменения не сломали существующую работу.

Критерий Smoke-тестирование Регрессионное тестирование
Цель Проверить готовность сборки к тестированию Проверить отсутствие регрессий после изменений
Глубина Поверхностная, только основные сценарии Глубокая, покрывает затронутые и смежные области
Время Минуты Часы или дни
Когда выполняется После каждой новой сборки Перед релизом, после значительных изменений

Пример Smoke-теста для API:

// Пример для Postman/Newman
pm.test("SMOKE: API Gateway responds", function () {
    pm.response.to.have.status(200);
});

pm.test("SMOKE: Core auth service is up", function () {
    const jsonData = pm.response.json();
    pm.expect(jsonData.service_status).to.eql("OK");
});

Практика: В CI/CD пайплайне сначала запускается набор Smoke-тестов. Если они проходят, затем может запускаться регрессионная или полная тест-сьюта.