自动化回归测试中测量执行时间的最佳方法

6
我有一些代码需要在自动化回归测试中连续运行并测量其速度。这样做的目的是为了让我知道对代码所做的更改对性能产生了负面影响。以下是伪代码示例:
cpuTimer.start
runTest
cpuTimer.stop

diff = cpuTimer.getDuration

if diff > prevDiff // Perhaps to within a tolerance
    failTest

我正在研究ThreadMXBean#getCurrentThreadCpuTime(),但关键问题是自动化测试将在各种不同的开发人员电脑上运行,并自动分配到具有不同硬件和能力的测试服务器上。
这样做是否可行,数字是否会出错?
应该如何解决这个问题?是否有更好的方法?是否有标准工具可以处理这种情况?
2个回答

3

你可以尝试查看Perf4J。我还没有使用过它,但它在我调查的事情列表上。

从他们的主页:

Perf4J是对System.currentTimeMillis()的优化,就像log4j对System.out.println()的优化一样

开发者指南是一个很好的介绍。


我们的项目需要做类似的事情,而Perf4J似乎是最佳解决方案。 - Mark Kegel

0
一种方法是分析从Maven和Ant中运行的JUnit输出的标准XML文件。这些文件包含了您所需的所有数据。虽然有工具可以基于这些生成报告,但我不知道有任何聚合器/监视器。
如果您将它们放入一个数据库表中,该表包含主机名、测试名称、执行时间和构建编号字段,那么您应该能够完成大部分需要做的事情。

我应该说一下,我没有使用JUnit。由于繁琐、可怕的技术和历史原因,整个系统都是自定义构建的。 - izb
使用junit4切换变得更加容易啦 ;) - krosenvold

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接