От этого никуда не деться - если вы измеряете, сколько времени занимает код, просто то, как много времени у вас уходит на написание классов и т. Д., Тогда с TDD это займет больше времени. Если у вас есть опыт, это прибавит около 15%, если вы новичок, это займет как минимум 60% больше, если не больше.
НО, в целом вы будете быстрее. Почему?
- сначала написав тест, вы указываете, что вы хотите, и предлагаете именно это и ничего более - следовательно, экономите время на написание неиспользуемого кода
- без тестов вы можете подумать, что результаты настолько очевидны, что то, что вы сделали, правильно, а если нет. Испытания показывают, что вы сделали правильно.
- вы получите более быстрый отклик от автоматических тестов, чем при ручном тестировании
- при ручном тестировании время, затрачиваемое на тестирование всего по мере роста вашего приложения, быстро увеличивается - это означает, что вы перестанете это делать
- с помощью ручных тестов легко совершать ошибки и «видеть» что-то проходящее, когда это не так, это особенно верно, если вы запускаете их снова и снова и снова
- (хорошие) модульные тесты дают вам второй клиент для вашего кода, который часто выделяет проблемы проектирования, которые вы могли бы пропустить в противном случае
Добавьте все это, и если вы измеряете от начала до поставки, и TDD намного, намного быстрее - вы получаете меньше дефектов, вы берете на себя меньше рисков, вы прогрессируете с постоянной скоростью (что облегчает оценку) и список продолжается.
TDD сделает вас быстрее, без вопросов, но это нелегко, и вы должны позволить себе немного пространства для обучения и не унывать, если изначально оно кажется медленнее.
Наконец, вам следует взглянуть на некоторые приемы BDD, чтобы улучшить то, что вы делаете с TDD. Начните с функции, которую вы хотите реализовать, и внедрите ее в код, извлекая истории, а затем сценарии. Сконцентрируйтесь на реализации сценария решения за сценарием в виде тонких вертикальных срезов. Это поможет уточнить требования.