Регрессионное тестирование: что это и как не гонять всё подряд

Регресс — самая объёмная и самая скучная часть работы, и именно поэтому её чаще всего делают неправильно: прогоняют всё подряд, устают и всё равно пропускают важное.

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

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

Причина существования проста: код связан сильнее, чем кажется. Правка в расчёте скидки задевает корзину, корзина — оформление заказа, оформление — письма и отчёты. Разработчик не всегда знает обо всех связях, и никто не знает.

РетестРегресс
ВопросПочинили ли этот дефектНе сломалось ли рядом
ОбъёмОдин сценарийМного сценариев
КогдаПосле каждого исправленияПеред релизом или регулярно
Кто чаще делаетТестировщик рукамиАвтотесты, если они есть

Главная ошибка: прогонять всё

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

Правильный подход — выбирать. Регресс не обязан быть полным, он обязан покрывать риск.

Полный прогон, сделанный формально, находит меньше, чем половина прогона, сделанная осмысленно.

Как выбрать, что проверять

  1. Посмотрите, что менялось. Список задач в сборке — отправная точка. Не список функций продукта, а именно изменения.
  2. Определите зону влияния. Спросите разработчика, что он трогал: часто ответ «поменял общий компонент кнопки» меняет весь план.
  3. Добавьте критичные сценарии всегда. Регистрация, вход, оплата, оформление заказа — они идут в каждый регресс независимо от изменений.
  4. Добавьте места с историей. Если этот модуль ломался три раза за квартал, он идёт в набор.
  5. Проверьте интеграции. Всё, что общается с внешними сервисами, ломается тише всего.
💡 Приём, который экономит день

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

Что делать, когда времени нет совсем

Ситуация обычная: релиз завтра, регресс идёт два дня. Работающий порядок — по убыванию цены ошибки.

И обязательно сообщите команде, что осталось непроверенным. Сокращённый регресс — нормальное решение, скрытый сокращённый регресс — источник сюрпризов.

Когда автоматизировать

Регресс — первый кандидат на автоматизацию, потому что повторяется без изменений. Но переводить всё подряд в автотесты не стоит: неустойчивый тест, который падает через раз, вредит больше, чем помогает — команда привыкает игнорировать красное.

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

Кто и когда проводит регресс

Организация прогона зависит от того, как часто выходят релизы, и здесь есть два рабочих подхода.

ПодходКак устроенКому подходит
Перед релизомОтдельный этап на день-два, участвует вся команда тестированияРелизы раз в две недели и реже
НепрерывноАвтотесты гоняются на каждой сборке, руками проверяется только затронутоеЕжедневные выкаты

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

Отдельная роль — регресс после исправления инцидента. Когда чинили на горячую, проверить нужно не только сам фикс, но и то, что спешка ничего не задела. Такие прогоны пропускают чаще всего именно потому, что все уже выдохнули.

Как поддерживать набор в форме

Набор регресса — живой документ. Если его не чистить, он растёт бесконечно и постепенно наполняется проверками функций, которых уже нет.

Как оформлять сами проверки — в разборе чек-листов и тест-кейсов. Быстрая проверка перед регрессом — чек-лист smoke-теста.

Как часто проводить регресс?

Перед каждым релизом в полном или сокращённом виде. Если релизы ежедневные, полный прогон делают по расписанию, а на каждую сборку остаётся smoke и автотесты.

Регресс — это только автотесты?

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

Что делать, если регресс находит дефекты каждый раз?

Это сигнал не про тестирование, а про процесс: скорее всего, не хватает модульных тестов и ревью. Стоит показать команде статистику — где именно ломается чаще всего.