Модульное тестирование протокола связи

2

Я разрабатываю библиотеку для последовательной связи с FPGA через порт RS-422. Эта библиотека является частью более крупного проекта.

Я знаю, что могу проверить некоторые его части, как генерация сообщений. Вы устанавливаете входы, и вы можете проверить, соответствует ли массив байтов ожидаемому. Но что, если бы я хотел сделать более общий тест, как я могу создать для него модульные тесты? мне нужно написать симулятор поведения FPGA? можно ли протестировать библиотеку в изоляции?

Теги:
unit-testing
testing
communication

3 ответа

2
Лучший ответ

Я бы сказал, что тестирование с эмулятором или макером позволит вам реализовать свои кодовые пути гораздо легче, чем подталкивать реальную вещь.

В идеале вы используете что-то ранее существовавшее. В противном случае это может быть небольшим количеством усилий для создания эмуляции. Однако, если вы недостаточно хорошо понимаете протокол, чтобы эмулировать его, вы, конечно же, не можете с ним общаться: -)

  • 0
    Как вы указали, в этом случае проблема в том, что, возможно, модульное тестирование потребует больших усилий ...
  • 1
    Не уверен, что это большие усилия, начиная с какой-то насмешливой библиотеки. Если альтернативой является не тестирование, то нам нужно сделать работу. Возможно, вы можете сделать простые вещи против реального протокола, но в крайних случаях, вероятно, потребуется какой-то эмулятор.
Показать ещё 1 комментарий
1

Вы можете сделать макетный класс, который будет работать как симулятор. Просто сделайте так, чтобы ваша функция записи обрабатывала отправленную вами информацию и сохраняла результат на каком-то буфере, который мог бы быть просто нормальной строкой. Затем создайте функцию чтения, которая читает строку, удаляет ее и затем возвращает ее вам.

  • 0
    Это больше не модульное тестирование, а интеграционное тестирование - и, следовательно, правильный путь. Модульное тестирование будет просто тестированием классов самостоятельно.
  • 0
    @BeowulfOF Вот о чем я думаю ... Я не хочу заканчивать модульное тестирование своих модульных тестов :-)
Показать ещё 1 комментарий
0

Вы хотите unit test драйвер для FPGA или хотите unit test протокол? Потому что, если вы хотите протестировать оба, это уже будет выглядеть как (системный) интеграционный тест для меня.

Да, можно изолировать библиотеку связи. Убедитесь, что ваш протокол связи не слишком переплетается с драйвером устройства; таким образом вы можете протестировать его изолированно.

Мое предложение:

  • unit test мелкие детали; испытайте их throroughly
  • проверьте, что вы хотите от теста интеграции; много данных или стресс-тест? сделать его ортогональным к unit test
  • Если вы издеваетесь над оборудованием, сделайте его очень простым.

Какие ошибки я бы интересовал при тестировании библиотеки FPGA +:

  • обрабатывает протокол в соответствии со спецификациями?
  • как он себя ведет при переполнении или потоке буфера?
  • выполняется обработка прерываний, как ожидалось?
  • правильно ли он обрабатывает все сигналы rsx22 (разрыв, четность, стоповые бит)?

Что касается моделирования: у меня был очень хороший результат, выполняемый код в Matlab/Simulink (т.е. с использованием TrueTime, свободного плагина). Затем Simulink можно использовать для подключения к любому оборудованию в цикле (HIL) или модели в цикле. В качестве альтернативы можно использовать программный макет (но часто сложно имитировать асинхронные события, которые являются интересными, если вы близки к аппаратным средствам, то есть обработчикам прерываний)

  • 0
    Я просто хочу проверить протокол на стороне компьютера. FPGA разрабатывается кем-то другим, и у нас обоих есть спецификации.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню