Смета реализации проекта с TDD

Есть ли какие-либо рекомендации при цитировании смет для проектов / задач, связанных с TDD?

Например, по сравнению с обычной разработкой задачи, для выполнения которой требуется 1 день, насколько больше должна потребоваться задача, управляемая TDD? На 50% больше времени или на 70% больше времени? Доступна ли какая-либо статистика при условии, что разработчик хорошо разбирается в языке и среде тестирования?


person panzerschreck    schedule 28.04.2010    source источник


Ответы (5)


Поначалу разница велика, уменьшается с опытом, но, вероятно, всегда является фактором.

Разница во времени реализации между обычным кодированием и TDD будет уменьшаться по мере того, как разработчик станет лучше разбираться в TDD. Новички в TDD и даже продвинутые пользователи, вероятно, будут в затруднении, решая, какие тесты писать, и / или напишут больше тестов, которые в конечном итоге будут выброшены после рефакторинга. По мере накопления опыта специалисты по TDD станут более эффективными, поскольку они станут лучше и быстрее выбирать, какие тесты писать.

Я не уверен, каков абсолютный нижний предел отношения обычного к TDD. Я бы предположил 1: 1,5, но я не могу поверить, что большинство разработчиков когда-либо смогут тестировать код так быстро, как они могут просто написать код, не говоря уже о написании кода, а затем написании тестов.

И, как говорили другие, значительным вознаграждением за это дополнительное время, потраченное на выполнение TDD, является то, что время отладки значительно сокращается для кода, управляемого тестированием.

person JeffH    schedule 29.04.2010

По моему опыту, написание тестов занимает столько же, а иногда и больше времени, чем разработка (т.е. добавляет от 100% до 150% больше времени), но значительно сокращает время, затрачиваемое на исправление ошибок. Вот несколько исследований разработки через тестирование. Также ознакомьтесь с этим документом.

person Pascal Thivent    schedule 28.04.2010

Время написания должно быть примерно таким же, как и разработка без тестирования. Время отладки должно быть сокращено примерно на 99%.

person Carl Manaster    schedule 28.04.2010

Еще одна выгода при создании кода с TDD заключается в том, что написанные тесты становятся набором регрессии. Затем тесты делают эти действия более безопасными:

  • Рефакторинг постфакторинга.
  • Дальнейшее развитие того же кода.
  • Исправление ошибок.

(NB относительно исправления ошибок, я помню пару раз, когда я либо забывал реализовать пару кейсов, либо были поздние дополнения к спецификации, дополнительная разработка была пустяком с тестами.)

person quamrana    schedule 01.05.2010

Если вам нужен математический ответ, я пришел к выводу, что время, потраченное на тестирование, составляет 2: 1 (консервативно - большая часть времени, потраченного на тестирование, - это время ДУМА). Однако вы не можете применить коэффициент 3X к вашим текущим оценкам (не TDD), потому что TDD помогает вам добиться устойчивого прогресса .. вы не тратите время

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

Вне всяких сомнений, я бы пошел на двукратное превышение ваших текущих оценок.

person Gishu    schedule 04.06.2012