Ответ
Да, 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 # Настройки не обнулились?
Вот и вся магия. Сначала быстро нюхаем — нет ли дыма? Если нет — тогда уже начинаем копать глубже. А то бывает такое, что сборку выкатили, а она даже не стартует, и ты полдня регрессию гоняешь на пустом месте. Просто пиздец, а не работа.