循環控制器:
指定迭代次數,可以用具體數字,也可以通過變量控制
永遠:表示無限循環
點擊查看示例:Jmeter實例(四)_圖片爬蟲
簡單控制器:
這是最基礎的一個控制器,它可以讓腳本分層,變成一個模塊,但是本書并不具有任何的邏輯控制能力
Foreach控制器:
ForEach控制器用戶變量一起使用,用于遍歷讀取返回值。該控制器下的任何請求和元件都會被執行一次或多次
注:foreach控制器通常和表達式提取器一起使用。表達式提取值應為-1,表示取全部值,然后sampler在foreach控制器下執行遍歷。
?
僅一次控制器:
作用:在測試計劃執行期間,該控制器下的子結點對單線程只執行一次,但是在多線程下仍然會執行多次。登錄場景經常會使用到這個控制器。
事務控制器:
作用:事務控制器用來統計該控制器下所有子結點的性能數據。
參數:
Generate parent sample:勾選后,所有的結果將在父結點中展示(選中這個參數結果展示如下圖紅框,否則顯示為下圖藍框)
If控制器 :
作用:根據表達式決定如何執行后續分支,默認使用javascript的語法進行判斷(如下圖紅框內的文字)。
判斷 project_id 不為空,且數據庫返回值與接口返回值相等時,執行 if 控制器下面的添加需求接口
點擊查看示例:Jmeter實例(一)_Beanshell腳本斷言Mock接口
Switch控制器:
作用:Switch控制器通過給該控制器中的Value賦值,來指定運行哪個采樣器。有兩種賦值方式:
·?第一種是數值,Switch控制器下的子節點從0開始計數,通過指定子節點所在的數值來確定執行哪個元素。
·?第二種是直接指定子元素的名稱,比如采樣器的Name來進行匹配。當指定的名稱不存在時,不執行任何元素。
當Value為空時,默認執行第1個子節點元素。?
示例:
1、Switch Controller選擇的值為?客服登錄
2、執行結果:
吞吐量(Throughput Controller):
作用:控制其下的子節點的執行次數與負載比例分配,別被名字迷惑了,跟吞吐量沒任何關系。也有兩種方式:
?
Total Executions:設置運行次數,整個測試計劃中總計執行次數
Percent Executions:設置運行比例(1~100之間),整個測試計劃中總計執行百分比
Throughtput:?設計的數值
Per User:?依據網上的說明在選擇Total Executions時,勾選時會在每個線程中執行的次數。但在3.0版本中嘗試使用無效?
示例:
1、設置線程組循環5次:
?
2、Throughput Controller1的子結點執行3次:、
?結果發現一共運行了3次
3、Throughput Controller2的子結點執行(40% *?線程組循環次數5)= 2次:注意percent選項下,填寫的是百分比!
觀察運行結果,發現運行了2次
隨機控制器:
作用:隨機執行其下的某個子結點
應用場景: 用戶對頁面的隨機訪問
?
執行結果,隨機選擇了三個登錄中的一個
?多運行一次,觀察結果,發現兩次運行的順序不同,但是每個接口都運行了一遍
交替控制器:
忽略控制器塊:勾選后,子控制器每次只能發起一個請求
Interleave accross threads:勾選之后,控制器下的子元素會依次執行
如果交替控制器掛在循環控制器之下,那么循環次數與線程數的作用相同
點擊查看示例:Jmeter(二十九)循環控制器+交替控制器+事務控制器 完美實現接口字段參數化校驗?
模塊控制器:
·?模塊控制器,用于跳轉到選定的控制器位置并執行對應的控制器
·?應用場景:?業務邏輯的跳轉
·?Module to Run:?選擇需要跳轉到的目標控制器?
??
While?控制器:
While?控制器,與開發語言中的While功能一致。直到條件為false時,停止運行?
條件如下:?
1:為空(不輸入任何值) --?直到某次請求執行失敗則退出循環?
2:LAST --?直到最后一個請求請求失敗則退出循環?
3:其它?--?條件值等于"false"時則退出循環?
例:${num}?!=5判斷變量num的值是否為5,等于5則退出循環?
?
${__javaScript("${num}"!=8?&& "${num}"不等于8的情況下執行循環體,但是只能循環5次??
我們通過計數器讓它有十次循環的機會
?
查看結果,循環體執行到${num}==5的時候就停止了?
點擊查看示例:Jmeter(三十)while控制器實現ssh三次重連