Jmeter(四)_邏輯控制器詳解

點擊參加9月5號的邏輯控制器公開演示課

 

循環控制器

指定其子節點運行的次數,能夠使用具體的數值,也能夠設置爲變量javascript

勾選永遠:表示一直循環下去html

若是同時設置了線程組的循環次數和循環控制器的循環次數,那循環控制器的子節點運行的次數爲兩個數值相乘。(線程數*循環控制器數值)java

 

簡單控制器:

這是Jmeter裏最簡單的一個控制器,它可讓咱們組織咱們的採樣器和其它的邏輯控制器(分組功能),提供一個塊的結構和控制,並不具備任何的邏輯控制或運行時的功能。dom

 

Foreach控制器

 

Foreach控制器實例演示

ForEach控制器通常和用戶自定義變量一塊兒使用,用於能夠遍歷讀取相關的返回值。該控制器下的採樣器或控制器都會被執行一次或屢次,每次讀取不一樣的變量值函數

· Input Variable Prefix:輸入變量前綴oop

· Output variable name:輸出變量名稱post

· Start index for loop(exclusive):循環開始的索引(默認從1開始,若是沒有1開始的變量,執行時會報錯)測試

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

· Add」_」before number:輸入變量名稱中是否使用「_」進行間隔。線程

注:foreach控制器一般和表達式提取器一塊兒使用。表達式提取值應爲-1,表示取所有值,而後samplerforeach控制器下執行遍歷

 

 

 

僅一次控制器(Once Only Controller)

在測試計劃執行期間,該控制器下的元件對每一個線程只執行一次,登陸場景常常會使用到這個控制器

 

 

事務控制器(Transaction Controller)

  • Generate parent sample:勾選後,全部的結果將在父結點中展現(選中這個參數結果展現以下圖紅框)
  • Include duration of timer and pre-post processors in generated sample:選中這一項會統計定時器(timer)的時間,不然只統計採樣器(sample)的時間

 

 

 

If 控制器(If Controller)

  做用:根據給定表達式的值決定是否執行該節點下的子節點,默認使用javascript的語法進行判斷

判斷if控制器裏面的語句是否爲真,若是爲真繼續執行

這裏我把id值寫死了,跑一次觀察結果,發現執行了服務人員的接口

 

Switch控制器(Switch Controller)

做用:Switch控制器經過給該控制器中的Value賦值,來指定運行哪一個採樣器。有兩種賦值方式:

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

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

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

示例:

一、Switch Controller選擇的值爲 客服登陸

二、執行結果:

 

 

吞吐量控制器(Throughput Controller):

  做用:控制其下的子節點的執行次數與負載比例,別被名字迷惑了,跟TPS RPS等等不要緊。也有兩種方式:

 

  • Total Executions:設置運行次數,整個測試計劃中總計執行次數
  • Percent Executions:設置運行比例(1~100之間),整個測試計劃中總計執行百分比
  • Throughtput: 設計的數值
  • Per User: 依據網上的說明在選擇Total Executions時,勾選時會在每一個線程中執行的次數。但在3.0版本中嘗試使用無效 

示例:

一、設置線程組循環5次:

二、Throughput Controller1的子結點執行3次:、

 結果發現一共運行了3次

  

三、Throughput Controller2的子結點執行(40% * 線程組循環次數5)= 2次:注意percent選項下,填寫的是百分比

觀察運行結果,發現運行了2次

 

 

隨機控制器(Random Controller):

做用:隨機執行其下的某個子結點,隨機選擇控制器中的請求進行執行

應用場景: 頁面的隨機訪問

 

執行結果,隨機選擇了三個登陸中的一個

 

 

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

做用:隨機執行其下的全部子結點

· 與Random Controller不一樣的是,這個控制器會先將須要隨機的內容均執行一遍,但次序不定

· 應用場景: 頁面的隨機訪問,但均須要訪問,且次序不限

 多運行一次,觀察結果,發現兩次運行的順序不一樣,可是每一個接口都運行了一遍

 

Critical Section Controller 關鍵部分控制器

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

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

 

Interleave Controller 交替控制器

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

 

 

Module Controller 模塊控制器

· 模塊控制器,用於跳轉到選定的控制器位置並執行對應的控制器

· 應用場景: 業務邏輯的跳轉

· 配製說明

· Module to Run: 選擇須要跳轉到的目標控制器 


 

 

While Controller

While 控制器,與開發語言中的While功能一致。直到條件爲false時,中止運行 

循環執行一個請求,僅判斷一種狀態下退出循環 

Condition條件以下: 

1爲空(不輸入任何值) -- 直到某次請求執行失敗才退出循環 

2LAST -- 直到最後一個請求請求失敗才退出循環 

3其它 -- 條件值等於"false"時,退出循環 

4Contion能夠輸入計算結果等於「false」的變量、函數。 

例:${num} !=5判斷變量num的值是否爲5等於5則退出循環 

 

${__javaScript("${num}"!=8 && "${num}"<"5",)},表示在${num}不等於8的狀況下執行循環體,可是隻能循環5  

咱們經過計數器讓它有十次循環的機會

 

查看結果,循環體執行到${num}==5的時候就中止了 

 

 

 

掃描二維碼關注咱們的公衆號,隨時獲取最新文章

相關文章
相關標籤/搜索