Smoke- vs Sanity-тестирование: что это такое и в чём разница
В разработке программного обеспечения (ПО) важно различать виды тестирования, чтобы обеспечить высокое качество продукта. Двое из этих видов — смоук-тестирование и санити-тестирование — часто вызывают вопросы относительно их различий и применения.
💡 В этой статье:
Подробно рассматриваем оба подхода, их цели, задачи и условия использования.
Что такое смоук-тестирование
Определение и цель
Смоук-тестирование (от англ. Smoke Testing), также известное как «дымовое тестирование», — быстрая проверка ключевой работоспособности приложения после сборки. Для неё выбирается небольшое подмножество тестов из всей базы, покрывающее основные функции, без детализации и глубоких проверок. Цель — убедиться, что продукт в принципе работоспособен и может быть передан на дальнейшее тестирование.
Основные задачи смоук-тестирования
- Проверка запуска приложения: Убедиться, что система успешно запускается без ошибок.
- Проверка основной функциональности: Подтвердить работоспособность ключевых функций приложения.
- Решение о дальнейшем тестировании: Определить, готова ли система к более глубокому тестированию или требуется немедленная доработка.
Применение смоук-тестирования на практике
После каждой новой сборки или обновления системы проводится дымовое тестирование. Например, при добавлении новой функции команда тестирования проверяет, что основные функции приложения работают корректно и не нарушены. Это позволяет выявлять критические дефекты на ранних этапах разработки, обеспечивая стабильность и надежность продукта.
Смоук-тестирование в ТестОпс
- Теги и пользовательские поля: добавьте к тестам метку smoke или создайте пользовательское поле, например, «Тип запуска». Это поможет отделить смоук-тесты от остальных. Такой метод обеспечивает компактную и быструю проверку базовой функциональности системы.
- Фильтрация и выбор: Применяйте фильтр, чтобы выбрать только тесты, помеченные как smoke, и не запускать весь набор.
- Селективный запуск: В разделе «Джобы» в ТестОпс настройте запуск тестов на стороне CI-сервера. Это даст возможность запускать только выбранные smoke-тесты, а не весь набор.
Что такое санити-тестирование
Определение и цели
Санити-тестирование (от англ. Sanity Testing), так называемая «проверка на вменяемость», — узконаправленное исследование конкретных изменений или исправлений в коде. Основные цели направлены на подтверждение корректности внесённых изменений в код, подтверждение отсутствия новых дефектов, проверку общей стабильности системы после правок.
Основные задачи санити-тестирования
- Проверка исправлений: Убедиться, что ранее обнаруженные дефекты были успешно устранены.
- Оценка новой функциональности: Подтвердить корректность работы недавно добавленных функций.
- Быстрая проверка стабильности: Определить, не появились ли новые дефекты после внесения изменений.
Применение тестирования на согласованность
Санити-тестирование проводится после внесения небольших изменений или исправлений в код. Например, после исправления бага команда тестирования выполняет санити-тесты, чтобы убедиться, что проблема решена и система работает стабильно.
Санити-тестирование в ТестОпс
- Пользовательские поля и компоненты: Санити-тесты удобно структурировать с помощью тега sanity и пользовательского поля Component, если вы хотите проверять конкретные модули или зоны приложения после правок.
- Гибкая фильтрация: ТестОпс позволяет создать фильтр, который отбирает только тесты с тегом sanity, либо, например, sanity + компонент = «Авторизация». Это даёт точную выборку под конкретные изменения.
- Селективный запуск через джобы: Как и для смоук-проверок, селективный запуск позволяет выполнять только нужные sanity-тесты. Это особенно эффективно при проверке фиксов без необходимости запускать полную регрессию.
Чем отличаются cмоук- и cанити-тестирование
Что проверяется
Начальные проверки охватывают только базовые функции — например, запуск приложения, авторизацию, переход по основным страницам или доступность ключевых компонентов интерфейса — они нужны, чтобы убедиться, что система в целом запускается и не «падает» сразу после сборки. Проверки стабильности касаются лишь отдельных компонентов, изменённых в последнем коммите, — будь то логика, багфиксы или элементы интерфейса.
Когда применяются
- Первая группа запускается сразу после сборки. Это экспресс-проверка перед запуском полного тестового прогона.
- Вторая используется после конкретных правок в уже проверенной версии. Она помогает подтвердить, что фиксы не вызвали побочных эффектов.
Цель проверок
- Поверхностная проверка — отсечь критичные баги до регресса.
- Точечная — убедиться в надёжности последних изменений.
Кто запускает и как часто
- Первый набор может запускаться как вручную, так и автоматически — чаще всего после каждого билда.
- Второй — выборочно и по необходимости, при каждом изменении кода в стабильной ветке.
Частота и объём зависят от практик команды. Например, в CI-сценариях smoke-запуски выполняются автоматически при каждом коммите, а sanity-наборы — только при ручном триггере или изменении критичных компонентов. Но оба подхода работают быстрее, если хорошо настроены фильтры и запускаются выборочно, без всей тестовой базы.
Пример практического применения смоук- и санити-тестов
Представим, что в новом релизе приложения был обновлён алгоритм авторизации, из-за чего возникла ошибка, связанная с невозможностью входа пользователей с определёнными символами в пароле.
- Сначала выполняется смоук-тестирование, чтобы убедиться, что приложение вообще запускается, базовые функции вроде входа и выхода работают без критических ошибок.
- Затем, после обнаружения и исправления конкретного бага в авторизации, проводится санити-тестирование исключительно для проверки этого исправления и связанных с ним областей.
Чёткое разделение ролей смоук- и санити-тестирования помогает быстро находить критические ошибки и оперативно проверять исправления. Правильно используя оба подхода, команда сокращает риски выпуска нестабильного продукта и ускоряет выход релизов.
Как сочетать смоук- и санити-тестирование
Дымовое и санити-тестирование не взаимоисключающие подходы, а части одной стратегии. Вместо выбора между ними команды назначают отдельные теги на тесты в зависимости от цели их запуска. Наборы обоих типов тестов запускаются в разных ситуациях и служат разным целям, но работают в связке.
Оценка пригодности сборки к дальнейшему тестированию
Смоук-тесты подходят для быстрой проверки общей работоспособности приложения после новой сборки. Они позволяют сразу выявить критические ошибки.
Локальная валидация правок
Санити-тесты эффективны при внесении точечных изменений, таких как исправление конкретного дефекта или добавление небольшой функциональности, которая не затрагивает всю систему.
Как реализовано смоук- и санити-тестирование в ТестОпс
Долгие циклы тестирования тормозят релизы, а ложные сбои крадут время команды. В экосистеме ТестОпс это решается так: теги, фильтры и селективные запуски позволяют проверять только ключевые сценарии, существенно ускоряя процесс.
Метки и поля для организации тестов
Автотесты можно помечать тегами, такими как «smoke» или «sanity», прямо в коде с помощью аннотаций (layer, severity). Эти метки автоматически отображаются в ТестОпс без дополнительных настроек. Рекомендуется также добавлять пользовательские поля: «Тип запуска» для базовой работоспособности (smoke) или «Компонент» для проверки после правок в модуле (sanity). Это способствует созданию четкой структуры, предотвращая смешение тестов в общей базе данных.
Фильтры и планы для точного отбора
Сбор набора сценариев возможен через расширенные фильтры по тегу, владельцу, компоненту или статусу. Динамические тест-планы создаются с помощью запросов и синхронизируются перед запуском для обновления данных. Для smoke-тестирования подходит план с приоритетными API-тестами, а для sanity-тестирования — фокус на измененных зонах, таких как «Авторизация».
Автоматизация запусков в CI
Запуск осуществляется только для необходимых задач через интерфейс или джобы в ТестОпс. Интеграция с Jenkins, GitLab или TeamCity обеспечивает автоматизацию всех процессов: выполнение smoke-тестов на каждом коммите и sanity-тестов по триггеру при изменениях. Возможность комбинировать ручные и автоматические тесты в одном плане позволяет агрегировать результаты через Allure-адаптер. Параллельные прогоны на различных агентах ускоряют процесс получения обратной связи, снижая вероятность возникновения нестабильных тестов.
Мониторинг для оперативного контроля
В разделе «Запуски» можно отслеживать статус в реальном времени и оперативно реагировать на возможные сбои. Дашборды предоставляют визуализацию метрик стабильности, включая тренды по тегам и отчеты в формате PDF/CSV. Также можно настроить оповещения в Slack или Telegram, чтобы команда всегда была в курсе событий.
Коротко о главном
Смоук- и санити-тесты не исключают друг друга. Смоук проверяет, запускается ли система и работают ли основные функции. Санити помогает быстро убедиться, что конкретное исправление не вызвало побочных эффектов. Используйте оба подхода в связке: так вы быстрее найдёте критические ошибки и подтвердите стабильность перед релизом.
📚 Попробуйте в работе
Узнайте больше о возможностях настройки CI-интеграции в системе управления тестированием ТестОпс: