Їх досить багато, але переваги значно переважають недоліки.
Існує крута крива навчання.
Здається, багато розробників сподіваються, що вони можуть бути ефективними з тестування першого програмування вже з першого дня. На жаль, потрібно багато часу, щоб накопичити досвід та програмувати з тією ж швидкістю, як і раніше. Ви не можете його обійти.
Якщо бути більш конкретним, то дуже легко помилитися. Ви можете дуже легко (з дуже добрими намірами) закінчити написання цілого ряду тестів, які важко підтримати або перевірити неправильні речі. Тут важко навести приклади - такі проблеми просто потребують досвіду для вирішення. Потрібно добре почувати, як розділяти проблеми та проектувати на предмет доказивості. Моя найкраща порада тут буде робити програмування на пару з тим, хто добре знає TDD.
Ви робите більше кодування спереду.
Тест-спочатку означає, що ви не можете пропустити тести (що добре), і це означає, що ви в кінцевому підсумку пишете більше коду наперед. Це означає більше часу. Знову ж таки, ви не можете його обійти. Ви отримуєте винагороду від коду, який простіше підтримувати, розширювати та, як правило, менше помилок, але це потребує часу.
Може бути жорстким продажем менеджерам.
Менеджери програмного забезпечення, як правило, стосуються лише строків. Якщо ви перейдете на тестування першого програмування, і вам раптом знадобиться 2 тижні для завершення функції замість однієї, їм це не сподобається. Це, безумовно, бійка, з якою варто боротися, і багато менеджерів є достатньо освіченими, щоб її отримати, але це може бути важким продажем.
Може бути жорстким продажем іншим розробникам.
Оскільки існує крута крива навчання, не всі розробники люблять тестування першого програмування. Насправді я б здогадався, що спочатку більшості розробників це не подобається. Ви можете робити такі речі, як парне програмування, щоб допомогти їм досягти швидкості, але це може бути важким продажем.
Зрештою, переваги переважають недоліки, але це не допоможе, якщо ви просто ігноруєте недоліки. Знання того, що ви маєте справу з самого початку, допомагає вам домовитись про деякі, якщо не всі, недоліки.