Я разрабатываю библиотеку для последовательной связи с FPGA через порт RS-422. Эта библиотека является частью более крупного проекта.
Я знаю, что могу проверить некоторые его части, как генерация сообщений. Вы устанавливаете входы, и вы можете проверить, соответствует ли массив байтов ожидаемому. Но что, если бы я хотел сделать более общий тест, как я могу создать для него модульные тесты? мне нужно написать симулятор поведения FPGA? можно ли протестировать библиотеку в изоляции?
Я бы сказал, что тестирование с эмулятором или макером позволит вам реализовать свои кодовые пути гораздо легче, чем подталкивать реальную вещь.
В идеале вы используете что-то ранее существовавшее. В противном случае это может быть небольшим количеством усилий для создания эмуляции. Однако, если вы недостаточно хорошо понимаете протокол, чтобы эмулировать его, вы, конечно же, не можете с ним общаться: -)
Вы можете сделать макетный класс, который будет работать как симулятор. Просто сделайте так, чтобы ваша функция записи обрабатывала отправленную вами информацию и сохраняла результат на каком-то буфере, который мог бы быть просто нормальной строкой. Затем создайте функцию чтения, которая читает строку, удаляет ее и затем возвращает ее вам.
Вы хотите unit test драйвер для FPGA или хотите unit test протокол? Потому что, если вы хотите протестировать оба, это уже будет выглядеть как (системный) интеграционный тест для меня.
Да, можно изолировать библиотеку связи. Убедитесь, что ваш протокол связи не слишком переплетается с драйвером устройства; таким образом вы можете протестировать его изолированно.
Мое предложение:
Какие ошибки я бы интересовал при тестировании библиотеки FPGA +:
Что касается моделирования: у меня был очень хороший результат, выполняемый код в Matlab/Simulink (т.е. с использованием TrueTime, свободного плагина). Затем Simulink можно использовать для подключения к любому оборудованию в цикле (HIL) или модели в цикле. В качестве альтернативы можно использовать программный макет (но часто сложно имитировать асинхронные события, которые являются интересными, если вы близки к аппаратным средствам, то есть обработчикам прерываний)