时间单元测试的想法和技巧? [英] Ideas and tips for temporal unit-testing?

查看:20
本文介绍了时间单元测试的想法和技巧?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人做过时间单元测试吗?

Has anyone done temporal unit-testing?

我什至不确定这样的术语是否已经被创造出来,但重点是测试操作是否在时间限制内执行.我有一些算法,我想测试它们的执行时间是否按预期增加,我想类似的测试可用于 IO,而不是类似 test_timeout 之类的.

I'm not even sure if such lingo has been coined or not, but the point is to test that operations perform within temporal limits. I have a few algorithms and I want to test that their execution time increases as expected, and I guess similar testing could be used for IO, and what not, kind of like test_timeout or something.

然而,因为硬件会影响执行速度,所以这似乎不是小事.所以我想知道是否有人以前尝试过这种事情,他们是否可以分享他们的经验.

However because the hardware affects the speed of execution it doesn't seem trivial. So I was wondering if anyone has tried this sort of thing before, and if they would could share their experience.

谢谢

尝试编制一份在这种情况下需要注意的事项的清单

Trying to compile a list of stuff that needs to be taken care of in this kind of situation

推荐答案

只是我的一些经验...事后看来,我们应该像单元测试一样使用 CppUnitboost::test).我们称这些为组件基准测试"而不是单元测试.

Just some notes from my experience... We care about the performance of many of our components and have a very unittest-like framework to exercise and time them (with hindsight, we should have just used CppUnit or boost::test like we do for unittests). We call these "component benchmarks" rather than unittests.

  • 我们不指定时间上限,然后通过/失败...我们只是记录时间(这部分与客户不愿实际提出严格的性能要求有关,尽管性能是他们关心的问题)很多!).(我们过去曾尝试过通过/失败,但体验很糟糕,尤其是在开发人员机器上...由于电子邮件到达或后台正在编制索引而导致误报太多)
  • 致力于优化的开发人员只需缩短相关的基准测试时间,而无需构建整个系统(这与单元测试让您专注于代码库的一小部分非常相似).
  • 大多数基准测试会测试某些事物的多次迭代.资源的懒惰创建可能意味着组件的第一次使用可能有更多的设置时间"与之相关.我们注销第一次"、平均后续"和平均所有"时间.确保您了解这些之间任何显着差异的原因.在某些情况下,我们明确地将设置时间作为个别情况进行基准测试.
  • 应该很明显,但是:只计算您真正关心的代码,而不是测试环境设置时间!
  • 对于基准测试,您最终会比在单元测试中测试更多的真实"案例,因此测试设置和测试运行时间往往很多.
  • 我们有一台自动测试机器每晚运行所有基准测试并发布所有结果的日志.理论上,我们可以绘制它或让它标记低于目标性能的组件.在实践中,我们还没有开始设置类似的东西.
  • 您确实希望这样的自动测试机器完全没有其他职责(例如,如果它也是您的 SVN 服务器,那么进行大量结账的人会让您看起来像是经历了巨大的性能回归).
  • 考虑除时间之外您可能想要进行基准测试的其他标量,并计划从一开始就支持它们.比如达到压缩率"、天网AI智商"……
  • 不要让人们对低于最低规格硬件的基准数据进行任何分析.我见过浪费时间的原因是,由于在某人的垃圾笔记本电脑上运行基准测试而做出的设计决策,当在目标平台(高端服务器)上运行时,会显示完全不同的情况!

这篇关于时间单元测试的想法和技巧?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