Вот допустим у вас есть клиент, которого разрабатываете вы (ваша команда). И есть сервер, который разрабатывает заказчик. Сервер разрабатывается «как есть», без всяких прототипов и симуляторов. Вам доступны только спеки протокола уровней с сессии до приложения нашей всеми любимой модели OSI/RM, причем, не всегда исчерпывающие, периодически в реализации протоколов находят баги, которые фиксят. Нет контроля за тем, какие данные выдает сервер. Если нужно покрыть определенную часть кода, нужно связываться с заказчиком и просить «а вот такие вот данные отправьте, пожалуйста».
Как в таких условиях можно выработать хоть сколько внятную стратегию тестирования? Получается только «попробовал по спекам реализовать клиента вот так вот -> протестировал -> фейл -> забагрепортил проблему заказчику -> пофиксил. Т.е. нужен специальный чел, который будет дописывать юнит-тесты постфактум, когда проблема уже решена. Т.е. ни о каком test-driven-development при таком подходе к разработке не может идти речи. Или?