中心極限定理(The central limit theorem)
中心極限定理表明如果總體的分布有一個平均值μ和標準偏差σ,那么對于一個十分大的n(>30),其取樣平均值的分布將接近于正態分布,其平均值μmean = μ ,標準偏差σmean = σ/√n。
注意取樣平均值的分布是正態的,而取樣自身的分布不必是正態的。也就是說如果多次運行測試腳本則測試結果的平均響應時間將會是正態的。
圖 5 和圖 6 分別展示了兩個正態分布。 在這里橫坐標是采樣響應時間的均值, 總體的均值被調整到坐標的原點(shifted so the population mean is at the origin)。 圖5 表明90%的時間里,采樣均值位于±Zσ的區間里(percent of the time, the sampling means are within the interval ±Zσ,),這里的Z=1.645 和 σ 是標準偏差。 圖 6 表明了99%的情況下的情形這時的Z=2.576。 在給定的概率下,如90%, 我們可以看到相應的Z呈現正態曲線,反之亦然。
Figure 5。 Z value for 90 percent
Figure 6。 Z value for 99 percent
在相關資料中所列的是可提供正態曲線計算的一些網站。在這些網站,我們可以計算隨意的相對區間內的概率(如,-1.5 < X < 1.5)或者在一個聚集的區域(cumulated area)內 ,(如, X < 1.5)。 也可以從下面的表中得到近似值。
表 1。 對應于給定的置信區間(confidence interval)的標準偏差范圍(Standard deviation range)
表 2。 對應于給定的標準偏差范圍(Standard deviation)的置信區間(confidence interval)
置信區間(Confidence interval)
置信區間(confidence interval)的定義是[取樣平均值- Z*σ/√n, 取樣平均值+ Z*σ/√n]。 例如, 如果置信區間(概率)是90%, 經查找可知Z 值是1。645, 于是置信區間就是 [取樣平均值- 1。645*σ/√n, 取樣平均值+ 1。645*σ/√n], 這意味著在90%的時間里, 總體平均值(population mean)(是未知的) 會落入這個置信區間內。 也就是說, 我們的測試結果是十分接近的。 如果 σ(標準偏差) 更大一些, 置信區間也會更大,這就意味著置信區間的上限就會更可能會越過可以接受的范圍,即σ 越大,結果越不可信。
響應時間需求(Response-time requirements )
現在我們把所有的信息都歸結到響應時間需求上來。首先。必須要定義性能需求,如: %95概率的置信區間的平均響應時間的上限必須小于5秒。 當然,最好有相應的需求或場景。
在性能測試結束后,假設進分析得出結論是平均響應時間是4.5秒,標準偏差時4.9秒,樣本數量是120個,然后就可以計算%95概率的置信區間了。 通過查表1,找到Z值是 1。95996。 于是置信區間就是 [4.5 – 1.95996*4.9/√120, 4.5 + 1.95996*4.9/√120], 也就是 [3.62, 5.38]。 盡管看起來這個響應時間看起來很不錯,但這個結果(因為超出了需求的要求,因而)是不可接受的。 實際上, 可以檢驗的是即使是對于80%概率的可信區間,這個測試結果也是不能接受的。正如你所看到的,使用了置信區間分析后,會得到一個十分精確的方法來估算測試質量。
在web應用中,為了測定某一場景的響應時間,我們一般要通過測試工具來發送多個訪問請求,例如:
4. 登陸
5. 顯示表單
6. 提交表單
假設我們對請求3更感興趣。為進行置信區間分析,我們需要的僅是請求3的所有樣本的響應時間均值和標準偏差,而不是全部被統計的樣本的。
在Jmeter的圖表結果監聽器中計算的卻是全部請求的響應時間均值和標準偏差。 而Jmeter的聚合報告監聽器計算的是獨立的采樣器的響應時間均值,可惜沒有計算標準偏差。
總之, 僅僅指定響應時間均值是危險的, 因為不能反映出數據的變化。 即使響應時間均值是可以接受的,但是置信區間僅有75%,這個結果也不能令人信服。但是,使用置信區間分析還是會帶來更多的確定性。
結論
本文討論了以下內容:
·詳細講解了Jmeter 線程組在加載負載時的特別設置
·使用Jmeter代理服務器(Proxy Server)元件自動建立測試腳本的指導方針,其重點在于模擬用戶思考時間(user think time )。
·置信區間分析(Confidence interval analysis), 一種我們可以用來更好地滿足響應時間需求的統計分析方法
通過使用本文提及的技術可以改善測試腳本的質量,更廣泛地說,本文所討論的內容屬于是性能測試的一個工作流程的一部分, 是其中的一個較困難的部分。性能測試包括并不僅限于以下內容:
·編寫性能測試需求
·選擇測試情景
·準備測試環境
·編寫測試腳本
·執行測試
·回顧測試腳本和測試結果
·指出性能瓶頸
·書寫測試報告
此外, 性能測試結果,包括確定下來的瓶頸, 都需要反饋給開發團隊或者架構師進行優化設計。 在這個過程中,并寫測試腳本和回顧測試腳本是其中很重要的部分,要精心籌劃和管理實施。憑借測試腳本指導和一個好的性能測試流程,你將會有更多的機會來在較重負載下優化軟件性能。
關于作者
Chi-Chang Kung 是臺灣Sun 公司的java系統架構師,也是IEEE 和ACM的成員。
相關資源
·JMeter: http://jakarta.apache.org/jmeter/index.html
·《中心極限理論以及經典推論》("Central Limit Theorem and Classical Inference" )Scott M。 Lynch (2005年2月): http://www.princeton.edu/~slynch/clt_inference.pdf
·置信區間(Confidence intervals):http://people.hofstra.edu/faculty/Stefan_Waner/RealWorld/finitetopic1/confint.html
·《java網站的性能分析》(Performance Analysis for Java Websites), Stacy Joines et al. (Addison-Wesley, 2002年9月; ISBN: 0201844540):http://www.amazon.com/exec/obidos/ASIN/0201844540/javaworld
·《響應時間:三個重要的限制條件》("Response Times: The Three Important Limits") 引自《實用工程學》( Usability Engineering), Jakob Nielsen (Morgan Kaufmann, 1994; ISBN 0125184069):http://www.useit.com/papers/responsetime.html
·一些提供了正態曲線計算功能的網站(Websites for normal curve calculation):
o http://www.psychstat.smsu.edu/introbook/normal.htm
o http://www.ecositebr.bio.br/curva_normal.htm
o http://statistik.wu-wien.ac.at/mathstat/hatz/vo/applets/probCalc/normal_z_p.html
·更多關于測試的文章,請參照JavaWorld's 標題索引的Testing 部分:http://www.javaworld.com/channel_content/jw-testing-index.shtml
·關于JAVA開發工具,參見JavaWorld's 標題索引的Development Tools 部分:http://www.javaworld.com/channel_content/jw-tools-index.shtml
文章來源于領測軟件測試網 http://www.kjueaiud.com/