2009-02-04 77 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是一個很好的介紹。