Были ли случаи, когда TDD увеличивал время разработки? - PullRequest
5 голосов
/ 25 марта 2010

Я читал TDD - Как начать на самом деле думать TDD? и я заметил, что многие ответы указывают, что тесты + приложение должны занимать меньше времени, чем просто написание приложения. По моему опыту, это не так. Моя проблема, однако, в том, что около 90% кода, который я пишу, имеет ТОНН вызовов операционной системы. Время, потраченное на их макет, на намного больше, чем просто написание кода. Иногда в 4 или 5 раз больше времени для написания теста, чем для написания реального кода.

Мне любопытно, есть ли другие разработчики в этом сценарии.

Ответы [ 4 ]

4 голосов
/ 25 марта 2010

В целом, когда люди понимают, что TDD тратит время, необходимое для выполнения части работы, требуется больше времени, потому что у них неправильное определение «выполнено» или «часть работы». Обычно эти люди верят в миф о том, что «код завершен».

Любой может набрать некоторый код быстрее, чем набрать некоторый код и некоторые тесты . Тем не менее, на самом деле печатать не там, где время идет. Если вы начнете измерять все время - от концепции до развертывания - что требует целая функция - от супа до орехов, вы перестанете ощущать, что TDD «занимает больше времени».

Кроме того, ОС не так важна, как подразумевает Джоэл: макетируйте ОС, чтобы вы могли набирать текст вашего сложного , используя вызовов ОС, но не пытайтесь тестировать ОС, если только У вас есть причина, по которой вы должны вызвать предположение в качестве теста.

1 голос
/ 25 марта 2010

TDD не дразнит. Иногда в хорошем TDD используются макеты, но множество TDD можно обойтись без насмешек, и, если вы слишком много сталкиваетесь с вашим TDD, возможно, вам нужно пойти в «старую школу» и написать более простые тесты.

0 голосов
/ 25 марта 2010

К сожалению, это НЕ зависит от языка. На должным образом насмешливых языках (мой опыт работы с Perl) насмешка НИЧЕГО - включая системные вызовы - при наличии надлежащей библиотеки издевательств ОЧЕНЬ дешево, быстро и легко.

0 голосов
/ 25 марта 2010

Вам не нужно достигать 100% покрытия кода. Если фрагмент кода представляет собой простую оболочку вокруг вызова ОС, то должно наступить время, когда вы предполагаете, что вызов ОС сделает то, что должен (т.е. вам не нужно вызывать простую оболочку).

Теперь, если у вас есть сложная логика вокруг этого вызова ОС, тогда имеет смысл высмеивать вызов os и тестировать логику модулем. Конечно, если у вас есть хороший уровень абстракции поверх вызова ОС, это не составит труда.

Вы просто должны сосредоточить свои усилия на деталях, которые дадут вам наилучшую отдачу от вашего технического обслуживания

...