Является ли Smoke-тестирование частью Regression-тестирования?

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

Ответ

Да, smoke-тестирование (санитарная проверка) является подмножеством регрессионного тестирования. Оно выполняет роль быстрого фильтра.

Smoke-тестирование:

  • Цель: Проверить, работает ли базовая, критически важная функциональность после сборки (build).
  • Объем: Узкий, покрывает основные сценарии (например, запуск приложения, вход в систему, загрузка главной страницы).
  • Когда выполняется: Сразу после получения новой сборки.

Regression-тестирование:

  • Цель: Убедиться, что новые изменения не сломали существующую функциональность.
  • Объем: Широкий, включает smoke-тесты, тесты на новые функции и глубокую проверку ранее работавших модулей.

Аналогия:

  • Smoke — это проверка, есть ли «дым» (явные критические поломки). Если дым есть, дальнейшее тестирование бессмысленно.
  • Regression — это полная проверка «здоровья» системы после изменений.

Пример набора тестов:

# Smoke-тест (часть регрессии)
def test_smoke_app_starts():
    response = client.get('/health')
    assert response.status_code == 200

# Регрессионный тест (более глубокий)
def test_regression_user_profile():
    # Проверяет комплексный сценарий, который работал ранее
    user = login('test_user')
    profile = user.get_profile()
    assert profile['email'] == 'test@example.com'
    assert profile['settings'] is not None