Как собирать смок тесты и по каким критериям их выбирать
Что проверяют
Отличаете ли вы смок от санити и регрессии и умеете ли держать набор маленьким. Интервьюер хочет услышать критерии, а не список «логин, главная, корзина». Следом обычно спрашивают, что делать, если смок упал, и кто принимает решение.
Как отвечать
Сначала определение: смок это быстрая проверка, можно ли вообще работать со сборкой или окружением. Результат бинарный: прошёл, и сборку берут в тестирование или катят дальше; упал, и её возвращают. Отсюда критерии отбора:
- критичность для бизнеса: сценарии, без которых продукт бесполезен. Для магазина это вход, поиск, корзина и заказ с тестовой оплатой;
- блокирующие зависимости: если не работает авторизация, тестировать остальное бессмысленно, такие проверки идут первыми;
- ширина, а не глубина: по одному позитивному сценарию на ключевой модуль, без граничных значений и негативных веток;
- здоровье окружения: сервисы подняты, база и очереди доступны, конфиги подтянулись;
- стабильность и скорость: в смок попадают только тесты без флаков, весь набор проходит за минуты. Тест, упавший из-за нестабильности, обесценивает сигнал;
- независимость: тесты не зависят друг от друга и от данных, которые мог испортить предыдущий прогон.
Набор собирается тегом в фреймворке: @Tag("smoke") в JUnit 5, groups в TestNG, маркер smoke в pytest. Запускается на каждую сборку в CI и после каждого деплоя, включая прод, где проверки только читающие или на тестовых аккаунтах. Раз в релиз набор пересматривают: появилась критичная фича, появился тест.
Если опыта сборки набора не было, опишите, как выбрали бы сценарии для продукта, который тестируете сейчас, и почему остальное туда не попало.
Где спотыкаются
Включают в смок изменённые в сборке модули. Точечная проверка исправлений это санити или повторное тестирование, а смок одинаков для любой сборки.
Дают набору разрастись до сотен тестов на час прогона. Смок превращается в мини-регресс, и его перестают запускать на каждую сборку.
Проверяют только, что страница открылась и вернула 200. Страница может открыться с пустым списком товаров, поэтому проверять нужно ключевой элемент или результат действия.