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