Есть ли статистика, показывающая, сколько времени потребуется для разработки приложений при создании модульного теста во время разработки по сравнению с простым программированием?
Есть несколько очень интересных исследований по этому поводу. Прочитайте следующий технический документ:
Реализация улучшения качества с помощью тестовой разработки: результаты и опыт четырех промышленных групп
Технический документ и другие исследования одного из его авторов, Начи Нагаппана , обсуждаются здесь:
http://research.microsoft.com/en-us/news/features/nagappan-100609.aspx
Исследование и его результаты были опубликованы в статье под названием «Реализация улучшения качества с помощью разработки, основанной на тестировании: результаты и опыт четырех промышленных групп», автором: Nagappan и коллеги по исследованиям Э. Майкл Максимилиен из исследовательского центра IBM Almaden; Тирумалеш Бхат, главный руководитель отдела разработки программного обеспечения в Microsoft; и Лори Уильямс из Университета штата Северная Каролина. Исследовательская группа обнаружила, что команды TDD создали код, который на 60-90 процентов лучше с точки зрения плотности дефектов, чем команды, не использующие TDD. Они также обнаружили, что командам TDD потребовалось больше времени, чтобы завершить свои проекты - на 15–35 процентов дольше.
«За 12-месячный цикл разработки 35 процентов - это еще четыре месяца, что огромно», - говорит Нагаппан. «Однако компромисс заключается в том, что вы значительно снижаете затраты на обслуживание после выпуска, поскольку качество кода намного лучше. Опять же, это решения, которые должны принимать менеджеры - где они должны принять удар? Но теперь они на самом деле имеют количественные данные для принятия этих решений ».
Кроме того, Джейсон Горман был предложен такой эксперимент в этом году на конференции Software Мастерства. Он пытался провести эксперимент по созданию того же приложения, используя подход TDD и не-TDD, и недавно он написал в блоге о своих результатах :
За 3 итерации среднее время, затраченное на заполнение ката без TDD, составило 28 м 40 с. Среднее время с TDD было 25м 27с. Без TDD я в среднем сделал 5,7 прохода (сдача в приемочные испытания). С TDD я в среднем сделал 1,3 прохода (в двух попытках они прошли впервые, за одну - 2 прохода).
Теперь, это был детский эксперимент, конечно. И не совсем лабораторные условия. Но я отмечаю пару интересных вещей, все же.
Будет интересно увидеть полные результаты этого эксперимента, когда больше людей выполнит его.
Имеется ли какая-либо статистика, показывающая, сколько часов снижается техническое обслуживание при наличии (хороших) модульных тестов?
Из приведенного выше документа:
Результаты исследований показывают, что плотность дефектов перед выпуском четырех продуктов снизилась на 40-90% по сравнению с аналогичными проектами, в которых не использовалась практика TDD.