參考《全棧效能測試修煉寶典JMeter實戰》第六章 JMeter 元件詳解中第一節JMeter邏輯控制器
JMeter邏輯控制器可以對元件的執行邏輯進行控制,除僅一次控制器外,其他可以巢狀別的種類的邏輯控制器
一、ForEach控制器
定義一個迴圈規則,關鍵引數說明:
輸入變數字首:可以在“使用者自定義的變數”中定義一組變數,控制器可以從中獲取到變數對應的值,然後作為迴圈控制器的迴圈條件,還可以輸出變數作為取樣器的引數
Start index for loop:迴圈變數下標起點
End index for loop:迴圈變數下標終點
輸出變數名稱:迴圈控制器生成的變數名稱
Add “_”before number?:變數字首是否加“_”作為分隔符
實現步驟如下:
1、新建一個執行緒組,然後新建一個http請求,訪問http://jmeter.apache.org/demos/,Meter官網提供的指令碼
2、使用正則表達是提取步驟1訪問頁面中的所有連結,正規表示式的用法參考筆者的python的re博文
3、新增一個ForEach 控制器,新增引數,start和end index for loop引數可以不填,不填就預設執行變數列表中的所有元素
4、在ForEach 控制器中新增http請求,訪問由ForEach控制器傳遞的引數
5、在http請求下新增監控器-察看結果樹。執行指令碼,結果如下
二、簡單控制器
用來制定了一個執行單元,他不改變元件的執行順序,在他下面還可以巢狀其他控制器。簡單控制器的屬性只有名稱和註釋
三、Include Controller
用來匯入外部的測試片段(非完整的測試計劃),在執行時會執行匯入的測試計劃。但是被匯入的測試計劃有特殊要求,它不能有執行緒組,只能包含簡單控制器及控制器下的元件。簡單的說就是相當於家了一個執行單元,一個封裝了的業務操作單元,類似我們程式開發中的函式一樣。
檔名引數:必填項,如果沒有會報錯
四、Runtime Controller
用來控制其子元件的執行時長,單位為秒
Runtime(seconds):預設為1,去掉1則預設為0,此時不執行其節點下的元件
五、Switch Controller
類似於高階語言中的Switch邏輯控制語句。
Switch Value:匹配值,可以為數字,也可以為字元。為字元時匹配取樣器名稱,如果匹配不上就會預設並找取樣器名稱為default的取樣器,如果沒有則不執行。如果為數字則從switch控制器下的第一個取樣器為0,第二個為1依次算起
六、While Controller
While條件控制器,其節點下的元件將一直執行知道While條件為false
Condition:接受變數表示式與變數。如圖當inputUrl=7時,則inputUrl小於7的會一直執行
七、交替控制器
節點下的取樣器交替執行。
Ignore sub-controller blocks:忽略子控制器,即子控制器失效,由交替控制器接管
八、僅一次控制器
控制器下的子元件只執行一次,即使將僅一次控制器放在迴圈控制器下面,也只執行一次
九、吞吐量控制器
用來控制其下元件的執行次數,並無控制吞吐量的功能。想要控制吞吐量可以使用Constant Throughput Timer
Percent Executions:按執行次數的百分比來計算執行次數,此時Throughput取值是0~100。Per User是否勾選對percent executions模式無影響
Per User:如果選擇則按虛擬使用者數來計算執行次數。如果不選擇則預設執行所有的虛擬使用者
Total Executions:按Througput的值來制定執行次數,小於0則不執行
十、如果(if)控制器
通過條件判斷來控制節點下的元件是否執行
Condition:判斷條件,勾選Interpret Condition as Variable Expression?時condtion使用變數表示式來設定條件
Evaluate for all children:判斷條件是否針對所有的位元組的,只在if controller的入口處判斷一次
十一、模組控制器
可以通過模組控制器在當前測試計劃中引入新的測試片段(也叫指令碼片段,由控制器、取樣器及輔助元件構成,鞥能夠完成負載的模擬)。模擬控制器也可以引入當前測試計劃中的控制器
Module To Run:下來列表,列出了測試計劃及工作臺包含的控制器,在此選擇引入哪一個指令碼片段
十二、隨機控制器
節點下的元件隨機執行
十三、隨機順序執行控制器
節點下的元件隨機執行,但是每個元件只執行一次
十四、迴圈控制器
控制節點下的元件執行次數。時間節點下的執行次數為執行緒組設定的迴圈次數乘迴圈控制器的次數
迴圈次數:要麼設定永遠,要麼填寫具體的次數,只能選擇一個
十五、錄製控制器
錄製時候用的
十六、事務控制器
事務響應時間是我們衡量業務效能的主要指標,事務控制器可以把其他節點下的取樣器執行消耗時間累加在一起,便於統計。同時對每一個取樣器的執行時間進行統計。
如果事務控制器下的取樣器有多個,只有當所有的取樣器都執行成功,整個事務控制器定義的事物才算成功
generate parent sample:選擇是否生成一個父取樣器
include duration of timer and pre-post processors in generated samle:是否包含定時器,選擇將在取樣器前與後加上延時