2009-08-11 6 views
2

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

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

ответ

2

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

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

+0

Как вы указали, в этом случае проблема заключается в что, возможно, единичный тест потребует больших усилий ... – yeyeyerman

+1

Не уверен, что это ** отличное усилие, начиная с насмешливой библиотеки.Если альтернативой является ** нет ** тестирование, то нам нужно сделать работу. Возможно, вы можете сделать простой материал против реального протокола, но для крайних случаев, вероятно, потребуется какой-то эмулятор. – djna

+0

Да, я согласен с тобой, потому что вижу, что это насмешливое тестирование или нет. И, будучи частью сложной системы, я предпочитаю изоляцию возможных ошибок как можно больше. – yeyeyerman

1

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

+0

Это не модульное тестирование, а интеграционный тест - и, следовательно, правильный путь. Единичное тестирование было бы просто тестированием классов самостоятельно. –

+0

@BeowulfOF Это то, о чем я думал ... Я не хочу в конечном итоге выполнять модульное тестирование моих модульных тестов :-) – yeyeyerman

+1

Использование mocks - это не интеграционное тестирование, поскольку для серьезных модульных тестов обычно сложно избежать ошибок в некоторый облик. – djna

0

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

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

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

  • модульного тестирования мелких деталей; проверить их thoreoughly
  • проверить, что вы хотите от интеграционного теста; много данных или стресс-тест? сделать его ортогональным к испытанию
  • если вы макет аппаратного блока, сделать это очень просто

Вида ошибки, которые я был бы заинтересован в том, когда тестировании библиотеки FPGA + связь:

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

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

+0

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

Смежные вопросы