JMeter使用邏輯控制器來決定採樣器的處理順序。java
- 簡單控制器(Simple Controller):存儲設備(將某些採樣器歸組)
- 循環控制器(Loop Controller:設置循環次數
- 僅一次控制器(Once Only Controller)
- 交替控制器(Interleave Controller)
- 隨機控制器(Random Controller)
- 隨機順序控制器(Random Order Controller): 每一個子測試元件都至多執行一次,可是執行順序是隨機的
- 吞吐量控制器(Throughput Controller):允許用戶設定其被執行的頻率,這裏有兩種模式:Percent Execution,該控制器會執行固定比例的循環次數(以測試計劃總的循環次數爲基準);Total Executions模式,該控制器會在執行數次(設定值)後中止執行。同僅一次控制器,當父循環控制器開始新一輪循環時,控制器的設定值會被重置。另外參數Per User選中,吞吐量控制器就會以虛擬用戶爲基礎來計算它是否該執行,若是沒選,就是基於全部用戶來計算的。例如:Total Execution模式下,不勾選"per user」,設定值就是吞吐量控制器的總執行數,勾選,則是虛擬用戶數乘以Troughput設定值。
- 運行時長控制器(Runtime Controller):設定運行時長
- 若是控制器(If Controller):控制其下子測試元件是否執行,允許將腳本做爲變量表達式處理(默認是JavaScript),判斷條件可使用函數和變量,例如,${__jexl(${VAR}==23)}或者${COUNT} < 10或者${JMeterThread.last_sample_ok}檢查最後一個採樣是否成功, 若是選中「Interpret Condition as Variable Expression", 那麼對應的表達式將會被計算,並與」true"比較,而不需使用JavaScript.注意:若是判斷條件以JavaScript方式解釋執行,那麼腳本就沒法訪問任何變量。若是要訪問變量,需勾選,並使用__javaScript()函數調用。若是在解釋執行代碼時發生錯誤,那麼條件就被認定爲false,並在jmeter.log記錄一條消息
- While Controller: conditon可能值
- Blank:當循環中有采樣失敗了後退出循環
- LAST:當循環中有采樣失敗了後退出循環,若是循環前最近的採樣失敗了,布進入循環
- Otherwise:當條件等同於字符串」false"時,退出(或者不進入)循環,舉個例子:
- ${VAR} --當VAR被其餘測試元件設置爲false
- ${__javaScript("${VAR2}"=="abcd")}
- ${_P(property)}--當屬性在其餘地方被設置爲"false"
- Switch Controller:switch value,選擇執行的子測試元件對應數字(或名稱)。子測試元件從0開始編號
- ForEach控制器(ForEach Controller):循環遍歷一系列相關變量,ForEach控制器很是適合於前置處理器正則表達式一塊兒使用,前置處理器正則表達式能夠從一個請求的結果數據中提取須要的輸入變量。經過省略「_"分隔符,ForEach 控制器使用輸入變量refName_g能夠循環遍歷全部組合。使用refName_${C}_g格式的輸入變量還能夠循環遍歷全部匹配的全部組合,其中C是一個計數器變量。
- 模塊控制器(Module Controller):提供了一個機制,即在當前測試計劃中動態地替換測試計劃判斷。不該該在遠程測試或者非GUI模式下雨工做件一塊兒使用。
- Include Controller:使用外部JMX文件,將採樣器添加到簡單控制器之下,接着將簡單控制器保存爲JMX文件。該文件接下來被用到測試計劃中。被包含的測試計劃中不能含有線程組。它只能是簡單控制器及其子元器件等。(Cookie Manager/User Defined Variables不該該在被包含文件中) ,該控制器在Filename域中不支持變量、函數,可是,若是定義了屬性includecontroller.prefix,其內容將做爲路徑名前綴。
- 事務控制器(Transaction Controller) : 會產生一個額外的採樣,用於衡量執行嵌套測試所耗費的所有時間(包含了控制器範圍內的全部處理,不只是採樣),有兩種操做模式 1)附加採樣在嵌套採樣以後添加 ;2)附加採樣做爲嵌套採樣的父採樣來添加
- 錄製控制器:咱們用JMeter自身來錄製腳本時使用的控制器