如何为包含“Tick Count(ms)”LabVIEW函数的VI编写单元测试?

时间:2013-11-21 23:47:11

标签: unit-testing labview

有一个VI,它的输出(指标)不仅取决于输入,还取决于" Tick Count"功能。问题是它不会为相同的输入产生相同的输出。每次我运行它,它会提供不同的输出。因此,仅捕获输入和输出的单元测试将失败。那么问题是如何为这种情况编写单元测试?

我不能在问题中包含VI,因为它包含几个子VI和"滴答计数"功能通过其所有级别的子VI传播。

EDIT1:我写了一个包装器,它减去两次连续运行的输出值,以消除基本参考时间(在此函数中未定义),但它会破坏输出。

2 个答案:

答案 0 :(得分:2)

我认为你被赋予了一项非常艰巨的任务,因为你被要求测试的功能是non-deterministic,它是challenging to write unit tests against non-deterministic code

有一些方法可以测试非确定性函数:例如,可以测试随机数生成器生成的值是否均匀分布到某个容差,或者测试时钟设置函数是否与ntp服务器匹配到某个容差。但是如果你能让底层代码具有确定性,我认为你团队会更快乐。

您使用条件禁用的想法很好,但我会添加创建包装器VI的附加步骤,然后使用它搜索并替换所有本机Tick Count。这样您就可以在一个地方对Tick Count进行任何修改。如果由于某种原因,代码实际上使用了滴答计数而不是分析(例如,它用于为伪随机数生成器设定种子),那么您可以使用“测试/调试”案例从Notifier中读取您正在注入的内容从您的测试代码中计入一组假蜱。通知程序非常适合这样的事情。

答案 1 :(得分:0)

您可以添加一个(可选输入),允许您覆盖刻度计数值。给它一个默认值-1,如果它的输入是-1,你可以在VI中使用滴答计数值 但是我从未见过依赖于滴答计数的代码。