Модульное тестирование протокола связи - PullRequest
2 голосов
/ 11 августа 2009

Я занимаюсь разработкой библиотеки для последовательной связи с ПЛИС через порт RS-422. Эта библиотека является частью большого проекта.

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

Ответы [ 3 ]

2 голосов
/ 11 августа 2009

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

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

1 голос
/ 11 августа 2009

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

0 голосов
/ 11 августа 2009

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

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

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

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

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

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

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

...