Расскажи что такое Smoke тестирование
Smoke-тестирование (дымовое тестирование) — это короткий цикл тестов, выполняемый на начальном этапе проверки продукта, чтобы убедиться, что приложение запускается и его основные функции работают, прежде чем передавать его на полное тестирование. Оно отвечает на вопрос: «Готов ли продукт к более глубокой проверке?» и позволяет быстро выявить критические и блокирующие дефекты, экономя время и ресурсы команды.
Как это работает
Smoke-тесты покрывают наиболее важные модули и сценарии использования приложения. Обычно это проверка:
- запуска приложения и его основных экранов;
- ключевых бизнес-сценариев (например, авторизация, создание записи, оформление заказа);
- работоспособности критичных интеграций (база данных, внешние сервисы).
Тесты выполняются поверхностно, без глубокого изучения функциональности. Их цель — не найти все ошибки, а подтвердить, что продукт в принципе работает. Если smoke-тесты проходят, продукт передают на полный цикл тестирования. Если нет — возвращают на доработку.
Пример
Пример smoke-теста для интернет-магазина на Python с использованием pytest и Selenium:
import pytest
from selenium import webdriver
def test_smoke_purchase():
driver = webdriver.Chrome()
driver.get("https://example-shop.com")
# Проверка, что главная страница загрузилась
assert "Магазин" in driver.title
# Поиск товара
search = driver.find_element_by_name("q")
search.send_keys("ноутбук")
search.submit()
# Добавление в корзину
driver.find_element_by_css_selector(".add-to-cart").click()
# Переход к оформлению заказа
driver.find_element_by_css_selector(".checkout").click()
# Проверка, что страница оформления открылась
assert "Оформление" in driver.page_source
driver.quit()Этот тест проверяет основной путь покупателя: открытие сайта, поиск, добавление в корзину и переход к оформлению. Если любой шаг падает — smoke-тест не пройден.
Подводные камни
- Не путать с другими видами тестирования. Smoke-тесты отличаются от смоук-тестов (проверка конкретной сборки) и от регрессионного тестирования (проверка, что изменения не сломали существующую функциональность). Smoke — это быстрая проверка «живучести» продукта.
- Автоматизация. Smoke-тесты почти всегда одинаковы, поэтому их выгодно автоматизировать. Но важно поддерживать их в актуальном состоянии — иначе они перестанут отражать реальные критические сценарии.
- Ложная уверенность. Прохождение smoke-тестов не гарантирует отсутствие дефектов в менее критичных модулях. Это лишь фильтр для отбраковки заведомо нерабочих сборок.
- Время выполнения. Smoke-тесты должны быть быстрыми (минуты, а не часы). Если они становятся медленными, их перестают запускать регулярно, и ценность теряется.
Когда использовать
Smoke-тестирование применяется:
- при каждой новой сборке перед передачей в тестирование;
- после крупных изменений в коде, чтобы убедиться, что основные сценарии не сломаны;
- в CI/CD пайплайнах как первый этап проверки перед более полными наборами тестов.
Это обязательная часть процесса тестирования в большинстве проектов, особенно при частых релизах.
Коротко
- Smoke-тестирование — быстрая проверка готовности продукта к полному тестированию.
- Покрывает основные функции и критические сценарии, выявляет блокирующие дефекты.
- Тесты должны быть автоматизированы и выполняться регулярно.
- Прохождение smoke-тестов — условие для передачи продукта на полный цикл тестирования.
