效能測試設計混合場景,一般有幾種方式,分別是每個場景設定一個執行緒組,使用if控制器,使用吞吐量控制器。不同的方式實現機制不一樣,哪種方式相比而言更好呢?下面做一比較。
下面以混合訪問百度首頁和必應首頁作為測試場景,訪問預設為1:3。
一、多個執行緒組
操作步驟:
1、Jmeter上建立一個測試計劃;
2、計劃下新增3個執行緒組,分別是對業務場景A、業務場景B、業務場景C;
3、假設3個場景混合併發的比例為4:4:2,則可以在3個執行緒組分別設定4、4、2,或者設定為40、40、20總併發量為100,只要按併發比例設定併發使用者數即可
4、執行整個測試計劃(計劃下哪個執行緒不跑的時候可以先禁用),則所有介面會混合跑,實現介面混合併發壓測;
結論:如果這兩個事務的響應時間不一樣,最終完成的業務數比例也會不一樣。當前執行緒數是在假定兩個業務的響應時間一樣的情況下,所以這完全是理想狀況。所以,這種方式控制並不完美
二、使用if控制器
新增一個執行緒組,線上程組新增兩個if控制器,分別加入兩個HTTP請求(百度首頁和必應首頁),通過調節if的條件實現按一定比例併發的需求。
首先線上程組加一個配置元件隨機變數,取值範圍為1-100,變數名設為num。
百度首頁的if條件設定為${num}<=25,必應首頁的if控制器條件設為${num}>25.
執行緒組的併發設為目標併發30個,併發時間3分鐘,分兩步併發。測試結果如下,併發請求數大致為1:3,符合需求:
三、吞吐量控制器
實現方式與if控制器大體一致,只是把if控制器換為吞吐量控制器,分別設定兩個控制器的吞吐量百分比為25%和75%,也即1:3的併發比例。
注意:吞吐量控制器欄位有兩種:Total Executions:執行數量,percent Executions:執行百分比(1-100)
測試結果可看出吞吐量控制器與if控制器的請求併發總數也基本一樣,請求比例也符合1:3的原始設定
四、結論
縱觀以上的測試結果,可看出使用if控制器和吞吐量控制器均能實現我們的預期目標,即合理的併發請求比例,而採用多個執行緒組的方式與我們目標有一定差距,原因在於各執行緒組的請求響應時間相差大,雖然同時併發,但實際併發比例難以控制。
若混合場景下各請求的響應時間差不多,多執行緒組的方式理論上也是能按預設比例併發的,只是實際測試的情況下,無法保證請求響應時間的大小,所以測試混合場景的時候,使用if控制器或者吞吐量控制器顯然是更好的選擇。