跨平台数值测试?

时间:2015-11-21 01:59:01

标签: cmake regression-testing ctest

我需要测试在Linux和Windows上运行的数字软件。测试涉及将输出与已知良好输出等进行比较,类似于描述的内容 Numerical regression testing。为了澄清,输出不一定是数字 - 它们可以是分类器或文本的分类预测。在Linux上,这是一个差异;在Windows上它是别的东西,但我的目标是只编写一次测试。我知道CMake / CTest可用于生成跨平台测试,但它们似乎仅限于检查非零退出状态。是否有软件可以选择正确的"差异"自动在每个平台上?也许是我不知道的CTest模块/包?

1 个答案:

答案 0 :(得分:0)

CMake和CTest不提供复杂的测试评估。它主要区分传递测试,跳过测试,失败测试(非零返回值,异常,SIGTERM)。

  1. 使用FAIL / PASS_REGULAR_EXPRESSION评估输出。您可以为这两个属性使用正则表达式。正则表达式非常有限;特别是估计数值误差正则表达式是没用的。人们可以编写一个更复杂的CMake函数来扩展CMake的功能。我不知道有任何项目这样做。

  2. 您可以使用专门用于单元测试的外部工具。 CTest评估此工具的结果值。根据语言的不同,可靠的外部工具包括:googletest,JUnit,Python unittest甚至差异。

  3. 编写自己的输出评估脚本。例如,Perl或Python易于使用且具有良好的解析质量。您可以通过add_test将实际测试的脚本添加为参数。脚本运行测试,比较输出并将结果发送给CTest。

  4. 因此,您必须安装其他语言解释器,如Perl或Python或第三方帮助工具。或者坚持为每个平台编写评估。