У меня есть несколько модулей, которые прослушивают определенный порт для связи друг с другом, используя UDP с буферами протокола (C ++).
Мне нужно автоматизировать тесты для каждого из них.
Какая стратегия лучше всего подходит для тестирования?
Я имею в виду, что я мог бы написать программу на C ++, которая эмулирует каждый компонент, используя определенные команды, например, в xml:
<commands>
<send cmd="blahblah" from="module1" to="module2">
<expect cmd="ack" from="module2" to="module1">
</commands>
но мне сказали, что Expect / Tcl / Tk можно использовать. После некоторых исследований, я думаю, что сериализованные команды protobuf не могут быть выполнены со статическим текстом, кроме того, что я исследовал, Expect работает с выходным потоком, и для тестирования этих компонентов мне нужно что-то, что работает с сокетами TCP / UDP. Поправь меня, если я ошибаюсь. Так есть ли какой-то другой инструмент для достижения этого поведения (я имею в виду сокеты)?
У меня нет опыта ни с protobuf, ни с ожидаемым. Я хотел бы услышать некоторые мнения, возможно, использовать некоторые другие инструменты для выполнения этого типа тестирования.
Expect не очень подходит для двоичных данных, поэтому я бы не стал использовать его для сообщений буферов протокола.
Я бы порекомендовал написать небольшую C ++ (или любой другой язык) программу, которая принимает команду для отправки и ожидаемый ответ, как вы предложили. Вы можете использовать текстовый формат буферов протокола для представления ваших данных, поэтому вам не нужно писать ручное преобразование XML -> protobuf для каждого сообщения.
Других решений пока нет …