Ответ
Санитарное тестирование (Smoke Testing) — это быстрая, поверхностная проверка критически важных функций приложения после сборки (билда) или развертывания. Его цель — определить, является ли сборка достаточно стабильной для проведения более глубокого и детального тестирования (например, регрессионного или приемочного).
Ключевые характеристики:
- Выполняется первым после получения новой сборки.
- Охватывает основной функционал ("дым из трубы идет?").
- Выполняется быстро (минуты или десятки минут).
- Неглубокое — не проверяет крайние случаи или сложные сценарии.
Если smoke-тесты не проходят, сборка считается нестабильной, и ее отправляют на доработку, экономя время на запуск полного набора тестов.
Пример smoke-тестов для веб-приложения:
- Главная страница загружается (HTTP 200).
- Пользователь может войти в систему с валидными данными.
- Пользователь может выйти из системы.
- Ключевая страница раздела (например, "Каталог") открывается.
Пример автоматизированного smoke-теста на Python с requests и pytest:
import pytest
import requests
BASE_URL = "https://staging.example.com"
@pytest.mark.smoke
def test_main_page_availability():
"""Проверка доступности главной страницы."""
response = requests.get(f"{BASE_URL}/", timeout=5)
assert response.status_code == 200
assert "Example Corp" in response.text # Проверка ключевого элемента
@pytest.mark.smoke
def test_login_smoke():
"""Проверка базового сценария входа."""
login_data = {"username": "test_user", "password": "secure_pass"}
response = requests.post(f"{BASE_URL}/api/login", json=login_data, timeout=5)
assert response.status_code == 200
response_json = response.json()
assert "access_token" in response_json # Ожидаем токен в ответе
assert response_json["user"]["username"] == "test_user"
# Запуск: pytest -v -m smoke
Smoke-тесты часто являются частью Continuous Integration (CI) пайплайна и запускаются автоматически после каждой сборки.