Я работаю с манипуляциями со звуком, обычно используя Matlab для прототипирования и C++ для реализации. Недавно я читал о TDD. Я просмотрел несколько основных примеров и с большим энтузиазмом отношусь к этой парадигме.
В настоящее время я использую то, что я бы назвал глобальным подходом, основанным на тестировании. Для этого я пишу блоки обработки сигналов на C++, а затем создаю простой MEX-файл Matlab, который может взаимодействовать с моими классами. Впоследствии я добавляю функциональность, проверяя, совпадают ли результаты с эквивалентным скриптом Matlab. Это работает нормально, но тесты быстро устаревают по мере развития системы. Кроме того, я тестирую всю систему, а не только отдельные ее элементы.
Было бы неплохо использовать устоявшуюся структуру TDD, в которой я мог бы иметь набор тестов, но я не вижу, как я могу проверить функциональность блоков обработки без тестов, которые столь же сложны, как и тестируемый код. Как бы я генерировал эталонные сигналы в тесте C++ для проверки блока обработки, чтобы тест не был формой самосбывающегося пророчества?
Если кто-то имеет опыт в этой области или может предложить некоторые методологии, с которыми я мог бы ознакомиться, то это было бы здорово.