考慮時(shí)間Thinking Time指的是在性能測試腳本中,事務(wù)與事務(wù)之間,會(huì )有一些短暫的停頓,就好像真實(shí)用戶(hù)在操作時(shí),兩次操作之間需要考慮一下。比如用戶(hù)注冊的時(shí)候,在打開(kāi)注冊頁(yè)面到提交注冊頁(yè)面之間,是有一段考慮時(shí)間的(用戶(hù)在填寫(xiě)個(gè)人信息)。
下面就討論一下在性能測試實(shí)戰中,為什么要設置考慮時(shí)間。
先說(shuō)一個(gè)概念:吞吐量,這指的是服務(wù)器系統(包括軟件和硬件)單位時(shí)間內處理業(yè)務(wù)的數量。我們現在做一個(gè)小試驗,寫(xiě)一個(gè)小程序,執行一個(gè)簡(jiǎn)單的業(yè)務(wù),并且在程序中進(jìn)行計時(shí),計算每分鐘能執行多少次。然后當我們運行1路這個(gè)程序的時(shí)候,每分鐘能完成約6萬(wàn)次。好,現在問(wèn)一個(gè)問(wèn)題,如果我們起2路,是不是每一路都能達到 6萬(wàn)/分鐘 的吞吐量?
試驗發(fā)現,當運行2路的時(shí)候,兩個(gè)程序的數值都降了下來(lái),但是它們的總和仍然是6萬(wàn)次。而且不管我們起多少路,這些程序的性能總和都接近于6萬(wàn)。
這就好像一個(gè)人1分鐘最快能吃1個(gè)饅頭,你讓他一個(gè)一個(gè)吃,他兩分鐘能吃2個(gè),如果你讓他一手拿一個(gè),同時(shí)吃,他兩分鐘吃不了4個(gè),還是只能吃?xún)蓚(gè)。
我們不是在說(shuō)“考慮時(shí)間”么,哈哈,別急,因為上面的問(wèn)題必須要先說(shuō)清楚。
如果我們需要進(jìn)行性能測試的業(yè)務(wù)是一個(gè)單純的業(yè)務(wù),就好像上面舉的那個(gè)例子一樣,那么測試腳本中就不需要設置“考慮時(shí)間”,因為不管你用什么方法測試,一個(gè)服務(wù)系統處理單一業(yè)務(wù)的吞吐量總是一個(gè)定值。
但是在實(shí)際環(huán)境里面,往往一個(gè)系統都是要處理多種業(yè)務(wù),并且這些業(yè)務(wù)之間是有邏輯關(guān)系的。舉例說(shuō)明,比如一個(gè)論壇系統,每天最常處理的業(yè)務(wù)有兩個(gè):A打開(kāi)帖子、B回復帖子。那么每天系統處理AB業(yè)務(wù)的總數是不是一樣的呢,答案很明顯,看帖子多,回復的少一些。假設A:B=2:1。
好,如果我們不設置考慮時(shí)間,起2路A的腳本,1路B的腳本進(jìn)行性能測試,我們會(huì )得到什么結果呢?我們會(huì )得到這兩個(gè)業(yè)務(wù)的吞吐量,并且能算出每個(gè)小時(shí)系統完成A、B業(yè)務(wù)的總數,吞吐量 × 時(shí)間 = 總數。
這時(shí)我們發(fā)現,同樣時(shí)間,AB業(yè)務(wù)的處理總數卻不是2:1的關(guān)系,這是為什么呢?原因是這樣的,我們在跑AB腳本的時(shí)候,這兩組腳本都在盡全力爭奪服務(wù)器的資源,他們的并發(fā)路數雖然是2:1,但是給服務(wù)器的壓力卻不一定是2:1,可能會(huì )出現偏差,測試結果就是最好的證據。A查看帖子由于響應時(shí)間短,因此跑的次數更多,最后的比例可能是4:1。
那么這樣的結果有什么問(wèn)題呢?偨Y為一句話(huà):測試環(huán)境的業(yè)務(wù)和真實(shí)環(huán)境不符,這樣測出的數據沒(méi)有價(jià)值。即使測試通過(guò),也不能證明真實(shí)環(huán)境是ok的;或者即使測試不通過(guò),也不能說(shuō)明真實(shí)環(huán)境不ok,呵呵。
比如上面的例子,如果我們測出的結果是B回復帖子的吞吐量不夠,響應時(shí)間太長(cháng),那可能是因為A業(yè)務(wù)搶走了過(guò)多的,本不屬于A(yíng)的資源,而引起了B的性能降低。
說(shuō)到這里,大家應該明白了,我們設置考慮時(shí)間,是為了保證測試復合業(yè)務(wù)的時(shí)候,各個(gè)業(yè)務(wù)之間的比例關(guān)系符合我們的真實(shí)生產(chǎn)環(huán)境。
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/