Ответ
Smoke-тестирование (Build Verification Test) — это минимальный набор быстрых проверок, который подтверждает, что критически важный функционал приложения работает после сборки или развертывания, и его можно тестировать дальше.
Типичные сценарии Smoke-тестов:
- Запуск и доступность: Приложение/сервис запускается без критических ошибок. Веб-сервер отвечает по основному URL, API возвращает ожидаемый статус (например, 200 для
/health). - Базовая аутентификация/авторизация: Возможность войти в систему с валидными учетными данными.
- Проверка основных модулей (Happy Path):
- Для веб-приложения: загрузка главной страницы, страницы входа, ключевых разделов.
- Для API: выполнение основных CRUD-операций для главной сущности (например, Пользователь или Товар).
- Для мобильного приложения: запуск, переход по основным табам.
- Критическая бизнес-логика: Один-два ключевых сквозных (E2E) сценария. Например, для интернет-магазина: «Поиск товара -> Добавление в корзину -> Начало оформления заказа».
Пример Smoke-теста для REST API (Python, pytest):
import requests
def test_smoke_api_health():
"""Проверка, что API доступен."""
resp = requests.get("https://api.example.com/health", timeout=5)
assert resp.status_code == 200
assert resp.json()["status"] == "OK"
def test_smoke_crud_cycle():
"""Проверка базового цикла создания и чтения сущности."""
# 1. CREATE (POST)
new_item = {"title": "Smoke Test Item"}
create_resp = requests.post("https://api.example.com/items", json=new_item)
assert create_resp.status_code in [200, 201]
item_id = create_resp.json()["id"]
# 2. READ (GET)
get_resp = requests.get(f"https://api.example.com/items/{item_id}")
assert get_resp.status_code == 200
assert get_resp.json()["title"] == new_item["title"]
Главный принцип: Smoke-тесты должны быть быстрыми, стабильными и покрывать «ствол» системы. При падении любого Smoke-теста дальнейшее углубленное тестирование бессмысленно.