為何要在性能測(cè)試中設(shè)置考慮時(shí)間

字號(hào):

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