表 1。 對應(yīng)于給定的置信區(qū)間(confidence interval)的標(biāo)準(zhǔn)偏差范圍(Standard deviation range)
表 2。 對應(yīng)于給定的標(biāo)準(zhǔn)偏差范圍(Standard deviation)的置信區(qū)間(confidence interval)
置信區(qū)間(Confidence interval)
置信區(qū)間(confidence interval)的定義是[取樣平均值- Z*σ/√n, 取樣平均值+ Z*σ/√n]。 例如, 如果置信區(qū)間(概率)是90%, 經(jīng)查找可知Z 值是1。645, 于是置信區(qū)間是 [取樣平均值- 1。645*σ/√n, 取樣平均值+ 1。645*σ/√n], 這意味著在90%的時間里, 總體平均值(population mean)(是未知的) 會落入這個置信區(qū)間內(nèi)。 也是說, 我們的測試結(jié)果是十分接近的。 如果 σ(標(biāo)準(zhǔn)偏差) 更大一些, 置信區(qū)間也會更大,這意味著置信區(qū)間的上限會更可能會越過可以接受的范圍,即σ 越大,結(jié)果越不可信。
響應(yīng)時間需求(Response-time requirements )
現(xiàn)在我們把所有的信息都?xì)w結(jié)到響應(yīng)時間需求上來。首先。必須要定義性能需求,如: %95概率的置信區(qū)間的平均響應(yīng)時間的上限必須小于5秒。 當(dāng)然,好有相應(yīng)的需求或場景。
在性能測試結(jié)束后,假設(shè)進分析得出結(jié)論是平均響應(yīng)時間是4.5秒,標(biāo)準(zhǔn)偏差時4.9秒,樣本數(shù)量是120個,然后可以計算%95概率的置信區(qū)間了。 通過查表1,找到Z值是 1。95996。 于是置信區(qū)間是 [4.5 – 1.95996*4.9/√120, 4.5 + 1.95996*4.9/√120], 也是 [3.62, 5.38]。 盡管看起來這個響應(yīng)時間看起來很不錯,但這個結(jié)果(因為超出了需求的要求,因而)是不可接受的。 實際上, 可以檢驗的是即使是對于80%概率的可信區(qū)間,這個測試結(jié)果也是不能接受的。正如你所看到的,使用了置信區(qū)間分析后,會得到一個十分精確的方法來估算測試質(zhì)量。
在web應(yīng)用中,為了測定某一場景的響應(yīng)時間,我們一般要通過測試工具來發(fā)送多個訪問請求,例如:
4. 登陸
5. 顯示表單
6. 提交表單
假設(shè)我們對請求3更感興趣。為進行置信區(qū)間分析,我們需要的僅是請求3的所有樣本的響應(yīng)時間均值和標(biāo)準(zhǔn)偏差,而不是全部被統(tǒng)計的樣本的。
在Jmeter的圖表結(jié)果監(jiān)聽器中計算的卻是全部請求的響應(yīng)時間均值和標(biāo)準(zhǔn)偏差。 而Jmeter的聚合報告監(jiān)聽器計算的是獨立的采樣器的響應(yīng)時間均值,可惜沒有計算標(biāo)準(zhǔn)偏差。
總之, 僅僅指定響應(yīng)時間均值是危險的, 因為不能反映出數(shù)據(jù)的變化。 即使響應(yīng)時間均值是可以接受的,但是置信區(qū)間僅有75%,這個結(jié)果也不能令人信服。但是,使用置信區(qū)間分析還是會帶來更多的確定性。
結(jié)論
本文討論了以下內(nèi)容:
·詳細(xì)講解了Jmeter 線程組在加載負(fù)載時的特別設(shè)置
·使用Jmeter代理服務(wù)器(Proxy Server)元件自動建立測試腳本的指導(dǎo)方針,其重點在于模擬用戶思考時間(user think time )。
·置信區(qū)間分析(Confidence interval analysis), 一種我們可以用來更好地滿足響應(yīng)時間需求的統(tǒng)計分析方法
通過使用本文提及的技術(shù)可以改善測試腳本的質(zhì)量,更廣泛地說,本文所討論的內(nèi)容屬于是性能測試的一個工作流程的一部分, 是其中的一個較困難的部分。性能測試包括并不于以下內(nèi)容:
·編寫性能測試需求
·選擇測試情景
·準(zhǔn)備測試環(huán)境
·編寫測試腳本
·執(zhí)行測試
·回顧測試腳本和測試結(jié)果
·指出性能瓶頸
·書寫測試報告
此外, 性能測試結(jié)果,包括確定下來的瓶頸, 都需要反饋給開發(fā)團隊或者架構(gòu)師進行優(yōu)化設(shè)計。 在這個過程中,并寫測試腳本和回顧測試腳本是其中很重要的部分,要精心籌劃和管理實施。憑借測試腳本指導(dǎo)和一個好的性能測試流程,你將會有更多的機會來在較重負(fù)載下優(yōu)化軟件性能。
關(guān)于作者
Chi-Chang Kung 是臺灣Sun 公司的java系統(tǒng)架構(gòu)師,也是IEEE 和ACM的成員。
相關(guān)資源
·JMeter: http://jakarta.apache.org/jmeter/index.html
·《中心極限理論以及經(jīng)典推論》("Central Limit Theorem and Classical Inference" )Scott M。 Lynch (2005年2月): http://www.princeton.edu/~slynch/clt_inference.pdf
·置信區(qū)間(Confidence intervals):http://people.hofstra.edu/faculty/Stefan_Waner/RealWorld/finitetopic1/confint.html
·《java網(wǎng)站的性能分析》(Performance Analysis for Java Websites), Stacy Joines et al. (Addison-Wesley, 2002年9月; ISBN: 0201844540): http://www.amazon.com/exec/obidos/ASIN/0201844540/javaworld
·《響應(yīng)時間:三個重要的限制條件》("Response Times: The Three Important Limits") 引自《實用工程學(xué)》( Usability Engineering), Jakob Nielsen (Morgan Kaufmann, 1994; ISBN 0125184069): http://www.useit.com/papers/responsetime.html
·一些提供了正態(tài)曲線計算功能的網(wǎng)站(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
·更多關(guān)于測試的文章,請參照J(rèn)avaWorld's 標(biāo)題索引的Testing 部分: http://www.javaworld.com/channel_content/jw-testing-index.shtml
·關(guān)于JAVA開發(fā)工具,參見JavaWorld's 標(biāo)題索引的Development Tools 部分: http://www.javaworld.com/channel_content/jw-tools-index.shtml