性能測試設計混合場景,一般有幾種方式,分別是每個場景設置一個線程組,使用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控制器或者吞吐量控制器顯然是更好的選擇。
