Как проверять регрессии
Что проверяют
Отличаете ли вы регрессионное тестирование от повторного прогона всех тестов и умеете ли выбирать, что гонять при ограниченном времени. Почти всегда следом: «Релиз завтра, регресс занимает три дня, что будете делать?»
Как отвечать
Начните с определения: регрессия это поломка того, что раньше работало, после изменения кода, конфигурации, зависимостей или окружения. Не путайте с ретестом: ретест подтверждает исправление конкретного бага, регресс проверяет, что вокруг ничего не сломалось.
Дальше опишите, как вы выбираете объём:
- анализ влияния: что затронуто изменением. Помогают дифф в пул-реквесте, разговор с разработчиком, карта связей модулей. Правка расчёта скидки задевает корзину, оплату, чеки и письма;
- приоритет по риску: критичные пути (вход, оплата, оформление заказа) проходят всегда, редкие сценарии по остаточному принципу;
- уровни: смоук на каждой сборке, выборочный регресс на каждую фичу, полный перед крупным релизом;
- автоматизация: стабильные повторяющиеся сценарии в автотестах (
pytest, JUnit или TestNG, Playwright или Selenium для UI), которые запускаются в CI на каждый пул-реквест. Ручной регресс остаётся для нового и того, что дешевле посмотреть глазами; - поддержка набора: кейсы живут в системе управления тестами, устаревшие регулярно чистятся, каждый баг из прода превращается в новый регрессионный кейс.
Если регрессия найдена, а виновный коммит неясен, git bisect находит его бинарным поиском по истории.
На вопрос про три дня отвечайте приоритизацией: сузить до критичных путей и зоны изменений, распараллелить, открыто назвать риски непроверенного и оставить решение о выпуске команде.
Где спотыкаются
Отвечают «прогоняем все тест-кейсы». Это не стратегия, а отказ от выбора, и на большом продукте так не успевают ни разу.
Не могут объяснить, откуда берутся регрессионные кейсы. Набор должен расти из рисков и найденных багов, иначе он проверяет то, что никогда не ломается.
Мирятся с нестабильными автотестами. Когда красный прогон стал нормой, настоящую регрессию перестают замечать; флаки чинят или выносят в карантин.