天天看點

Jmeter邏輯控制器

Jmeter邏輯控制器通常需要和采樣器一起使,其作用域隻對其子節點的sampler有效,作用是控制采樣器的執行順序。Jmeter提供了17個邏輯控制器,根據其用法大概可以分為兩類,一是控制測試計劃執行過程中節點的邏輯執行順序,如:Loop Controller、If Controller 等;二是對測試計劃中的腳本進行分組,友善 JMeter 統計執行結果以及進行腳本的運作時控制,如Transaction Controller。

Jmeter邏輯控制器

一、控制測試計劃執行過程中節點的邏輯執行順序

1、If Controller(If控制器)

根據給定表達式的值判斷是否執行該節點下的子節點

Jmeter邏輯控制器

配置說明:

interpret condition as variable expression:如果勾選該項,會判斷表達式為true或者false,如果不勾選則需要自己寫判斷表達式;比如有個參數

request

,如果勾選此項則表達式填

${request}

,如果不勾選則填

“${request}”==“true”

或者

“${request}”==“false”

Evaluate for all children:如果選中這一項,在控制器下每個子結點執行前都會計算表達式。

2、Loop Controller(循環控制器)

用于控制循環次數

Jmeter邏輯控制器

配置說明:

Loop Count:循環次數,填入輸入框;

Forever:勾選此項表示無限循環;

3、While Controller(While控制器)

表達式值為“false”時跳出循環,否則一直循環運作其下的sample;

Jmeter邏輯控制器

配置說明:

Condition:可配制為空、LAST、條件表達式。為空表示最後一個示例循環失敗時退出循環;LAST表示最後一個示例循環失敗時退出循環,如果之前的最後一個示例隻是循環失敗,不進入循環;false表示退出時 (或不輸入) 循環條件等于字元串 “ 假 ”;條件表達式可以是任何變量或函數,最終等于字元串” 假 ”,需要注意的是條件判斷為兩次,一次取樣前,一次随機取樣。

4、Critical Section Controller(臨界部分控制器)

用于核心部分的控制,確定其子節點下的取樣器或控制器在一個線程中僅會執行一次

Jmeter邏輯控制器

配置說明:

Lock name: 鎖名稱,填入後作用域内的請求或線程組隻執行一次;

5、ForEach Controller(ForEach 控制器)

ForEach控制器一般和使用者自定義變量或者正規表達式提取器一起使用,其在使用者自定義變量或者從正規表達式提取器的傳回結果中讀取一系列相關的變量。該控制器下的采樣器或控制器都會被執行一次或多次,每次讀取不同的變量值;

Jmeter邏輯控制器

配置說明:

Input Variable Prefix:輸入變量字首;

Output variable name:輸出變量名稱;

Start index for loop(exclusive):循環開始的索引(這裡如果不填寫,預設從1開始,如果沒有1開始的變量,執行時會報錯);

End index for loop(inclusive):循環結束的索引;

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

6、Include Controller(Include 控制器)

引用外部的測試計劃,需要注意的是如果jmx檔案中有cookie或者使用者自定義變量,可能無法起效

Jmeter邏輯控制器

配置說明:

Filename:引用的外部jmx檔案路徑

7、Interleave Controller(交替控制器)

交替控制,使得該控制器包含的取樣器步驟交錯執行在每個循環中,線程使用者依據循環的次數請求控制器中的請求數

Jmeter邏輯控制器

配置說明:

Ignore sub-controller blocks:勾選此項,則此控制器下的子控制器會作為一個整體進行疊代

Interleave across threads:勾選此項,則控制器下的請求将應用至所有線程和循環中疊代。如有四個請求,三個線程,兩輪循環,那麼第一輪三個線程分别運作請求1,請求2,請求3,第二輪循環的三個線程運作請求4,請求1,請求2

8、Once Only Controller(僅一次控制器)

添加此控制器後,無論多少個循環,請求線上程中都隻會運作一次,常用于登入這種隻需要做一次請求的接口

Jmeter邏輯控制器

9、Random Controller(随機控制器)

類似交替控制器,但該控制器是随機選取某一個取樣器請求并執行

Jmeter邏輯控制器

配置說明:

Ignore sub-controller blocks:與交替控制器的此項設定意義相同,控制器下的子控制器會作為一個整體進行疊代

10、Random Order Controller(随機順序控制器)

無特别意義,基本上作為分類所用,其下每個子元素每次隻運作一次,但是節點的執行順序将是随機的

Jmeter邏輯控制器

11、Runtime Controller(運作時間控制器)

此控制器用于控制其下子元素的運作時間,如超過設定時間則終止該子元素運作

Jmeter邏輯控制器

配置說明:

Runtime(seconds):子元素逾時時間

12、Throughput Controller(吞吐量控制器)

控制其下的子節點的執行次數與負載比例配置設定,别被名字迷惑了,跟吞吐量沒任何關系

Jmeter邏輯控制器

配置說明:

Throughput:如選擇Total Excutions模式,其下子元素的執行按照此數值來執行,如線程循環設定為5,此數值設定為3,則其下子元素隻執行3次;如選擇Percent Excutions模式,則此處設定為百分比(不帶百分号),如循環5次,此值為40,則執行5*40%=2次

Per User:如勾選此項,則此控制器的設定單獨應用于每個線程,如不勾選,則應用于全部線程

13、Module Controller(子產品控制器)

用于跳轉到標明的控制器位置并執行對應的控制器

Jmeter邏輯控制器

Module to Run:要跳轉的控制器

14、Switch Controller(Switch控制器)

通過給該控制器中的Value指派,來指定運作哪個采樣器。有兩種指派方式:

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

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

當Value為空時,預設執行第1個子節點元素

Jmeter邏輯控制器

Switch Value:要切換到的子元素的編号或者是名稱

二、對測試計劃中的腳本進行分組

1、Transaction Controller(事務控制器)

事物控制器,用于采集其節點下采樣器的花費時間

Jmeter邏輯控制器

配置說明:

Generate Parent Sample:勾選此項,則會在檢視結果樹監聽器中以此為父節點,其下采樣器為子節點來展示,否則獨立顯示。

Include duration of timer and pre-post processors in generated sample:如勾選此項,則會計算定時器、Pre Processors和Post Processors的時間。

2、Recording Controller(錄制控制器)

用于錄制腳本,此控制器是用于訓示代理伺服器應該将樣本記錄到何處的位置保持器,即此控制器放在何處,則錄制腳本時腳本就将方在何處

Jmeter邏輯控制器

配置說明:

Clear all the recorded samples:清除所錄制的所有sample

3、Simple Controller(簡單控制器)

無特别意義,基本上作為分類所用,其下子元素按順序執行,每輪執行一次

Jmeter邏輯控制器

繼續閱讀