基于目標(biāo)TPS的性能測(cè)試,如何通過手動(dòng)設(shè)置場(chǎng)景進(jìn)行測(cè)試?
一、性能測(cè)試中的TPS
眾所周知,TPS(即Transactions Per Second的縮寫)是性能測(cè)試中的一項(xiàng)重要指標(biāo),用于衡量被測(cè)系統(tǒng)的性能,TPS高則說明系統(tǒng)處理速度快,TPS低則說明系統(tǒng)處理速度慢,可能需要做性能優(yōu)化。通常TPS只是反應(yīng)測(cè)試結(jié)果,測(cè)試出多少就是多少,然而很多時(shí)候我們需要事先指定TPS的目標(biāo)值,通過測(cè)試來驗(yàn)證目標(biāo)值是否達(dá),那么該如何進(jìn)行測(cè)試呢?

二、基于目標(biāo)的性能測(cè)試
Loadrunner在新建測(cè)試場(chǎng)景時(shí),就可以選擇手動(dòng)場(chǎng)景還是基于目標(biāo)的場(chǎng)景,如下圖所示:

目標(biāo)類型可以選擇tps、hits per second等:

設(shè)置好目標(biāo)后,直接運(yùn)行就可以了,執(zhí)行完成可以看到目標(biāo)是否達(dá)到了。這個(gè)過程都是自動(dòng)完成的,其內(nèi)部是如何實(shí)現(xiàn)的,對(duì)于我們來說完全是個(gè)黑盒子。本文介紹的是如何通過手動(dòng)設(shè)置場(chǎng)景來完成基于TPS目標(biāo)的測(cè)試,重點(diǎn)介紹目標(biāo)TPS是如何計(jì)算出來的。
三、測(cè)試場(chǎng)景的設(shè)置
我們還是選擇手動(dòng)設(shè)置loadrunner的測(cè)試場(chǎng)景,通常會(huì)有單交易場(chǎng)景測(cè)試和混合交易場(chǎng)景測(cè)試,下面是2個(gè)示例:


無論是單場(chǎng)景還是混合場(chǎng)景,目標(biāo)TPS的計(jì)算原理都是一樣的。
四、場(chǎng)景公式
在上面的場(chǎng)景例子中,我們需要重點(diǎn)關(guān)注4個(gè)字段:
- 虛擬用戶數(shù)量(簡(jiǎn)稱vu)
 - 目標(biāo)tps
 - Pacing
 - Thinktime
 
所有場(chǎng)景的 thinktime 都是 0 秒,pacing 和 thinktime 在概念上有聯(lián)系也有區(qū)別。
Thinktime 比較常用,易理解,這里不多介紹,下面重點(diǎn)說一下 pacing。Pacing 是 loadrunner中的一個(gè)設(shè)置選項(xiàng),如下圖所示:

Pacing 指 action 迭代的延遲時(shí)間,選項(xiàng)一是迭代不延遲,選項(xiàng)二是在上一次迭代結(jié)束后多長(zhǎng)時(shí)間開始下一次迭代,選項(xiàng)三是每次迭代從開始到結(jié)束的時(shí)間間隔。
選項(xiàng)三實(shí)際上是設(shè)置每次迭代的期望完成時(shí)間,例如設(shè)置pacing為60秒,表示action這個(gè)事務(wù)要求在60秒內(nèi)執(zhí)行完成,如果action執(zhí)行了4秒,那么后面的56秒會(huì)等待,直到60秒后再開始下一次迭代;如果action執(zhí)行了120秒,那么執(zhí)行結(jié)束后會(huì)立即開始下一次迭代。前者我們可以稱之為“包含住”,因?yàn)閳?zhí)行時(shí)間小于pacing時(shí)間,后者稱為“未包含住”,因?yàn)閳?zhí)行時(shí)間大于pacing時(shí)間。只要action的平均響應(yīng)時(shí)間“包含住”了,目標(biāo)TPS就可以達(dá)到。
理解上面的原理很重要,下面我們看一個(gè)例子。
假設(shè)有如下的測(cè)試結(jié)果:

vu為1時(shí)action的響應(yīng)時(shí)間只要小于等于2秒pacing,理論tps應(yīng)該都是0.5,換句話說只要action響應(yīng)時(shí)間在pacing內(nèi),響應(yīng)時(shí)間再快,tps不會(huì)增加。
vu為 10 時(shí),action的響應(yīng)時(shí)間仍小于2秒,在pacing范圍內(nèi),“包含住”了,達(dá)到5個(gè)TPS。同理,vu為20時(shí),action的響應(yīng)時(shí)間仍小于2秒,在pacing范圍內(nèi),“包含住”了,達(dá)到10 個(gè)TPS。在action的響應(yīng)時(shí)間未超出pacing之前,tps和vu存在正比關(guān)系。
vu為100時(shí),action響應(yīng)時(shí)間為10秒,不在pacing2秒范圍內(nèi),“未包含住”,理論的50個(gè)tps就不可能達(dá)到了。
通過以上分析,我們可以得出vu、pacing、目標(biāo)tps三者之間的關(guān)系,即:
在action的響應(yīng)時(shí)間未超出pacing之前,目標(biāo)tps=vu/pacing通過該公式,可以較精確的測(cè)試出系統(tǒng)的tps,通過大量的測(cè)試試驗(yàn),結(jié)果也是和公式吻合的。
目標(biāo)tps根據(jù)需求得到,設(shè)置一個(gè)pacing就知道需要測(cè)試多少vu。減少pacing和增加vu都可以增加目標(biāo)tps。建議的做法是先設(shè)定pacing,然后再設(shè)置vu,pacing的取值基本都是10秒,或者是10秒的倍數(shù)。pacing確定后就不再改變,要想增加目標(biāo)tps,只能調(diào)大vu。
五、總結(jié)
本文介紹了基于目標(biāo)tps的性能測(cè)試方法,希望通過本文,能讓大家對(duì)tps的設(shè)置有更深入的了解,在做性能測(cè)試時(shí)做到目標(biāo)清晰,有章可循。















 
 
 









 
 
 
 