Jmeter測試中如何控制業務比例


在進行多業務混合場景測試中,需要分配每個場景占比。

具體有兩種方式:

1.多線程組方式;

2.邏輯控制器控制;

 

第一種:

jmeter一個測試計划可以添加多個線程組,我們把不同的業務放在不同的線程組中,通過控制線程數來控制業務占比。線程組A觸發線程數90,

線程組B觸發線程數60;

 

 這樣就可以粗略的控制業務占比近似3:2。但是如果兩個事務響應時間不一樣,最終完成的業務數也會有所差異。假設當前線程數的響應時間是完全一致的,才會有3:2的業務占比,當然這個是理想狀態。

 

第二種方式:

jmeter的函數對話框中${__counter(True,)}函數獲取當前迭代的次數。迭代次數也能獲取到,那如何保持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的比例。

 

 

方案二:采用jmeter本身自帶的計算器,倒不失為一個好的方法。但是針對一些復雜的場景,這個計算式有點難寫,

  比如:3:2這個比例,我看到網上的實現都是${__counter(true,)}%2==1||${__counter(true,)}%3==0,

  這種計算方式就比較復雜了,那有沒有簡單一點實現方式呢?

  其實是有的。

   當參數為true時,每個用戶有自己的計數器,比如10個線程組,100個loop,這是計數器的值為1-100.

   當選擇false,全局計算器,10個線程組,100個loop,計數器值為1-10000

 

 比如下面場景:

  

 

那么表達式應該怎么寫呢?

 上面有3的倍數,5的倍數,那么取其最小公倍數15,按照15分割。

均使用If控制器,表達式分別為:

a:  ${__counter(false,)}%15 <=5

b:  ${__counter(false,)}%15 >5

c:   ${__counter(false,)}%15==1

d:   ${__counter(false,)}%15>1&& ${__counter(false,)}%15<=5

總結規律:

按照最小的公倍數分割,每個控制器取他們應占的份數。

上面的3:2的實現手段,就更容易了,一個占2/5,一個占3/5,完全不需要寫那么復雜的數學表達式~~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM