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

Ответ

Да, 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

Ответ 18+ 🔞

А, ну вот, опять про эту дичь с тестированием. Слушай, тут всё просто, как три копейки, но народ постоянно путается, будто в голове у них не мозги, а манная каша, блядь.

Короче, смотри. Smoke-тестирование — это не какая-то отдельная, ебаная вселенная. Это такой себе подмножество регрессионного тестирования, типа быстрый фильтр-затычка, чтоб сразу отсеять откровенный пиздец.

Smoke-тесты (они же санитарные):

  • Зачем? Узнать, а не сгорела ли наша хрустальная мечта — то есть сборка — сразу после того, как её выкатили. Работает ли хоть что-то основное? Приложение вообще запускается или сразу показывает ебучую ошибку 500?
  • Что проверяют? Минимум, самый базовый сценарий. Запустилось? Вошёл? Главная страница не разъехалась? Всё, хватит.
  • Когда? Сразу, блядь, как только получили свежую сборку. Первым делом.

Регрессионное тестирование:

  • Зачем? Убедиться, что наши гениальные правки не разъебали к хуям всё, что работало до этого. Это полный медосмотр системы.
  • Что проверяют? Всё подряд, ёпта! И smoke-тесты туда входят, и проверку новых фич, и глубокое ковыряние в старых модулях.
  • Когда? После 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  # Настройки не обнулились?

Вот и вся магия. Сначала быстро нюхаем — нет ли дыма? Если нет — тогда уже начинаем копать глубже. А то бывает такое, что сборку выкатили, а она даже не стартует, и ты полдня регрессию гоняешь на пустом месте. Просто пиздец, а не работа.