有没有人进行过时间单元测试?
我甚至不确定这种术语是否被创造出来,但重点是测试操作是否在时间限制内执行。我有一些算法,我想测试他们的执行时间是否按预期增加,我想类似的测试可以用于IO,什么不是,有点像test_timeout或其他东西。
然而,由于硬件会影响执行速度,因此它似乎并不重要。所以我想知道是否有人曾经尝试过这种事情,如果他们愿意分享他们的经验。
由于
编辑:尝试编制在这种情况下需要处理的内容列表
答案 0 :(得分:7)
从我的经验中得到的一些注释......我们关心许多组件的性能,并且有一个非常类似于测试的框架来锻炼和计时(事后看来,我们应该使用CppUnit
或boost::test
就像我们为单元测试所做的那样)。我们将这些称为“组件基准”而不是单元测试。
答案 1 :(得分:2)
我所知道的内置到单元测试框架的最接近的事情是在{JUnit 4中添加的timed tests。这可以用来确保算法的性能不会'随着输入大小的增加,t会降低。
答案 2 :(得分:1)
如果要检查时间是否增加,不同机器的硬件应该无关紧要,如果不检查绝对值,而是检查相对变化。或者我在这里遗漏了什么?
答案 3 :(得分:1)
我认为您可以对单元测试运行时数据进行回归检查。通过大量的单元测试框架,您通常可以获得一个名为testname,executiontime的报告。我知道junit / surefire做到了。所以基本上你可以将它与之前的运行进行比较,并确定是否发生了任何重大变化。如果将所有这些保留在数据库中(使用主机名),则可以将同一运行时环境的执行时间与先前的测试运行进行比较。这样你就不会真正编写性能测试 但你只是单独断言执行时间没有重大变化。
答案 4 :(得分:0)
如果你在C ++工作,请查看http://unittest-cpp.sourceforge.net/
我没有使用时间,但它是我发现的最好(最简洁)的单元测试框架。