簡介
1.J2EE性能測試
本書的方法用于一下兩種情況:
ü??????
性能測試一個完整的應用程序
ü??????
性能設計----分析J2EE API不同方面的性能代價,以及某中設計決策對總體性能的影響。
2.性能
開發的應用程序可以分為兩類:
交互式的:響應時間為關鍵,兩個度量標準,同時發生的用戶數量和響應時間。可以用這樣的語句來描述:“該應用程序能夠以1000毫秒的最大響應時間處理750個同時發生的活躍用戶;峰值時刻有800用戶,響應時間下降7%
”
。
批處理或后端應用程序:吞吐量來描述。事務定義要一致,在研究servlet時,我們定義事務處理為一個請求,因此吞吐量是servlet在一個設定的時間周期內(1秒)執行的同樣請求的數量。當分析JMS時,吞吐量就是message。
3.
測試方法:
基準測試(Benchmarking),在各種不同的環境下和工作負載下記錄應用程序性能的過程。
輪廓(Profiling),這涉及到精確地調查應用程序將大部分計算周期花費在什么地方,以及應用程序效果和高效的使用系統資源。主要目標在與突出系統中的潛在的性能瓶頸。
調整(Tuning),測試、基準測試和輪廓反饋給調整過程,然后優化應用程序。
另外,我們測試J2EE應用程序,可以從J2EE應用程序的各個組件開始,其各個組件包括數據庫、JVM、操作系統、TCP/IP堆棧、web服務器、網絡等等
第一章測試方法
1.方法概述
a.定義性能標準
為具體應用程序定義相關的性能度量標準,然后針對該度量標準設定一個現實的目標。建議清晰并沒有歧義地定義性能度量標準,按照明確定義的要求測試。
b.模擬應用程序使用
?
?這個步驟的關鍵在與測試腳本的定義。
?
?
?
?定義測試腳本:關鍵在于怎么樣去更好的編寫測試腳本,這需要實踐的經驗。
?
?
“
成功的性能測試關鍵在于理解應用程序將如何被使用
”,所以
測試數據,所提供的關鍵的用戶數據必須動態生成
?
?
?實際的使用模式:
思考時間(休眠時間):指在執行測試腳本中每個請求之間間隔的時間。思考時間的兩種基本策略:使用真實的時間思考;使用零思考時間。使用真實的時間思考,譬如用戶輸入要查詢的電話是7秒種,那么我們說真實時間為7秒,但時間上是有偏差的,不能通過這樣來提高系統的用戶的并發數。這就是,時間偏差,考慮這些,通過適當降低時間來,譬如5秒,達到更加真實。當我們不清楚真實思考的時間的時候,我們可以采用零思考時間。
2.采樣方法
不同的工具有不同的采樣方法,The Grinder采用兩種:
??
?周期方法,周期定義為一個模擬用戶對一個測試腳本的完整執行。樣本多才有意義。
??
?快照方法,快照方法代表一種基于時間的數據視圖。
??
?數據排除,排除一些明顯不穩定數據,譬如初始請求的時間。排除這些,樣本的數據會更加準確。
3.性能統計數字
??
響應時間,客戶端從發送請求的那一刻起收到應用程序響應的最后一個字節時止而不得不等待的時間長度。
???
“
10秒是讓用戶的注意力集中在應用程序對話框的極限
”
《Usablility Engneering》
???
“
用戶在等待8秒就點到別的地方去了
”
《Worth the wait ?》
?? 響應時間的組成:處理時間,傳輸時間,繪制時間。我們在碰到響應時間的瓶勁的時候,可以從起組成來縮短響應時間。
同時我們明白,
我們在測試環境中幾乎不可能模擬Internet的行為,所以只能最大可能接近的模擬。
?? 平均響應時間(ART),一個請求各個響應時間樣本的平均值。
?? 總體平均響應時間(Aggregate Average Response Time,AART): 測試腳本中每個單獨測試的平均響應時間的和除以該測試腳本的請求數。
?? 最大平均響應時間(MART),不同請求的最大響應時間的平均值。
? 吞吐量,用TPS描述。
4.評價測試結果的準確性
樣本質量,樣本數據的準確性。
公式:質量 = 標準方差/算術平均
,
可以接受的質量數位于0.06到0.2的范圍內。當然,標準可以自定義。
5.性能測試
測試的過程步驟:
a.
預備測試
預備測試考慮基準情況,測試環境的最佳化。
b.正式測試:單實例測試,持久測試,體系結構測試
單實例壓力測試:應用程序運行在單一應用服務器實例,逐漸增加工作負載,直到操作性能標準。
? 持久測試:測試應用程序在較長時間內完成的性能情況。
? 體系結構測試:使用應用程序服務器群部署該應用程序。
------------------------------------------------------
參考資料:
《J2EE性能測試》