軟件測試中性能測試中設(shè)置思考時間的作用
性能測試是通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統(tǒng)的各項性能指標(biāo)進行測試。負載測試和壓力測試都屬于性能測試,兩者可以結(jié)合進行。通過負載測試,確定在各種工作負載下系統(tǒng)的性能,目標(biāo)是測試當(dāng)負載逐漸增加時,系統(tǒng)各項性能指標(biāo)的變化情況。壓力測試是通過確定一個系統(tǒng)的瓶頸或者不能接收的性能點,來獲得系統(tǒng)能提供的最大服務(wù)級別的測試。
吞吐量,這指的是服務(wù)器系統(tǒng)(包括軟件和硬件)單位時間內(nèi)處理業(yè)務(wù)的數(shù)量。我們現(xiàn)在做一個小試驗,寫一個小程序,執(zhí)行一個簡單的業(yè)務(wù),并且在程序中進行計時,計算每分鐘能執(zhí)行多少次。然后當(dāng)我們運行1路這個程序的時候,每分鐘能完成約6萬次。好,現(xiàn)在問一個問題,如果我們起2路,是不是每一路都能達到 6萬/分鐘 的吞吐量?
試驗發(fā)現(xiàn),當(dāng)運行2路的時候,兩個程序的數(shù)值都降了下來,但是它們的總和仍然是6萬次。而且不管我們起多少路,這些程序的性能總和都接近于6萬。
這就好像一個人1分鐘最快能吃1個饅頭,你讓他一個一個吃,他兩分鐘能吃2個,如果你讓他一手拿一個,同時吃,他兩分鐘吃不了4個,還是只能吃兩個。
我們不是在說“考慮時間”么,哈哈,別急,因為上面的問題必須要先說清楚。
如果我們需要進行性能測試的業(yè)務(wù)是一個單純的業(yè)務(wù),就好像上面舉的那個例子一樣,那么測試腳本中就不需要設(shè)置“考慮時間”,因為不管你用什么方法測試,一個服務(wù)系統(tǒng)處理單一業(yè)務(wù)的吞吐量總是一個定值。
但是在實際環(huán)境里面,往往一個系統(tǒng)都是要處理多種業(yè)務(wù),并且這些業(yè)務(wù)之間是有邏輯關(guān)系的。舉例說明,比如一個論壇系統(tǒng),每天最常處理的業(yè)務(wù)有兩個:A打開帖子、B回復(fù)帖子。那么每天系統(tǒng)處理AB業(yè)務(wù)的總數(shù)是不是一樣的呢,答案很明顯,看帖子多,回復(fù)的少一些。假設(shè)A:B=2:1。
好,如果我們不設(shè)置考慮時間,起2路A的腳本,1路B的腳本進行性能測試,我們會得到什么結(jié)果呢?我們會得到這兩個業(yè)務(wù)的吞吐量,并且能算出每個小時系統(tǒng)完成A、B業(yè)務(wù)的總數(shù),吞吐量 × 時間 = 總數(shù)。
這時我們發(fā)現(xiàn),同樣時間,AB業(yè)務(wù)的處理總數(shù)卻不是2:1的關(guān)系,這是為什么呢?原因是這樣的,我們在跑AB腳本的時候,這兩組腳本都在盡全力爭奪服務(wù)器的資源,他們的并發(fā)路數(shù)雖然是2:1,但是給服務(wù)器的壓力卻不一定是2:1,可能會出現(xiàn)偏差,測試結(jié)果就是最好的證據(jù)。A查看帖子由于響應(yīng)時間短,因此跑的次數(shù)更多,最后的比例可能是4:1。
那么這樣的結(jié)果有什么問題呢?偨Y(jié)為一句話:測試環(huán)境的業(yè)務(wù)和真實環(huán)境不符,這樣測出的數(shù)據(jù)沒有價值。即使測試通過,也不能證明真實環(huán)境是ok的;或者即使測試不通過,也不能說明真實環(huán)境不ok,呵呵。
比如上面的例子,如果我們測出的結(jié)果是B回復(fù)帖子的吞吐量不夠,響應(yīng)時間太長,那可能是因為A業(yè)務(wù)搶走了過多的,本不屬于A的資源,而引起了B的性能降低。
說到這里,大家應(yīng)該明白了,我們設(shè)置考慮時間,是為了保證測試復(fù)合業(yè)務(wù)的時候,各個業(yè)務(wù)之間的比例關(guān)系符合我們的真實生產(chǎn)環(huán)境。
相關(guān)推薦:考試吧策劃:2010年軟件水平考試完全指南北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |