Декларативность не подразумевает вообще никакой последовательности действий. Ты объявил какой результат желаешь получить и условия его получения и опа все волшебно само-собой сложилось. Красота.
когда в реальном мире они не меняются, только порождаются новые. Чисто. Функционально.
Я не знаю в каком реальном мире ты живешь, но явно не в этой Вселенной. :D Допустим у меня есть стул и я его покрасил, в реальном мире у меня есть только покрашенный стул, в мире ФП у меня остался и покрашенный и непокрашенный. Чудеса в решете :) ФП переносит объекты из прошлого в настоящее. Машина времени прямо. :)
Наличие дополнительного ручного тестирования никак не отменяет необходимость автоматических тестов на разных уровнях.
А TDD - это вообще про написание кода больше
Ну да. Я не против автоматического тестирования вообще, я скорее разочарован в TDD, никак не помогает в конечном итоге, скорее мешает. Особенно если проект не очень крупный.