Что такое smoke-тестирование (дымовое тестирование) и какова его цель?

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

Ответ

Smoke-тестирование — это поверхностный, быстрый набор проверок, выполняемый после каждой новой сборки (build) или развертывания (deploy) приложения.

Основная цель: убедиться, что критически важные функции системы работают, и сборка достаточно стабильна для начала более глубокого тестирования (например, регрессионного). Если smoke-тесты не проходят, сборка "отбраковывается", и дальнейшее тестирование не имеет смысла.

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

  • Выполняется первым после получения сборки.
  • Охватывает основной сценарий ("happy path") ключевых модулей (например, вход в систему, загрузка главной страницы, создание базовой сущности).
  • Высокая скорость — обычно 5-30 минут.
  • Может быть ручным или автоматизированным. Автоматизация предпочтительна для скорости и consistency.

Пример набора smoke-тестов для веб-приложения:

  1. Загрузка главной страницы (статус 200).
  2. Успешный вход с валидными учетными данными.
  3. Отображение основного виджета/панели управления после входа.
  4. Выход из системы.

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

import pytest
import requests

BASE_URL = "https://app.example.com"

def test_homepage_is_accessible():
    response = requests.get(BASE_URL)
    assert response.status_code == 200
    assert "Welcome" in response.text

def test_user_can_login():
    login_url = f"{BASE_URL}/api/login"
    credentials = {"email": "test@example.com", "password": "test123"}

    response = requests.post(login_url, json=credentials)

    assert response.status_code == 200
    json_response = response.json()
    assert "auth_token" in json_response  # Проверяем, что токен получен