Я считаю, что это сильно варьируется в зависимости от кода, с которым вы работаете - при написании чего-либо с нуля, на основе тестирования, для реализации этой функции, вероятно, потребуется примерно столько же времени, сколько и без тестов, но вы сохраняете более долгий срок о количестве найденных ошибок и о том, насколько легко вы можете поддерживать и расширять эту кодовую базу. Кто-то может поспорить, что в этом случае быстрее писать с помощью тестов, так как вы избегаете тех головокружительных моментов, когда код просто не работает должным образом, и вам нужно использовать отладчик, чтобы узнать, что происходит, в гораздо более широком смысле. изменение набора, которое обычно допускает TDD.
Когда вы пытаетесь реализовать функции поверх существующей "устаревшей" базы кода (как Майкл Фезерс определил бы унаследованную версию), часто требуется значительно больше времени для реализации функции с тестами, чем без, из-за количества тщательных рефакторинг, который необходимо выполнить до написания тестов, как правило, возможен. В этом случае написание модульных тестов будет по-прежнему приносить долгосрочную выгоду, но вы должны подумать над тем, оправдана ли эта долгосрочная выгода для немедленных затрат.
Как правило, я бы всегда настаивал на какой-либо форме автоматического тестирования, будь то единичное или функциональное, несмотря на дополнительные затраты на унаследованные кодовые базы. Без этого вы, скорее всего, застрянете в кодовой базе, которую очень сложно поддерживать и которая требует постоянного повторяющегося ручного тестирования, чтобы убедиться, что он продолжает функционировать с частыми регрессиями.