Jmeter多業務混合場景如何設定各業務所佔併發比例
在進行多業務混合場景測試中,需要分配每個場景佔比。
具體有兩種方式:
1.多執行緒組方式;
2.邏輯控制器控制;
第一種:
jmeter一個測試計劃可以新增多個執行緒組,我們把不同的業務放在不同的執行緒組中,通過控制執行緒數來控制業務佔比。比如實際業務中需要執行緒組A、執行緒組B和執行緒組C的比例為:3:2:1,那麼我們可以設定執行緒組A的執行緒數為90,執行緒組B的執行緒數為60,執行緒組C的執行緒數為30,這樣就可以粗略的達到要求的比例。但是如果三個事務的響應時間不一樣,最終完成的業務數也會有所差異。假設當前執行緒數的響應時間是完全一致的,才會有3:2:1的業務佔比,當然這個是理想狀態。
例如測試需求如下:對業務A、業務B、業務C、業務D、業務E,5個業務按併發比例要求進行100個使用者併發的壓力測試;
JMeter是可以實現上述需求的,測試方案如下:
1.建立一個測試計劃;
2.在該計劃下新增5個執行緒組,分別是對業務A、業務B、業務C、業務D、業務E;
3.分別設定執行緒組業務A、業務B、業務C、業務D、業務E的執行緒數為:40、10、20、25、5(總併發量為100,按併發比例設定併發使用者數)
第二種方式:
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