Jmeter性能測試(9)--邏輯控制器

jmeter中邏輯控制器(Logic Controllers)的作用域只對其子節點的sampler有效,作用是控制採樣器的執行順序。

jmeter提供了17種邏輯控制器,它們各個功能都不盡相同,大概可以分爲2種使用類型:

①.控制測試計劃執行過程中節點的邏輯執行順序,如:Loop Controller(循環控制器)、If Controller(如果if控制器)等;

②.對測試計劃中的腳本進行分組,方便JMeter統計執行結果以及進行腳本的運行時控制等,如:Throughput Controller(吞吐量控制器)、Transaction Controller(事務控制器)等

jmeter提供如下17種邏輯控制器:

 

一、臨界區控制器(critical section Controller)

作用:臨界區控制器確保其子節點下的取樣器或控制器將被執行(只有一個線程作爲一個鎖)

名稱和註釋很簡單,就是給控制器添加一個備註,使人明白這個控制器的解釋含義的意思

Lock name:鎖名稱,這裏可以填入其子節點下執行的線程的名稱,這個線程作爲一個全局鎖存在

2、遍歷循環控制器(ForEach Controller)

作用:用來遍歷當前元素的所有可執行場景;在用戶自定義變量中讀取一系列相關的變量,該控制器下的採樣器或控制器都會被執行一次或多次,每次讀取不同的變量值;

輸入變量前綴:在其中輸入需要遍歷的用戶參數(User Parameter)

Start index for loop(exclusive):循環指數開始(唯一)→ 遍歷查詢的變量範圍,開始的值(這裏如果不填寫,默認從1開始,如果沒有1開始的變量,執行時會報錯)

End index for loop(inclusive):循環指數結束(包含)→ 遍歷查詢的變量範圍,結束的值

輸出變量名稱:將遍歷查詢到的符合條件的用戶參數賦值給輸入變量(Vname),然後就可以在控制器下的取樣器使用,格式爲${輸出變量名}

Add”_”before number:輸入變量名稱中是否使用“_”進行間隔

PS:這個控制器一般配合配置元件→ 正則表達式提取器來一起使用,可對頁面上的某些元素進行重複處理。

3、包含控制器(Include Controller)

作用:用於引用外部的Jmx文件;從而控制多個測試計劃組合

include Test Plan:包含測試計劃的文件名,可以點擊瀏覽,從文件夾保存的JMX文件夾目錄下選擇對應的JMX文件

使用方法:創建一個測試計劃,下面可添加取樣器/控制器等,然後保存測試計劃,爲了方便起見, 線程組也可以添加外部JMX文件中用於調試;

如果測試使用Cookie或用戶定義的變量,這些應放置在頂層(包括文件),否則無法正常工作;此元素不支持變量/函數在文件名字段中;但是,如果屬於包含控制器定義的內容,則使用前綴路徑名。

當使用包含控制器中包含相同的JMX文件,則要確保文件名不同,以避免無法讀取;如果文件不能被發現,那麼控制器會嘗試打開文件名相對於JMX啓動目錄。

4、生命週期/運行週期控制器(Runtime Controller)

作用:用於控制該控制器下的取樣器/控制器的運行時間

Runtime(seconds):運行時間,單位爲:秒

5、轉換控制器(Switch Controller)

作用:通過給該控制器中的value賦值,來指定運行哪個取樣器(也可以理解爲開關控制器)

Switch value:控制器具體賦值的value值字段

有兩種賦值方式:

①.第一種是數值,Switch控制器下的子節點從0開始計數,通過指定子節點所在的數值來確定執行哪個元素。

②.第二種是直接指定子元素的名稱,比如採樣器的Name來進行匹配。當指定的名稱不存在時,不執行任何元素。

當Value爲空時,默認執行第1個子節點元素。

6、當/判斷控制器(While Controller)

 作用:運行其子節點下的取樣器/控制器,直到條件爲“假”

Condition(function or variable):條件(函數或變量):裏面可填入判斷依據的條件,參照

使用方法:可能的條件值有:

①.空白:最後一個示例循環失敗時退出循環

②.最後一個值:最後一個示例循環失敗時退出循環。 如果之前的最後一個示例只是循環失敗,不進入循環。

③.否則:退出時(或不輸入)循環條件等於字符串“ 假 ”

條件可以是任何變量或函數,最終等於字符串” 假 ”。需要注意的是:條件是評估兩次,一次取樣前,一次隨機取樣

7、事務控制器(transaction controller)

作用:生成一個額外的採樣器來測量其下測試元素的總體時間;值得注意的是,這個時間包含該控制器範圍內的所有處理時間,而不僅僅是採樣器的

Generate parent sample:生成父樣本(不同的模式選擇)

include duration of timer and pre-post processors in generated sample:包含時間的計時器和前後處理器生成的示例(不同的模式選擇)

對於Jmeter2.3以上的版本,有兩種模式的操作

①.事務採樣器是添加到其下采樣器後面的

②.事務採樣器是作爲其下采樣器的父採樣器

生成的事務採樣器的測量的時間包括其下采樣器以及其他的一切時間。由於時鐘頻率問題,這個時間可能略大於單個採樣器的時間之和;

