Ответ
Smoke-тестирование (также называемое Build Verification Test или Sanity Check) применяется для быстрой оценки стабильности новой сборки (build) или деплоя перед запуском более глубокого тестирования.
Основные сценарии использования:
- После сборки или деплоя — чтобы убедиться, что ключевые функции работают и нет критических ошибок, блокирующих дальнейшее тестирование.
- Перед запуском регрессионных тестов — если smoke-тесты падают, регрессия не запускается, экономя время.
- После обновления окружения или критических зависимостей — проверка, что система "жива".
Характеристики smoke-тестов:
- Быстрые (минуты, а не часы).
- Поверхностные — проверяют только основные, критически важные сценарии (например, запуск приложения, авторизация, загрузка главной страницы).
- Стабильные — должны давать предсказуемый результат.
- Часто автоматизированы и интегрированы в CI/CD пайплайн.
Пример (API smoke-тест на Python):
import requests
def test_smoke_critical_paths():
base_url = "https://api.example.com/v1"
# 1. Проверка доступности сервиса
health_response = requests.get(f"{base_url}/health")
assert health_response.status_code == 200
# 2. Проверка основного функционала: авторизация
auth_response = requests.post(
f"{base_url}/auth/login",
json={"username": "test_user", "password": "test_pass"}
)
assert auth_response.status_code == 200
token = auth_response.json()["token"]
# 3. Проверка доступа к защищенному эндпоинту с токеном
headers = {"Authorization": f"Bearer {token}"}
profile_response = requests.get(f"{base_url}/profile", headers=headers)
assert profile_response.status_code == 200
print("Smoke tests passed. Build is stable for further testing.")
Цель: быстро ответить на вопрос "Можно ли начинать серьезное тестирование этой сборки?".