Непрерывная интеграция - это «сборка», но это часть программной части цикла разработки. Так же, как «тесты» в TDD являются частью программной части цикла разработки.
Все еще будут сборки и тестирование как часть общего цикла разработки.
Цель непрерывной интеграции и тестирования заключается в сокращении циклов обратной связи и предоставлении программистам большей видимости. В конечном итоге это означает меньше проблем при тестировании и сборке, но это не значит, что вы больше не выполняете первоначальные части цикла разработки - они просто более эффективны и могут быть подняты на более высокий уровень, поскольку возникают более существенные проблемы. пойман ранее в цикле разработки.
Таким образом, вам все равно придется заморозить код (или хотя бы ответвление), чтобы гарантировать, что базовый уровень того, что вы отправляете, соответствует ожидаемому. Тот факт, что кто-то может реализовать что-то с высокой степенью уверенности, не означает, что это входит в ваш выпуск без прохождения тех же самых заключительных циклов, и замораживание кода является важной частью этого.
С помощью CI ваш код может быть очень коротким, так как ваша окончательная сборка, тестирование и выпуск могут быть очень надежными, и замораживание кода может даже не существовать в небольших проектах, так как нет необходимости в ветке - вы выпускаете и очень быстро вернитесь к разработке следующего набора функций.
Я также хотел бы добавить, что CI и TDD позволяют завершающей фазе сборки и тестирования вернуться ближе к традиционному водопаду (сделать все dev, выполнить все тестирование, затем выпустить), в отличие от более продолжительного QA, который было сделано на проектах с еженедельной или ежемесячной сборкой. Ваши тестировщики могут использовать сборки CI для получения ранней обратной связи, но это фактически обратная связь другого рода, чем в финальном тестировании, где вы ищете стабильность и надежность в отличие от функциональности (которая, очевидно, была упущена в «тестах» модуля, которые разработчики построили).