Если вы хотите рассматривать каждый из исполняемых файлов как «модуль», то есть способ ввести тесты, не будучи слишком инвазивным.Это создаст модули, которые будут немного большими для многих людей, чтобы им было удобно (типичные размеры, когда люди говорят о модулях, это класс или исходный файл), но ваш механизм связи обеспечивает хороший способ подключиться к тестам.*
Учитывая вашу архитектуру и тот факт, что у вас нет тестового набора для кода, я бы написал тестовый набор, который может взаимодействовать с каждым из исполняемых файлов изолированно, используя интерфейсы UDP.При выполнении тестов работает только один исполняемый файл (кроме тестового кода).Тестовый код имитирует другие исполняемые файлы, прослушивая их соответствующие порты UDP и предоставляя ответы в соответствии с требованиями тестового примера.Тестовый сценарий также стимулирует тестируемый исполняемый файл, отправляя ему запросы UDP.Если задействован также GUI / TUI, может потребоваться, чтобы части тестов выполнялись вручную.