单元测试通信协议

时间:2009-08-11 14:11:10

标签: c# unit-testing testing communication

我正在开发一个通过RS-422端口与FPGA进行串行通信的库。该库是更大项目的一部分。

我知道我可以测试它的某些部分,就像消息生成一样。您可以设置输入,并可以测试字节数组是否与预期数组匹配。但是,如果我想进行更一般的测试,我怎么能为它生成单元测试呢?我是否必须编写FPGA行为的模拟器?是否可以单独测试库?

3 个答案:

答案 0 :(得分:2)

我想说,使用模拟器或模拟进行测试会让你比刺激真实的东西更容易锻炼你的代码路径。

理想情况下,使用预先存在的东西。否则,构建仿真可能不是一件小事。但是,如果您不能很好地理解协议,那么您肯定无法与之通信: - )

答案 1 :(得分:1)

您可以创建一个可用作模拟器的模拟类。只需使它成为你的写函数处理你发送的信息并将结果保存在某种缓冲区上,这可能只是一个普通的字符串。然后创建一个读取字符串的读取函数,擦除它然后将它返回给你。

答案 2 :(得分:0)

您是要对FPGA的驱动程序进行单元测试,还是要对协议进行单元测试? 因为如果你想测试两者,它对我来说就像是(系统)集成测试。

是的,可以单独测试通信库。确保您的通信协议不与设备驱动程序交织在一起;这样你就可以单独测试它。

我的建议:

  • 单元测试小零件;彻底测试它们
  • 检查您对集成测试的要求;大量的数据或压力测试?使其与单元测试正交
  • 如果你模拟硬件,那就很简单

在测试FPGA +通信库时我会感兴趣的那种错误:

  • 是根据规格处理协议吗?
  • 它对缓冲区溢出/下溢有何影响?
  • 中断处理是否按预期工作?
  • 是否正确处理所有rsx22信号(中断,奇偶校验,停止位)?

至于模拟:我在Matlab / Simulink中运行代码有很好的结果(即使用TrueTime,一个免费的插件)。然后可以使用Simulink连接循环中的硬件(HIL)或循环中的模型。或者可以使用软件模型(但是如果你是接近硬件的话,通常很难模拟非常有趣的异步事件;即中断处理程序)