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

时间:2009-02-04 14:27:59

标签: java performance testing automated-tests cpu-usage

我有一些代码,我想测量它在自动回归测试中连续运行的速度。这样做的目的是提醒我对代码所做的更改,这些更改会对性能产生负面影响。

在伪代码中,我想要这样的东西:

cpuTimer.start
runTest
cpuTimer.stop

diff = cpuTimer.getDuration

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

我正在考虑使用ThreadMXBean#getCurrentThreadCpuTime(),但关键问题是自动化测试将在各种不同的开发人员的PC上运行,并将自动进行测试,以测试一系列的不同的硬件和功能。

这会起作用,还是数字会出错?

如何解决这个问题?有没有更好的办法?是否有这种标准的标准工具?

2 个答案:

答案 0 :(得分:3)

您可能会尝试查看Perf4J。我还没有使用它,但它列在我要调查的事项列表中。

从他们的主页:

  

Perf4J是System.currentTimeMillis(),因为log4j是System.out.println()

Developer Guide是一个很好的介绍。

答案 1 :(得分:0)

一种方法是分析从maven和ant中运行的junit输出的标准xml文件。这些包含您需要的所有数据。虽然有基于这些工具生成报告的工具,但我不知道任何聚合器/观察者。

如果将这些文件放在包含字段hostname,testname,executiontime和buildNumber的数据库表中,您应该可以完成大部分所需的操作。