2009-02-04 37 views
6

我有一些代码要测量自动回归测试中的连续运行速度。这样做的目的是提醒我对代码进行的修改会对性能产生负面影响。在自动回归测试中测量执行时间的最佳方法

在伪代码,我想是这样的:此

cpuTimer.start 
runTest 
cpuTimer.stop 

diff = cpuTimer.getDuration 

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

我看ThreadMXBean的#getCurrentThreadCpuTime(),但关键问题是,自动化测试将在广泛运行不同开发人员的产品范围,并且将自动进行测试,以测试具有不同硬件和功能的服务器。

这项工作,或将数字出错?

该问题应该如何解决?有没有更好的办法?有这样一个标准的工具吗?

回答

0

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

如果你把这些放在一个带有hostname,testname,executiontime和buildNumber字段的数据库表中,你应该可以完成你需要的大部分工作。

+0

我应该说我没有使用JUnit。对于单调乏味,可怕的技术和历史原因,整个系统都是定制的。 – izb 2009-02-04 14:41:47

+0

用junit4切换到junit变得非常容易;) – krosenvold 2009-02-04 15:41:28

3

您可以试试看Perf4J。我还没有使用它,但它在我的调查清单上。

从他们的主页:

的Perf4是System.currentTimeMillis的()为log4j的是为System.out.println()

Developer Guide是一个很好的介绍。