時鐘開始時間介於控制器記錄開始時間與第一個採樣器開始之間,時鐘結束時間亦然。

事務採樣器只有在其子採樣器都成功的情況下才顯示成功。

在父模式下,事務控制器下的各個採樣器只有在結果樹裏才能看到;同時,子採樣器的數據也不會在CSV文件中顯示,但是在XML文件中可以看到。

8、交替控制器(creatleave controller)

作用: 交替控制,使得該控制器包含的取樣器步驟交錯執行在每個循環中

忽略子控制器模塊(Ignore sub-contorller blocks):如果勾選此項,交錯控制器將sub-controllers像單一請求元素一樣,一次只允許一個請求/控制器

使用方法:假使該控制器下有2個取樣器A和B,交替執行A和B2個請求,即每次傳遞一個子請求到這個測試,按子元件的排列順序

9、僅一次控制器(once only controller)

作用:在多線程循環的時候,將使其子節點下的取樣器請求只運行一次

10、流量控制器(throughput controller)

作用:jmeter自帶的翻譯這裏是錯誤的,因爲它並不能控制吞吐量(吞吐量的概念請自行百度);其實質作用是允許用戶控制執行的頻率

總共有兩種執行模式:百分比執行和總執行

總執行(Total Executions):使控制器停止執行一定數量的測試計劃

百分比執行(Percent Executions):使控制器按一定比例執行迭代的測試計劃

流量(Throughput):對應上面的執行數量或者比例

每個用戶(Per User):每個用戶

如果勾選此項,將導致控制器計算是否應該執行在每個用戶(每個線程)的基礎上;如果不加以控制,那麼將計算全球所有用戶

11、IF控制器(If Controller)

作用:允許用戶控制該控制器下面的取樣器/控制器是否執行該節點下的子節點;

條件(默認JavaScript)(Condition(default javascript):使用JavaScript的函數或變量進行評估判斷條件爲真或假

條件解釋爲變量表達式(interpret condition as variable expression):如果勾選該項,那麼變量表達式會進行求值,並與“ture”或“false”進行比較,而無需使用JavaScript

對所有子條件執行(evaluate for all children):如果勾選該項,則該controller在沒一個子節點執行時執行一次;

默認情況下,該控制器可以對包含在其下面的所有可運行的元素進行執行,但只在入口執行一次

12、錄製控制器(Recording Controller)

作用:類似代理服務器的作用,在測試執行期間記錄測試樣本

清除所有記錄的樣本(Clear all the recorded samples):點擊可以清除所有已經記錄的測試樣本

一般情況下,在測試執行時候,它沒有效果,但是在執行HTTPS測試腳本時,會記錄下所有測試樣本

13、循環控制器(Loop Controller)

作用:該控制器下的取樣器請求可以循環運行

循環次數(Loop Count):在輸入框中輸入需要循環的次數,控制器下的請求即可循環運行

永遠(forever):如果勾選該項,那麼控制器下的請求可一直運行

14、模塊控制器(Module Controller)

作用:測試控制器子節點下的某一個模塊,而不是整個測試計劃

 

尋找目標元素(Find target element):尋找測試計劃中需要特定測試的元素,模塊;也可理解爲該控制器可以控制已經封裝好的模塊元素

△ :一個測試計劃由一個控制器和所有的測試元素(取樣器等)組成,測試計劃可以位於任何線程組或工作臺;如果計劃位於線程組,則可以禁用其他控制器,防止正在運行的測試計劃被影響(除了模塊控制器)

     模塊控制器的優勢在於:當存在多個線程組時,該控制器可以輕鬆切換,只需要選擇對應的取樣器,方便快捷,替代了創建很多測試計劃的繁瑣操作

△ :任何一個模塊所用的控制器名字必須唯一,因爲其名字被用來找到目標控制器時重新加載;出於這個原因,最好保證控制器名字不同,否則執行測試時候可能發生意外

△ :模塊控制器與遠程測試不應使用或非gui測試與工作臺部件,因爲工作臺測試元素並沒有測試計劃的一部分 jmx 文件。 任何這樣的測試就會失敗

15、簡單控制器(Simple Controller)

 作用:用來組合取樣器和其他邏輯控制器

簡單控制器是最基本的控制器,對jmeter測試運行沒有任何影響,可用來命名某些操作

16、隨機控制器(Random Controller)

作用:類似交替控制器,但該控制器隨機選取某一個取樣器請求並執行

忽略子控制器模塊(Ignore sub-controller blocks):如果勾選此項,交錯控制器將sub-controllers像單一請求元素一樣,一次只允許一個請求/控制器

17、隨機順序控制器(Random Order Controller)

作用:類似於簡單控制器,將執行每個子節點下的取樣器請求一次,但是執行是隨機的

查詢了很多資料,參考了其他博客作者的內容,可以說結果很不理想,大部分都是直接將jmeter官網文檔用翻譯詞典翻譯出來就貼上去了,錯別字,解釋語句不通;

官網文檔地址:http://jmeter.apache.org/usermanual/component_reference.html#logic_controllers

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章