首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >时间单元测试的想法和提示?

时间单元测试的想法和提示?
EN

Stack Overflow用户
提问于 2009-01-27 12:04:10
回答 5查看 1.3K关注 0票数 9

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

我甚至不确定这种术语是否被创造出来,但重点是测试操作在时间范围内的执行情况。我有几个算法,我想测试它们的执行时间是否如预期的那样增加,我想类似的测试可以用于IO或者其他类似于test_timeout之类的测试。

但是,由于硬件会影响执行的速度,所以看起来并不简单。因此,我想知道是否有人曾经尝试过这类事情,以及他们是否愿意分享他们的经验。

谢谢

编辑:试图编译在这种情况下需要处理的事情列表

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-01-27 13:59:43

只是根据我的经验..。我们关心我们许多组件的性能,并且有一个非常统一的框架来执行和计时它们(事后看来,我们应该像在单元测试中一样使用CppUnitboost::test )。我们称这些为“组件基准测试”而不是单元测试。

  • 我们不指定时间上限,然后通过/失败.我们只是记录时间(这在一定程度上与客户不愿意实际提供严格的性能要求有关,尽管性能是他们非常关心的事情!)(我们过去曾尝试过通过/失败,而且经验很糟糕,特别是在开发人员机器上.太多的错误警报,因为一封电子邮件到了,或者背景中有索引)
  • 从事优化工作的开发人员只需降低相关的基准测试时间,而不必构建整个系统(就像单元测试一样,您可以专注于代码库的一部分)。
  • 大多数基准测试一些东西的迭代的迭代。延迟创建资源可能意味着组件的第一次使用可以有更多的“设置时间”与其相关联。我们注销“1”、“平均后继”和“所有平均”次数。确保您理解这些差异的原因。在某些情况下,我们将设置时间显式地作为单个案例进行基准测试。
  • 应该是显而易见的,但是:只需计时您真正关心的代码,而不是测试环境设置时间!
  • 对于基准测试,与单元测试相比,最终测试“真实”情况的情况要多得多,因此测试设置和测试运行时往往要长一些。
  • 我们有一台自动测试机器,每晚运行所有的基准测试,并发布所有结果的日志。理论上,我们可以绘制它,或者让它标记低于目标性能的组件。在实践中,我们没有时间设置这样的东西。
  • 您确实希望这样一台自动测试机器完全不承担其他职责(例如,如果它也是您的SVN服务器,那么做一个大的检查就会使它看起来像一个巨大的性能倒退)。
  • 考虑其他标量量,除了时间之外,您可能还想对其进行基准测试,并计划从一开始就支持它们。例如,“实现压缩比”,“天网人工智能智商”.
  • 不要让人们在次最小规格硬件上对基准数据进行任何分析。我见过浪费时间的原因是,当在目标平台(高端服务器)上运行基准时,会显示出完全不同的东西,这是由于基准运行在某人的垃圾日志上而造成的。
票数 7
EN

Stack Overflow用户

发布于 2009-01-27 13:00:49

我所知道的最接近于单元测试框架的是定时测试,它是在JUnit 4中添加的,可以用来确保算法的性能不会随着输入大小的增加而下降。

票数 2
EN

Stack Overflow用户

发布于 2009-01-27 12:12:41

如果您想检查时间是否增加,那么不同机器的硬件应该不重要,如果您不检查绝对值,而是检查相对变化。还是我在这里漏掉了什么?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/483153

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档