Что проверяется в ходе smoke-тестирования (дымового тестирования)?

Ответ

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

Цель: Обнаружить критические (блокирующие) дефекты, которые делают дальнейшее тестирование бессмысленным.

Что обычно проверяется (на примере типичного веб-приложения):

  1. Доступность и запуск: Приложение успешно развернуто и отвечает по основному URL.
  2. Критичный пользовательский путь (Happy Path):
    • Загрузка главной страницы.
    • Аутентификация: Вход в систему с валидными учетными данными.
    • Навигация: Переход по основным разделам (например, "Каталог", "Корзина").
    • Ключевое действие: Создание или просмотр основной сущности (например, добавление товара в корзину).
  3. Работа интеграций: Базовое подключение к основному API и базе данных.

Пример набора smoke-тестов (псевдокод):

# 1. Проверка доступности сервиса
assert health_check() == "OK"

# 2. Проверка главной страницы
response = get("/")
assert response.status_code == 200
assert "Добро пожаловать" in response.text

# 3. Проверка входа в систему
auth_response = post("/api/login", json={"login": "test", "pass": "test"})
assert auth_response.status_code == 200
assert "session_id" in auth_response.cookies

# 4. Проверка загрузки основного каталога
catalog_response = get("/api/products", cookies=auth_response.cookies)
assert catalog_response.status_code == 200
assert isinstance(catalog_response.json(), list)

Важно: Smoke-тесты должны быть быстрыми (минуты) и стабильными. Они не проверяют детали, граничные случаи или производительность.

Ответ 18+ 🔞

Давай разберёмся, что за зверь такой — смоук-тестирование, а то некоторые думают, что это курить идут. Нет, блядь, это не про кальян!

Представь: выкатили вы новую сборку, все такие довольные, а там, сука, главная страница не грузится. И зачем тогда все остальные тесты запускать, если в основную дверь уже не пролезть? Вот именно для этого и нужны смоук-тесты — быстрая, поверхностная проверка, чтобы понять, дышит ли система вообще или уже накрылась медным тазом.

Суть проста, как три копейки: гоняем по самому критичному, основному пути. Не углубляемся в дебри, не ищем мелкие баги. Наша задача — найти блокирующие дефекты, которые делают дальнейшую работу бессмысленной. Если смоук упал — всё, стоп машина, можно не тратить время на регресс, пока эту херню не починят.

Что обычно щупаем на каком-нибудь веб-приложении:

  1. Запустилось ли оно, мать его? Отвечает ли сервер по базовому адресу или мы просто в пустоту стучимся?
  2. Самый главный сценарий (Happy Path):
    • Главная страница открывается, а не показывает «404 — всех нахуй».
    • Залогиниться можно. Вводим тестовые данные — нас пускает, а не кидает в ошибку с криками про неверный пароль.
    • По основным разделам походить. «Каталог», «Корзина» — грузятся, а не ведут в цифровое небытие.
    • Ключевое действие выполнить. Например, добавить товар в корзину. Не важно, какой, главное — чтобы процесс не развалился на полпути.
  3. Интеграции на месте. База данных не сдохла, основной API не отвечает кирпичом.

Вот смотри, как это примерно в коде выглядит, чтоб ты понимал масштаб:

# 1. Жив ли сервис вообще?
assert health_check() == "OK"  # Если не "OK", дальше можно не смотреть, пиздец.

# 2. Главная страница
response = get("/")
assert response.status_code == 200  # Не 500, не 404, а нормальная отдача
assert "Добро пожаловать" in response.text  # Хоть что-то знакомое видим

# 3. Вход в систему
auth_response = post("/api/login", json={"login": "test", "pass": "test"})
assert auth_response.status_code == 200  # Залогинились, ура
assert "session_id" in auth_response.cookies  # И сессию нам дали, а не послали

# 4. Каталог товаров грузится
catalog_response = get("/api/products", cookies=auth_response.cookies)
assert catalog_response.status_code == 200  # Список товаров пришёл
assert isinstance(catalog_response.json(), list)  # И это действительно список, а не одна ошибка

Запомни главное: эти тесты должны быть быстрыми, как удар током, и стабильными, как скала. Никаких сложных сценариев, проверок на 1% нагрузки или вёрстки под IE6. Если смоук проходит — система в принципе жива и с ней можно работать дальше. Не проходит — ну, извини, придётся лезть в логи и выяснять, кто тут всех обосрал.