Зависит от обстоятельств — бывают модули, которые не оттестишь сразу — зависимости там и прочее. В таком случае довожу работу до какой-никакой логической единицы на которой можно провести логичное тестирование. Иногда получаются довольно большие блоки.
В целом подход — разбить функционал на несколько логичных «кусков» — допустим не больше 1-2 дней работы в идеале — и соответственно написал-оттестил-забыл.
В общем и целом — старайтесь найти золотую середину — когда кусок кода всё еще представляет из себя что-то единое, цельное, выполняющее единый функционал, но с другой стороны — уже поддаётся тестированию, в отличие от подвешенной сферической функции в вакууме
ЗЫ: пишу приложения, поэтому мелкая разбивка не получается — в той же MVC зачастую просто контроллер подвешенный в воздухе без модели и представления корректно не оттестируешь…