在JMeter測試中如何根據(jù)業(yè)務(wù)場景來控制運(yùn)行比例

性能測試混合場景中,我們需要組合多個業(yè)務(wù)操作到場景中來。

比如有一個論壇的業(yè)務(wù)分布如下:

開新帖與回復(fù)帖子的比例為2:3,

那么我們在JMeter測試計劃中如何控制其比例呢?

下面我們介紹兩種方式:

1.多線程組方式

2.邏輯控制器控制

多線程組方式:

我們知道JMeter是用線程組來模擬虛擬用戶的,JMeter還可以支持一個計劃中多個線程組。

利用這個特性我們可以把開新帖業(yè)務(wù)放在一個線程組中,回帖業(yè)務(wù)放在另外一個線程組中。

為了制造出業(yè)務(wù)量的比例關(guān)系,我們通過控制線程數(shù)來達(dá)到效果。如下圖:




ReplayTopic為回帖線程組,添加4個線程;

SendTopic為開新帖線程組,添加1個線程,剛好是4:1

當(dāng)然,這只能是近似的,如果這兩個事務(wù)的響應(yīng)時間不一樣,最終完成的業(yè)務(wù)數(shù)比例也會不一樣。

當(dāng)前線程數(shù)是在假定兩個業(yè)務(wù)的響應(yīng)時間一樣的情況下,所以這完全是理想狀況。

可以看出,這種方式控制并不完美。

下面我們用第2種方式:

控制器控制

下圖是一個IF控制器,IF控制器可以使用表達(dá)式來做為條件,這樣我們事以獲取迭代次數(shù)來決定

是回帖還是開帖,比如一共3次迭代,第1次與第3次迭代時開新帖,1,2,3次迭代都會進(jìn)行回帖

接下來我們就要獲取迭代次數(shù),JMeter函數(shù)助手提供了一個__counter函數(shù),可以用來獲取當(dāng)前的

迭代次數(shù)。

好,我們思路有了,迭代次數(shù)也能獲取到,那如何保持3:2的比例呢?這就是一個數(shù)學(xué)問題了。

不賣觀子,直接上代碼:

${__counter(true,)}%2==1||${__counter(true,)}%3==0

上面__counter(true,)是獲取當(dāng)前迭代次數(shù),%是取余,也就是除2余1與3整除時執(zhí)行開新帖。

以9次迭代為例,回帖9次,1,3,5,6,7,9 次迭代時都會開新帖,回剛好是6次

9:6=3:2

基本上保護(hù)了3:2的比例。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容