Нужно ли запускать полный набор регрессионных тестов ежедневно?

Ответ

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

  1. Многоуровневое тестирование (Test Pyramid):

    • Ежедневно/при каждом коммите: Запускаются быстрые модульные (Unit) и интеграционные тесты — это основа пирамиды.
    • Ночью/перед релизом: Запускаются более медленные E2E и регрессионные тесты.
  2. Селективный запуск регрессии (Test Impact Analysis):

    • Современные CI/CD-системы (например, с помощью инструментов вроде git diff) могут определять, какие модули кода были изменены, и запускать только те регрессионные тесты, которые с ними связаны.
  3. Параллельный запуск и оптимизация:

    • Длинные тестовые наборы разбиваются на группы и выполняются параллельно на нескольких агентах, что сокращает общее время.

Практическое правило: Полный регрессионный прогон выполняется для стабилизации ветки перед мержем в main, перед выходом major-версии или после критических изменений в архитектуре. Ежедневная же цель — быстро получить обратную связь по последним изменениям через сфокусированные тесты.

Ответ 18+ 🔞

Да ты послушай, что эти умники понапридумывали! Ну, типа, каждый день гонять ВЕСЬ регресс — это ж ебать мои старые костыли, мартышлюшка! Это как пытаться каждый вечер всю квартиру с белизной отдраить, пока ты просто чашку из раковины убрал. Ресурсов дохуя, времени ноль, а толку?

Вот как умные люди делают, чтобы не обосраться:

  1. Пирамида тестирования, мать её. Представь себе пирамиду, да?

    • Каждый день, после каждого чиха в коде: Гоняются модульные (Unit) и интеграционные тесты. Быстро, чётко, как швейцарские часы. Основание пирамиды, ёпта! Если тут всё зелёное — можно спать спокойно.
    • Ночью или перед тем как выкатить народу: Вот тут уже подключаются медленные E2E и регрессионные тесты. Пусть себе ползают, как черепахи, пока все спят. Это верхушка пирамиды, её не каждый день таскают.
  2. Селективный отбор, хитрая жопа! Современные системы CI/CD — они ж не лыком шиты. Глянули git diff, поняли, что ты там в файле UserService.java накосячил, и запустят только те регрессионные тесты, которые с этим сервисом связаны. Остальные — отдыхают. Гениально и просто, как хуй с горы!

  3. Параллельный ад. Если уж надо прогнать много, то длинный-предлинный набор режут на куски и гоняют одновременно на куче агентов. Вместо восьми часов — получас. Волшебство, блядь!

А теперь золотое правило, в рот меня чих-пых: Полный регресс — это как генеральная уборка перед приездом тёщи. Делаешь её только перед смерчем кода в основную ветку (main), перед крупным релизом или после таких изменений, после которых сам от себя охуел. А ежедневная задача — не устроить апокалипсис, а быстро понять, не сломал ли ты то, что работало пять минут назад. Всё гениальное — просто, как этот твой Герасим, который только «Муму» и мычал.