Как вы отбираете тест-кейсы для smoke-тестирования (проверки стабильности сборки)?

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

Ответ

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

Критерии отбора smoke-кейсов:

  • Критичность: Проверяются только самые важные, базовые функции, без которых продукт не может быть использован.
  • Скорость: Кейсы должны выполняться быстро (минуты, а не часы).
  • Стабильность: Кейсы должны быть максимально надежными и не флакющими.

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

  1. Запуск приложения: Приложение успешно стартует без критических ошибок.
  2. Авторизация: Пользователь может войти в систему с валидными данными.
  3. Навигация: Открываются основные разделы приложения (главная страница, профиль).
  4. Критическая интеграция (если есть): Проверка доступности основного внешнего сервиса (например, платежного шлюза).

Пример автоматизированного smoke-теста для API:

import requests

def test_smoke_health_check():
    """Проверка, что основное API отвечает."""
    response = requests.get("https://api.example.com/health", timeout=5)
    assert response.status_code == 200
    assert response.json()["status"] == "OK"

def test_smoke_user_login():
    """Проверка базового сценария входа."""
    login_data = {"username": "test_user", "password": "secure_pass"}
    response = requests.post("https://api.example.com/auth/login", json=login_data)
    assert response.status_code == 200
    assert "access_token" in response.json()  # Ключевой токен получен

Если smoke-тесты не проходят, сборка считается нестабильной, и дальнейшее глубокое тестирование не начинается.