1. 程式人生 > >在JMeter測試計劃中如何控制業務比例

在JMeter測試計劃中如何控制業務比例

效能測試混合場景中,我們需要組合多個業務操作到場景中來。
比如有一個論壇的業務分佈如下:
開新帖與回覆帖子的比例為2:3,
那麼我們在JMeter測試計劃中如何控制其比例呢?

下面我們介紹兩種方式:
1.多執行緒組方式

2.邏輯控制器控制

多執行緒組方式:

我們知道JMeter是用執行緒組來模擬虛擬使用者的,JMeter還可以支援一個計劃中多個執行緒組。
利用這個特性我們可以把開新帖業務放在一個執行緒組中,回帖業務放在另外一個執行緒組中。
為了製造出業務量的比例關係,我們通過控制執行緒數來達到效果。如下圖:



ReplayTopic為回帖執行緒組,新增90個執行緒;
SendTopic為開新帖執行緒組,新增60個執行緒,剛好是3:2

當然,這隻能是近似的,如果這兩個事務的響應時間不一樣,最終完成的業務數比例也會不一樣。
當前執行緒數是在假定兩個業務的響應時間一樣的情況下,所以這完全是理想狀況。
可以看出,這種方式控制並不完美。

下面我們用第2種方式:

控制器控制

下圖是一個IF控制器,IF控制器可以使用表示式來做為條件,這樣我們事以獲取迭代次數來決定
是回帖還是開帖,比如一共3次迭代,第1次與第3次迭代時開新帖,1,2,3次迭代都會進行回帖



接下來我們就要獲取迭代次數,JMeter函式助手提供了一個__counter函式,可以用來獲取當前的
迭代次數。

好,我們思路有了,迭代次數也能獲取到,那如何保持3:2的比例呢?這就是一個數學問題了。
不賣觀子,直接上程式碼:
${__counter(true,)}%2==1||${__counter(true,)}%3==0
上面__counter(true,)是獲取當前迭代次數,%是取餘,也就是除2餘1與3整除時執行開新帖。
以9次迭代為例,回帖9次,1,3,5,6,7,9 次迭代時都會開新帖,回剛好是6次
9:6=3:2
基本上保護了3:2的比例。