Что такое smoke-тестирование и как вы его применяете?

«Что такое smoke-тестирование и как вы его применяете?» — вопрос из категории Основы тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Smoke-тестирование (санитарная проверка) — это быстрый набор тестов, выполняемый после каждой новой сборки или развертывания, чтобы убедиться, что критически важные функции системы работают и можно приступать к более глубокому тестированию.

Ключевые характеристики:

  • Быстрое выполнение (минуты, а не часы).
  • Проверка основных, а не всех путей.
  • Высокая стабильность (минимальная зависимость от внешних данных).

Типичные сценарии для smoke-набора:

  1. Запуск приложения и доступность главной страницы.
  2. Аутентификация и авторизация (вход с валидными учетными данными).
  3. Критичный CRUD-сценарий (например, создание и просмотр основной сущности).
  4. Проверка ключевого интеграционного пункта (например, ответ от основного микросервиса или БД).

Пример автоматизированного smoke-теста на Python:

def test_smoke_main_workflow(api_client, test_user):
    """Проверка основного потока: вход и создание элемента."""
    # 1. Аутентификация
    auth_response = api_client.post("/login", json=test_user)
    assert auth_response.status_code == 200
    token = auth_response.json()["access_token"]
    api_client.headers = {"Authorization": f"Bearer {token}"}

    # 2. Создание основного ресурса
    new_item = {"title": "Smoke Test Item"}
    create_response = api_client.post("/items", json=new_item)
    assert create_response.status_code == 201
    item_id = create_response.json()["id"]

    # 3. Проверка, что ресурс доступен
    get_response = api_client.get(f"/items/{item_id}")
    assert get_response.status_code == 200
    assert get_response.json()["title"] == new_item["title"]

Цель: Не найти все баги, а быстро дать сигнал "сборка сломана", экономя время команды на запуск полного регресса.