【发布时间】:2009-08-11 14:11:10
【问题描述】:
我正在开发一个库,用于通过 RS-422 端口与 FPGA 进行串行通信。这个库是一个更大项目的一部分。
我知道我可以测试它的某些部分,例如消息生成。您设置输入,您可以测试字节数组是否与预期匹配。但是,如果我想做一个更通用的测试,我该如何为它生成单元测试呢?我必须编写 FPGA 行为的模拟器吗?是否可以单独测试该库?
【问题讨论】:
标签: c# unit-testing testing communication
我正在开发一个库,用于通过 RS-422 端口与 FPGA 进行串行通信。这个库是一个更大项目的一部分。
我知道我可以测试它的某些部分,例如消息生成。您设置输入,您可以测试字节数组是否与预期匹配。但是,如果我想做一个更通用的测试,我该如何为它生成单元测试呢?我必须编写 FPGA 行为的模拟器吗?是否可以单独测试该库?
【问题讨论】:
标签: c# unit-testing testing communication
我想说,使用模拟器或模拟进行测试会让您更轻松地练习代码路径,而不是使用真实的东西。
理想情况下,使用预先存在的东西。否则,构建仿真可能不是一件小事。但是,如果您对协议的理解不够好,无法模拟它,那么您肯定无法与之通信:-)
【讨论】:
您可以制作一个模拟类,用作模拟器。只需让它让您的写入函数处理您发送的信息并将结果保存在某种缓冲区中,这可能只是一个普通的字符串。然后创建一个读取字符串的读取函数,将其擦除,然后将其返回给您。
【讨论】:
您要对 FPGA 的驱动程序进行单元测试,还是要对协议进行单元测试? 因为如果你想同时测试两者,它在我看来已经像是一个(系统)集成测试。
是的,可以单独测试通信库。确保您的通信协议不会与设备驱动程序过于交织;这样你就可以单独测试它。
我的建议:
在测试 FPGA+通信库时我会感兴趣的错误类型:
至于模拟:我在 Matlab/Simulink 中运行代码(即使用免费插件 TrueTime)获得了非常好的结果。然后可以使用 Simulink 连接到回路中的硬件 (HIL) 或回路中的模型。或者,可以使用软件模型(但通常很难模拟异步事件,如果您靠近硬件;即中断处理程序,这将非常有趣)
【讨论】: