jmeter學習指南之16個邏輯控制器
1 今日主題: 詳解jmeter邏輯控制器
Jmeter邏輯控制器(Logic Controller)介紹:
1、 Jmeter官網對邏輯控制器的解釋是:“Logic Controllers determine the order in which Samplers are processed.”。
意思是說, 邏輯控制器可以控制取樣器(samplers)的執行順序。由此可知, 控制器需要和取樣器一起使用,否則控制器就沒有什麼意義了。放在控制器下面的所有的取樣器都會當做一個整體,執行時也會一起被執行。
2、JMeter中的Logic Controller分為兩類:
-
控制測試計劃執行過程中節點的邏輯執行順序,如:Loop Controller、If Controller等;
-
對測試計劃中的指令碼進行分組、方便JMeter統計執行結果以及進行指令碼的執行時控制等,如:Throughput Controller、Transaction Controller。
3、Jmeter提供如下這麼多的控制器:
2 jmeter控制器之一
一、簡單控制器(Simple Controller):
作用:這是Jmeter裡最簡單的一個控制器,它可以讓我們組織我們的取樣器和其它的邏輯控制器(分組功能),提供一個塊的結構和控制,並不具有任何的邏輯控制或執行時的功能。
二、迴圈控制器(Loop Controller):
作用: 指定其子節點執行的次數,可以使用具體的數值(如下圖,設定為5次),也可以使用變數
1、Forever選項:勾選上這一項表示一直迴圈下去
2、如果同時設定了執行緒組的迴圈次數和迴圈控制器的迴圈次數,那迴圈控制器的子節點執行的次數為兩個數值相乘的結果。
三、僅一次控制器(Once Only Controller ):
作用: 在測試計劃執行期間,該控制器下的子結點對每個執行緒只執行一次,登入場景經常會使用到這個控制器。
注意:將Once Only Controller 作為Loop Controller 的子節點,Once Only Controller 在每次迴圈的第一次迭代時均會被執行。
四、ForEach 控制器(ForEach Controller ):
作用: ForEach 控制器一般和使用者自定義變數一起使用,其在使用者自定義變數中讀取一系列相關的變數。該控制器下的取樣器或控制器都會被執行一次或多次,每次讀取不同的變數值 。 如下圖:
引數:
· Input Variable Prefix :輸入變數字首
· Output variable name :輸出變數名稱
· Start index for loop(exclusive) :迴圈開始的索引( 這裡如果不填寫,預設從1 開始,如果沒有1 開始的變數,執行時會報錯 )
· End index for loop(inclusive) :迴圈結束的索引
· Add”_”before number :輸入變數名稱中是否使用“_” 進行間隔。
使用者自定義變數:
變數名字首為ForEach Controller 中Input variable prefix 定義的 name + 下劃線(上圖中我們勾選了下劃線)+ 數字編號
執行結果:
總共執行了3 次,每次執行時會把獲取到的變數值賦值給輸出變數 outNmae , 其它地方可以透過 ${outNmae} 進行呼叫。
五、事務控制器(Transaction Controller ):
作用: 事務控制器會生產一個額外的取樣器,用來統計該控制器子結點的所有時間 。
· 應用場景: 完成一個完整的頁面請求或一組請求
引數:
-
Generate parent sample :勾選後,所有的結果將在父結點中展示( 選中這個引數結果展示如下圖紅框,否則顯示為下圖藍框)
-
Include duration of timer and pre-post processors in generated sample :選中這一項會統計定時器(timer) 的時間,否則只統計取樣器(sample) 的時間
3 jmeter控制器之二
六、If 控制器(If Controller ):
作用: 根據給定表示式的值決定是否執行該節點下的子節點 ,預設使用javascript 的語法進行判斷( 如下圖紅框內的文字) 。
引數:
-
Interpret Condition as Variable Expression? :選中這一項時表示:判斷變數值是否等於字串 true (不區分大小寫)
-
Evaluate for all children :如果選中這一項,在每個子結點執行前都會計算表示式
示例一:使用變數表示式的方式進行判斷:
示例二:選中Interpret Condition as Variable Expression ?,使用變數的方式判斷
七、Switch 控制器(Switch Controller ):
作用:Switch 控制器透過給該控制器中的 Value 賦值,來指定執行哪個取樣器 。有兩種賦值方式:
· 第一種是數值,Switch 控制器下的子節點從0 開始計數,透過指定子節點所在的數值來確定執行哪個元素。
· 第二種是直接指定子元素的名稱,比如取樣器的Name 來進行匹配。當指定的名稱不存在時,不執行任何元素。
當 Value 為空時,預設執行第 1 個子節點元素。
示例:
1 、Switch Controller 選擇的值為login page
2 、執行結果:
八、吞吐量控制器(Throughput Controller):
作用: 控制其下的子節點的執行次數與負載比例分配 ,別被名字迷惑了,跟吞吐量沒任何關係。也有兩種方式:
-
Total Executions :設定執行次數,整個測試計劃中總計執行次數
-
Percent Executions :設定執行比例 (1~100 之間 ) ,整個測試計劃中總計執行百分比
-
Throughtput: 設計的數值
-
Per User: 依據網上的說明在選擇 Total Executions 時,勾選時會在每個執行緒中執行的次數。但在 3.0 版本中嘗試使用無效
示例:
1 、設定執行緒組迴圈 5 次:
2 、Throughput Controller1 的子結點執行 3 次:
3 、Throughput Controller2 的子結點執行(40% * 執行緒組迴圈次數5 )= 2 次:
執行結果:
九、隨機控制器(Random Controller):
作用:隨機執行其下的某個子結點,隨機選擇控制器中的請求進行執行
應用場景: 頁面的隨機訪問
配置說明:ignore sub-controller blocks: 忽略子控制器
十、隨機順序控制器(Random Order Controller):
作用:隨機執行其下的所有子結點
· 與Random Controller 不同的是,這個控制器會先將需要隨機的內容均執行一遍,但次序不定
· 應用場景: 頁面的隨機訪問, 但均需要訪問,且次序不限
4 jmeter控制器之三
十一、 Critical Section Controller 關鍵部分控制器
作用:用於核心部分的控制, 確保其子節點下的取樣器或控制器在一個執行緒中僅會執行一次
應用場景: 使用者登入
配製說明
· Lock name: 鎖名稱,這裡可以填入其子節點下執行的執行緒的名稱,這個執行緒作為一個全域性鎖存在
十二、 Include Controller 引用外部測試計劃控制器
-
應用場景 : 測試過程中,需要引用外部的測試計劃
-
配製說明
· Include Test Plan-Filename: 選擇需要引入的外部測試計劃檔案
十三、Interleave Controller 間隔控制器
也稱交替控制器,使得該控制器包含的取樣器步驟交錯執行在每個迴圈中, 每個 執行緒 使用者僅執行一次控制器內的請求, 執行緒 使用者依據迴圈的次數請求控制器中的請求數
配製說明: ignore sub-controller blocks : 是否忽略子控制器
十四、 Module Controller 模組控制器
· 模組控制器,用於跳轉到選定的控制器位置並執行對應的控制器
· 應用場景: 業務邏輯的跳轉
· 配製說明
· Module to Run: 選擇需要跳轉到的目標控制器
尋找目標元素 (Find target element) :
-
尋找測試計劃中需要特定測試的元素,模組;也可理解為該控制器可以控制已經封裝好的模組元素
-
一個測試計劃由一個控制器和所有的測試元素(取樣器等)組成,測試計劃可以位於任何執行緒組或工作臺;如果計劃位於執行緒組,則可以禁用其他控制器,防止正在執行的測試計劃被影響(除了模組控制器)
-
模組控制器的優勢在於:當存在多個執行緒組時,該控制器可以輕鬆切換,只需要選擇對應的取樣器,方便快捷,替代了建立很多測試計劃的繁瑣操作
-
任何一個模組所用的控制器名字必須唯一,因為其名字被用來找到目標控制器時重新載入;出於這個原因,最好保證控制器名字不同,否則執行測試時候可能發生意外
-
模組控制器與遠端測試不應使用或非 gui 測試與工作臺部件,因為工作臺測試元素並沒有測試計劃的一部分 jmx 檔案。 任何這樣的測試就會失敗
十五、 Runtime Controller 執行時間控制器
· 執行時間控制器,設定控制器中的請求執行時間,單位:秒
· 應用場景: 對業務請求時間進行限制
· 配製說明
· Runtime(seconds): 配製需要設定的執行時間,單位秒
十六、While Controller 迴圈控制器
· 迴圈控制器,與開發語言中的While 功能一致。直到條件為false 時,停止執行
· 應用場景: 迴圈執行一個請求,僅判斷一種狀態下退出迴圈
· 配製說明
· Condition(function or variable): 可配製為空/LAST/ 變數或方法
可能的條件值有:
-
空:最後一個示例迴圈失敗時退出迴圈
-
LAST :最後一個示例迴圈失敗時退出迴圈。 如果之前的最後一個示例只是迴圈失敗, 不進入迴圈。
-
false :退出時( 或不輸入) 迴圈條件等於字串“ 假 ”
-
條件可以是任何變數或函式,最終等於字串” 假 ” 。需要注意的是:條件是評估兩次, 一次取樣前, 一次隨機取樣
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69942496/viewspace-2654214/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- jmeter基礎邏輯控制器之ForEach控制器JMeter
- Jmeter之邏輯控制器(Logic Controller)JMeterController
- Jmeter邏輯控制器之If Controller的使用解析JMeterController
- jmeter學習指南之管理CookiesJMeterCookie
- jmeter學習指南之關聯JMeter
- jmeter學習指南之聚合報告JMeter
- Jmeter(九) - 從入門到精通 - JMeter邏輯控制器 - 上篇(詳解教程)JMeter
- Jmeter(十) - 從入門到精通 - JMeter邏輯控制器 - 中篇(詳解教程)JMeter
- Jmeter(十一) - 從入門到精通 - JMeter邏輯控制器 - 下篇(詳解教程)JMeter
- jmeter學習指南之詳解jmeter執行緒組JMeter執行緒
- jmeter學習指南之Beanshell Sampler 常用方法JMeterBean
- mysql學習之-邏輯架構MySql架構
- Jmeter(十二) - 從入門到精通 - JMeter邏輯控制器 - 終篇(詳解教程)JMeter
- jmeter學習指南之常用函式的使用JMeter函式
- jmeter學習指南之操作 mysql 資料庫JMeterMySql資料庫
- Jmeter-邏輯控制器If Controller的例項運用JMeterController
- 業務邏輯學習!
- jmeter學習指南之OOM和監聽器使用JMeterOOM
- jmeter學習指南之結果分析-圖形圖表JMeter
- jmeter學習指南之響應斷言和beanshell斷言JMeterBean
- jmeter學習指南之深入分析跨域傳遞cookieJMeter跨域Cookie
- jmeter學習指南之非GUI命令列執行詳解JMeterGUI命令列
- jmeter學習指南之原始碼匯入 IntelliJ IDEAJMeter原始碼IntelliJIdea
- jmeter學習指南之引數化CSV Data Set ConfigJMeter
- jmeter學習指南之Boundary Extractor和正規表示式提取器JMeter
- jmeter學習指南之Beanshell 呼叫 java 程式碼的三種方式JMeterBeanJava
- 《深入淺出深度學習》之“從邏輯學到認知科學”深度學習
- 【Numpy學習12】邏輯函式函式
- 【AIX 命令學習】建立邏輯卷!AI
- c#學習----邏輯判斷C#
- 物聯網學習教程——邏輯運算子和邏輯表示式
- jmeter學習指南之察看結果樹,你知道都有哪些功能嗎JMeter
- jmeter學習指南之最佳化指令碼JMeter指令碼
- HBase學習之Hbase的邏輯結構和物理結構
- 如何使用jMeter傳送兩個邏輯上相關的HTTP請求JMeterHTTP
- 從零開始學習邏輯迴歸邏輯迴歸
- JS邏輯練習JS
- Swoft 學習筆記之控制器筆記