天天看點

史上最全jmeter邏輯控制器案例詳解

在jmeter中邏輯控制器可以控制采樣器(samplers)的執行順序。由此可知,控制器需要和采樣器一起使用,否則控制器就沒有什麼意義了。放在控制器下面的所有的采樣器都會當做一個整體,執行時也會一起被執行。

(1)控制測試計劃或者線程組中節點的邏輯執行順序。

(2)對測試計劃或者線程組中的腳本進行分組、友善jmeter統計執行結果以及腳本運作時的控制等。

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

測試計劃—線程組—邏輯控制器

一、簡單控制器(Simple Controller):

從下圖看出監聽器生效于控制器内的所有采樣器,有多個簡單控制器時,采樣器按順序執行

史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解

二、循環控制器(Loop Controller):

作用:指定其子節點運作的次數,可以使用具體的數值,也可以使用變量

  1、Forever選項:勾選上這一項表示一直循環下去

  2、如果同時設定了線程組的循環次數和循環控制器的循環次數,那循環控制器的子節點運作的次數為兩個數值相乘的結果。

史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解

循環控制器1設定循環3次,循環控制器2設定循環2次,線程組1循環次數1時:

史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解

HTTP請求3未處于循環控制器下,故隻執行1次

史上最全jmeter邏輯控制器案例詳解

循環控制器1設定循環3次,循環控制器2設定循環2次,線程組1循環次數2時:

先循環控制器2 2次,再循環控制器1 3次,再線程1循環2次

史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解

三、僅一次控制器:

僅一次控制器,在循環執行中對該控制器下的請求進行執行一次,然後在接下來的循環執行中将會跳過該控制器下的所有請求。

在進行登入的測試中,可以考慮将登入請求放在僅一次控制中,這樣登入請求隻執行一次。在并發查詢時,可能會使用到僅一次控制器,在并發查詢時,我們隻需要登入請求執行一次即可。Jmeter中的僅一次控制器相當于loadrunner中的init的初始化action。

線程循環設定5

史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解

HTTP請求2不在控制器内

史上最全jmeter邏輯控制器案例詳解

四:随機控制器

随機控制器下的sampler添加3個

史上最全jmeter邏輯控制器案例詳解

線程組循環設定1時,每運作一次會随機地運作1個sampler

史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解

線程組循環設定2時,每運作一次會随機地運作2個sampler

史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解

五、随機順序控制器

随機順序控制器下的sampler添加3個

随機順序控制器執行一次,會随機打亂執行它下面的所有的sampler一次

史上最全jmeter邏輯控制器案例詳解

線程組循環設定1時,每運作1次會運作3個sampler,順序打亂随機

史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解

線程組循環設定2時,每運作1次會運作3個sampler,循環2次,共計6個sampler,順序打亂随機

史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解

六、交替控制器

循環控制器(設定循環7次)——交替控制器,下面添加3個sampler 

循環時順序疊代交替控制器下的sampler 

史上最全jmeter邏輯控制器案例詳解

線程組1循環設定1次,循環控制器設定7次,順序循環7次sampler  1231231

史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解

線程組1循環設定2次,循環控制器設定7次,順序循環7次sampler ,再循環線程的2輪

史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解

七、Runtime控制器

Runtime(seconds):設定為N,則其下所有節點的運作時間為N秒。其下所有節點,跑完一輪,耗費時間小于N秒,此時,再從頭執行一邊,直到執行時間等于N,跳出控制器。

史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解

八、如果(If)控制器

if控制器條件滿足,執行控制器下的Sampler;不滿足、不填寫條件,則不執行

1.Interpret Condition as Variable Expression?:這個選項勾選了之後,條件中,如果寫“${a}" == "${b}”(及時變量a和變量b的值相等,也不會執行)。這個地方,就必須要填寫一個傳回True的表達式,比如${JMeterThread.last_sample_ok},這樣的表達式。

2.Evaluate for all children:假如這個控制器下面,有3個HTTP請求。如果需要在執行每個HTTP請求前,進行判斷是否滿足控制器中的條件,則需要勾選該複選框。

debug Sampler  響應資料  JMeterThread.last_sample_ok=true

條件設定為${JMeterThread.last_sample_ok},這是判斷boolean類型,true執行,false不執行

史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解

條件設定為"${JMeterThread.last_sample_ok}"=="AAA",成立執行,不成立不執行

史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解

九、While控制器

執行該控制器下所有節點,直到它的條件被判斷為false,才會跳出控制器,執行後續sampler

史上最全jmeter邏輯控制器案例詳解

1、哪些條件會導緻While Controller控制器跳出循環退出?

成功的sampler在前面 失敗的sampler在後面 執行到fail會跳出循環

條件中的方法或者變量為false   Condition     ${BooleanValue}

條件不滿足了  Condition     "${BooleanValue}"=="AAA"

這個控制器下的sampler執行結果失敗

史上最全jmeter邏輯控制器案例詳解

2、哪些條件會導緻While Controller控制器下sampler一直循環執行?

Condition什麼都不寫(會一直循環執行 知道執行到有fail跳出循環)

失敗的sampler在前面 成功的sampler在後面 這種情況會一直執行死循環

Condition寫LAST(會一直循環執行 知道執行到有fail跳出循環)Condition     LAST

史上最全jmeter邏輯控制器案例詳解

十、While控制器

Switch Value可以填什麼?

1.什麼都不填寫:此時,執行第一個節點 

史上最全jmeter邏輯控制器案例詳解

2.填寫數字:填寫N,則會執行這個控制器下面的第N+1個Sampler 

史上最全jmeter邏輯控制器案例詳解

3.填寫字元:會進行sampler名稱字元串全比對     填寫     sampler名稱全比對 

史上最全jmeter邏輯控制器案例詳解

十一、周遊循環控制器ForEach 控制器

 作用:ForEach控制器一般和使用者自定義變量一起使用,其在使用者自定義變量中讀取一系列相關的變量。該控制器下的采樣器或控制器都會被執行一次或多次,每次讀取不同的變量值(多個變量執行多次)

示例:1、建立不同權限的使用者,賬号用随機變量建立,類型0和1用自定義變量

輸入變量字首:在其中輸入需要周遊的使用者參數(User Parameter)

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

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

輸出變量名稱:将周遊查詢到的符合條件的使用者參數指派給輸入變量(Vname),然後就可以在控制器下的取樣器使用,格式為${輸出變量名}

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

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

史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解

十二、事務 控制器

作用:事務控制器會生産一個額外的采樣器,用來統計該控制器子結點的所有時間。

應用場景: 完成一個完整的頁面請求或一組請求或一組測試場景(多線程時是順序執行的)

史上最全jmeter邏輯控制器案例詳解

參數:

  • Generate parent sample:勾選後,所有的結果将在父結點中展示(選中這個參數結果展示如下圖紅框,否則顯示為下圖藍框)
  • Include duration of timer and pre-post processors in generated sample:選中這一項會統計定時器(timer)的時間,否則隻統計采樣器(sample)的時間

1、事務下有多個取樣器,其中一個取樣器請求失敗,這個事務就失敗了

史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解
史上最全jmeter邏輯控制器案例詳解

十三、吞吐量控制器throughput controller

待續————————————————————————————————