Блог

Смоук- и Санити-тестирование

2025-03-21 13:59

Smoke- vs Sanity-тестирование: что это такое и в чём разница

В разработке программного обеспечения (ПО) важно различать виды тестирования, чтобы обеспечить высокое качество продукта. Двое из этих видов — смоук-тестирование и санити-тестирование — часто вызывают вопросы относительно их различий и применения.
💡 В этой статье:

Подробно рассматриваем оба подхода, их цели, задачи и условия использования.

Что такое смоук-тестирование

Определение и цель

Смоук-тестирование (от англ. Smoke Testing), также известное как «дымовое тестирование», — быстрая проверка ключевой работоспособности приложения после сборки. Для неё выбирается небольшое подмножество тестов из всей базы, покрывающее основные функции, без детализации и глубоких проверок. Цель — убедиться, что продукт в принципе работоспособен и может быть передан на дальнейшее тестирование.

Основные задачи смоук-тестирования

  • Проверка запуска приложения: Убедиться, что система успешно запускается без ошибок.
  • Проверка основной функциональности: Подтвердить работоспособность ключевых функций приложения.
  • Решение о дальнейшем тестировании: Определить, готова ли система к более глубокому тестированию или требуется немедленная доработка.

Применение смоук-тестирования на практике

После каждой новой сборки или обновления системы проводится дымовое тестирование. Например, при добавлении новой функции команда тестирования проверяет, что основные функции приложения работают корректно и не нарушены. Это позволяет выявлять критические дефекты на ранних этапах разработки, обеспечивая стабильность и надежность продукта.

Смоук-тестирование в ТестОпс

  • Теги и пользовательские поля: добавьте к тестам метку smoke или создайте пользовательское поле, например, «Тип запуска». Это поможет отделить смоук-тесты от остальных. Такой метод обеспечивает компактную и быструю проверку базовой функциональности системы.
  • Фильтрация и выбор: Применяйте фильтр, чтобы выбрать только тесты, помеченные как smoke, и не запускать весь набор.
  • Селективный запуск: В разделе «Джобы» в ТестОпс настройте запуск тестов на стороне CI-сервера. Это даст возможность запускать только выбранные smoke-тесты, а не весь набор.

Что такое санити-тестирование

Определение и цели

Санити-тестирование (от англ. Sanity Testing), так называемая «проверка на вменяемость», — узконаправленное исследование конкретных изменений или исправлений в коде. Основные цели направлены на подтверждение корректности внесённых изменений в код, подтверждение отсутствия новых дефектов, проверку общей стабильности системы после правок.

Основные задачи санити-тестирования

  • Проверка исправлений: Убедиться, что ранее обнаруженные дефекты были успешно устранены.​
  • Оценка новой функциональности: Подтвердить корректность работы недавно добавленных функций.​
  • Быстрая проверка стабильности: Определить, не появились ли новые дефекты после внесения изменений.​

Применение тестирования на согласованность

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

Санити-тестирование в ТестОпс

  • Пользовательские поля и компоненты: Санити-тесты удобно структурировать с помощью тега sanity и пользовательского поля Component, если вы хотите проверять конкретные модули или зоны приложения после правок.
  • Гибкая фильтрация: ТестОпс позволяет создать фильтр, который отбирает только тесты с тегом sanity, либо, например, sanity + компонент = «Авторизация». Это даёт точную выборку под конкретные изменения.
  • Селективный запуск через джобы: Как и для смоук-проверок, селективный запуск позволяет выполнять только нужные sanity-тесты. Это особенно эффективно при проверке фиксов без необходимости запускать полную регрессию.

Чем отличаются cмоук- и cанити-тестирование

Что проверяется

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

Когда применяются

  • Первая группа запускается сразу после сборки. Это экспресс-проверка перед запуском полного тестового прогона.
  • Вторая используется после конкретных правок в уже проверенной версии. Она помогает подтвердить, что фиксы не вызвали побочных эффектов.

Цель проверок

  • Поверхностная проверка — отсечь критичные баги до регресса.
  • Точечная — убедиться в надёжности последних изменений.

Кто запускает и как часто

  • Первый набор может запускаться как вручную, так и автоматически — чаще всего после каждого билда.
  • Второй — выборочно и по необходимости, при каждом изменении кода в стабильной ветке.
Частота и объём зависят от практик команды. Например, в CI-сценариях smoke-запуски выполняются автоматически при каждом коммите, а sanity-наборы — только при ручном триггере или изменении критичных компонентов. Но оба подхода работают быстрее, если хорошо настроены фильтры и запускаются выборочно, без всей тестовой базы.

Пример практического применения смоук- и санити-тестов

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

Как сочетать смоук- и санити-тестирование

Дымовое и санити-тестирование не взаимоисключающие подходы, а части одной стратегии. Вместо выбора между ними команды назначают отдельные теги на тесты в зависимости от цели их запуска. Наборы обоих типов тестов запускаются в разных ситуациях и служат разным целям, но работают в связке.

Оценка пригодности сборки к дальнейшему тестированию

Смоук-тесты подходят для быстрой проверки общей работоспособности приложения после новой сборки. Они позволяют сразу выявить критические ошибки.

Локальная валидация правок

Санити-тесты эффективны при внесении точечных изменений, таких как исправление конкретного дефекта или добавление небольшой функциональности, которая не затрагивает всю систему.
Протестируйте все функции ТестОпс
14 дней бесплатно

Как реализовано смоук- и санити-тестирование в ТестОпс

Долгие циклы тестирования тормозят релизы, а ложные сбои крадут время команды. В экосистеме ТестОпс это решается так: теги, фильтры и селективные запуски позволяют проверять только ключевые сценарии, существенно ускоряя процесс.

Метки и поля для организации тестов

Автотесты можно помечать тегами, такими как «smoke» или «sanity», прямо в коде с помощью аннотаций (layer, severity). Эти метки автоматически отображаются в ТестОпс без дополнительных настроек. Рекомендуется также добавлять пользовательские поля: «Тип запуска» для базовой работоспособности (smoke) или «Компонент» для проверки после правок в модуле (sanity). Это способствует созданию четкой структуры, предотвращая смешение тестов в общей базе данных.

Фильтры и планы для точного отбора

Сбор набора сценариев возможен через расширенные фильтры по тегу, владельцу, компоненту или статусу. Динамические тест-планы создаются с помощью запросов и синхронизируются перед запуском для обновления данных. Для smoke-тестирования подходит план с приоритетными API-тестами, а для sanity-тестирования — фокус на измененных зонах, таких как «Авторизация».

Автоматизация запусков в CI

Запуск осуществляется только для необходимых задач через интерфейс или джобы в ТестОпс. Интеграция с Jenkins, GitLab или TeamCity обеспечивает автоматизацию всех процессов: выполнение smoke-тестов на каждом коммите и sanity-тестов по триггеру при изменениях. Возможность комбинировать ручные и автоматические тесты в одном плане позволяет агрегировать результаты через Allure-адаптер. Параллельные прогоны на различных агентах ускоряют процесс получения обратной связи, снижая вероятность возникновения нестабильных тестов.

Мониторинг для оперативного контроля

В разделе «Запуски» можно отслеживать статус в реальном времени и оперативно реагировать на возможные сбои. Дашборды предоставляют визуализацию метрик стабильности, включая тренды по тегам и отчеты в формате PDF/CSV. Также можно настроить оповещения в Slack или Telegram, чтобы команда всегда была в курсе событий.

Коротко о главном

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

Узнайте больше о возможностях настройки CI-интеграции в системе управления тестированием ТестОпс: