Ответ
Smoke-тестирование имеет наивысший приоритет среди всех видов проверок после сборки (build).
Причина: Его цель — быстро определить, является ли сборка достаточно стабильной для запуска более затратных по времени тестов (регрессионных, интеграционных). Если smoke-тест падает, дальнейшее тестирование приостанавливается до исправления критических дефектов.
Критерии smoke-теста:
- Проверяет критический путь приложения (например: запуск, авторизация, открытие главной страницы).
- Выполняется быстро (несколько минут).
- Неглубокий — проверяет наличие, а не корректность всех деталей.
Пример smoke-теста для веб-приложения:
import requests
def test_smoke_critical_path():
"""Smoke-тест: проверка доступности основных эндпоинтов."""
base_url = "https://api.example.com"
critical_endpoints = [
"/health", # Проверка здоровья сервиса
"/api/v1/login", # Критичный функционал авторизации
"/api/v1/products" # Основной публичный эндпоинт
]
for endpoint in critical_endpoints:
response = requests.get(f"{base_url}{endpoint}", timeout=5)
# Ожидаем любой успешный или корректный клиентский код ответа
assert response.status_code in [200, 401, 403],
f"Smoke test failed for {endpoint}: {response.status_code}" Ответ 18+ 🔞
А, ну вот, слушай, добрались до самого сокровенного, до святая святых! Дымовое тестирование — это, блядь, как священный огонь в храме, который должен гореть всегда, ёпта! Ему даётся наивысший, блядь, приоритет сразу после того, как сборка выкатилась.
А почему, спросишь ты? Да потому что цель его — не в том, чтобы досконально всё вылизать, а чтобы быстро, на коленке, проверить: а не развалилось ли это чудо инженерной мысли нахуй сразу после сборки? Если этот тест падает — всё, пиздец, дальше можно не мучать ни регресс, ни интеграцию, никого. Стой, блядь, стоп-кран! Пока критические дефекты не починят, дальше двигаться — себя не уважать.
Так на что же он, этот дымовой страж, смотрит?
- Только на критический путь, сука! Запустилось? Вошёл? Главная открылась? Всё, уже хорошо.
- Должен быть быстрым, как удар молнии. Несколько минут — и ты уже знаешь, можно ли продолжать.
- Он неглубокий, блядь! Он не проверяет, правильно ли там кнопка мигает. Он проверяет, есть ли вообще эта кнопка на странице, или вместо неё сейчас сидит пизда с ушами.
Вот, смотри, как это выглядит в коде, чтоб ты понимал масштаб трагедии:
import requests
def test_smoke_critical_path():
"""Smoke-тест: проверка доступности основных эндпоинтов."""
base_url = "https://api.example.com"
critical_endpoints = [
"/health", # Жив ли сервис вообще, или уже накрылся медным тазом?
"/api/v1/login", # Можно ли хоть попытаться вломиться в систему?
"/api/v1/products" # Видны ли товары, или там пустота и пиздец?
]
for endpoint in critical_endpoints:
response = requests.get(f"{base_url}{endpoint}", timeout=5)
# Нам главное — не получить 500-е ошибки или полную тишину. 401/403 — это ещё ладно, логика работает!
assert response.status_code in [200, 401, 403],
f"Smoke test failed for {endpoint}: {response.status_code}"
Вот и весь сказ. Если этот скрипт не орет — можно выдохнуть и запускать большие, дорогие проверки. А если орет... ну, ёпта, готовь костыли, начинается весёлая жизнь.