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

Ответ

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

Практический пример (автоматизация):

import requests

def test_smoke_login():
    """Проверяет, что страница логина доступна."""
    response = requests.get("https://example.com/login")
    assert response.status_code == 200
    assert "Login" in response.text

Характеристики smoke-тестов:

  • Выполняются первыми после деплоя новой сборки.
  • Проверяют критичные пути (например, запуск, авторизация, главная страница).
  • Не углубляются в edge cases или детальную проверку.
  • Могут быть автоматизированными или ручными.
  • Не заменяют регрессионное, интеграционное или приемочное тестирование.

Ответ 18+ 🔞

Смотри, вот тебе про дымовое тестирование, но без всей этой сухой лабуды, как в учебниках. Представь, что у тебя новый тачка из салона — ты же не будешь сразу на ней в гонку, правда? Сначала заведешь, блядь, посмотришь, фары горят, печка дует, а не дымит ли она, сука, из-под капота чем-нибудь смердящим. Вот это и есть smoke-тест, ёпта!

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

Вот смотри, как это выглядит в коде, если автоматизировать:

import requests

def test_smoke_login():
    """Проверяет, что страница логина доступна."""
    response = requests.get("https://example.com/login")
    assert response.status_code == 200
    assert "Login" in response.text

Видишь? Никаких тонкостей. Дёрнули главный адрес, получили ответ «200» (а не «404» или «500» — это уже пиздец), и на странице есть слово «Login». Всё, дым не валит, можно уже дальше, более умные тесты, запускать.

А теперь главное, чтобы запомнил, что это за зверь такой:

  • Делаются самыми первыми, как только новая сборка упала на тестовый сервер. Прям сразу, не отходя от кассы.
  • Бьют только по критичным путям. Запуск, вход, главная страница — то, без чего всё остальное — хуйня бесполезная. Если логин не работает, то о каких там профилях или настройках может идти речь? Ни о каких, пизда.
  • Не лезут в дебри. Никаких там «а что если ввести миллион символов», «а как поведёт себя при смены часового пояса на марсианский». Это не про то сейчас. Это про «живо ли оно вообще».
  • Могут быть и руками. Но если делаешь это чаще двух раз в день, то ты, прости, мудак — надо автоматизировать, чтоб не тратить время.
  • И главное — это НЕ замена нормальному, глубокому тестированию. Это просто быстрая отмашка: «Всё, ребята, система не сдохла, можно начинать её уже по-настоящему ебашить». После smoke идут уже регрессы, интеграции и прочая серьёзная движуха.

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