Jmeter——ForEach Controller&Loop Controller


今天來分享下Jmeter中的2款循環控制器,ForEach Controller和Loop Controller,在使用上還是有所區別。

ForEach Controller

ForEach Controller簡介

ForEach Controller可以理解為迭代器(iterator),就是遍歷當前符合條件的所有數據,可用於Jmeter腳本中的參數化。

我們直接看圖來說,如下所示:

如上所示,就是ForEach Controller的配置界面,界面有如下參數,一一講解:

  • Name:控制器名稱,可根據用戶需要任意填寫,也可不填

  • Comments:用戶可根據需要任意填寫,也可不填

  • Input variable prefix:輸入變量前綴,數據來源:①用戶可以在“用戶自定義變量”中定義一組變量,循環控制器可以從中獲取到變量對應值,然后作為循環條件;②用戶可將提取的參數作為循環條件

  • Start index for loop(exclusive): 開始循環字段,循環變量下標起點(不包含)

  • End index for loop(inclusive):循環變量下標終點(包含)

  • Output variable name:輸出變量名稱,循環控制器生成的變量名稱,引用時填寫的參數名稱與輸出變量名稱一致

  • Add "_"before number?:數字之前加上下划線“_”,變量前綴是否加“_”作為分隔符

ForEach Controller使用

我們直接通過案例來看,ForEach Controller如何使用。如上所述,變量的來源,取自於2種情況,那我們就一一了解下。不過在操作之前,各自要有Jmeter環境哦,環境配置可以參考以前博文。

用戶定義變量

用戶定義變量是配置元件中的一個元件,可定義參數,便於后續接口直接使用,也是參數化的一種方式。元件添加入口如下所示:

我們來定義一組數據,我就以自己的博客為例了,配置參數后,如下所示:

我們可以看出,變量名稱是有規律可循的,都是以wd_number開頭。或許有疑問,為什么要這樣來設置,繼續往下看,馬上就能知道其作用了。

參數來源我們配置好后,這就需要在ForEach Controller配置對應數據了,跟上節奏一起來。

我們在之前ForEach Controller簡介中了解到,有個參數是Input variable prefix 輸入變量前綴,在這里輸入的內容就是wd_number。因為我們在用戶定義變量的元件中,配置的一組數據都是以此開頭的。

Start index for loop(exclusive)End index for loop(inclusive)可以不配置,非必填數據。如果配置的話,需要注意的是,起始位是不包含的,這個到時候具體看案例截圖就清楚。

Output variable name輸出變量,這個參數是用於后續參數的引用名稱,比如我們平時用到的正則提取器,也是需要定義一個變量的,同一個意思。

Add "\_"before number 這個是看各自定義的變量名稱是怎樣的,變量間有_,則需要勾選,沒有的話,不勾選即可。

配置結果如下所示:

我們再用outwd變量引用到對應接口參數中即可,如下所示:

到現在為止,已經完成了配置步驟,我們直接來運行腳本,看下運行結果,如下所示:

從運行的結果可以看出,我們並沒有設置循環次數,可為什么是5次了,是因為我們設置的變量只有5個,並且是依次替換變量請求接口,這不就是普通的參數化嘛,是不是很簡單。

剛才的結果,我們沒有配置循環的起止位,現在我們配置上起止位,配置如下:

再次運行腳本,看下是什么個結果,如下所示:

從上圖運行的結果可以很清楚明了的看出其作用,起始位是不包含的,結束位是包含,配置為1和3,所以運行結果是取2和3的參數來請求接口。

提取參數

提取參數同樣以博客為例,每個人的博客都有三個列表,閱讀排行榜、最新評論、推薦排行榜,剛好可以用於此demo。

可以看下數據,都是一個a標簽,如下所示:

通過用戶定義變量的方式,大家肯定有思路,提取參數如何實現了。

我們通過正則,將15條數據提取,並把對應參數配置到ForEach Controller即可。

那我們就先實現正則匹配這一步,正則相關知識自己另外補充,也可以參考我以前的博文,今天就不贅述了。我們觀察要提取的數據,都是有規律可循的,添加正則提取器,並配置如下所示:

這里需要注意的是,Match No.,我們在這里配置為-1,因為需要符合條件的所有值:

  • 配置為0,表示隨機值;
  • 配置為正整數,表示取匹配到的第幾個數據;
  • 配置為-1,表示取匹配到的所有數據。

正則配置好后,可以運行腳本,看下是否正常提取到了數據,調試也是寫腳本的一部分工作。

我們再來配置ForEach Controller,如下所示:

再將輸出變量引用到對應接口參數中,如下所示:

我們來運行腳本,看下整體效果,如下所示:

如上所示,分別請求了15次接口,使用起來是不是很方便,到此,是不是已經可以上手使用起來了,參數化就是這么簡單。

Loop Controller

Loop Controller簡介

Loop Controller,功能擴展性不強,只能配置為無限循環和具體循環次數,主要用於測試接口重復調用的情況。

我們通過配置界面來了解下,如下所示:

根據上圖,來了解下參數配置:

  • Loop Controller:元件名稱
  • Name:控制器名稱
  • Comments:注釋
  • Loop Count:設置運行次數,Infinite 勾選表示為永久運行

Loop Controller使用

Loop Controller使用很簡單,我們看了配置界面就很清楚,無非就是配置循環次數,或者一直無限循環。

指定循環次數

我們通過案例來直觀的看下效果,我們配置循環次數為2,並運行腳本,運行結果如下所示:

我們從上圖可知,循環次數為2,每個接口調用了2次。比如有些業務,后端接口有做重復調用校驗的,就可以通過這種方式來驗證了。

無限循環

配置為無限循環的話,顧名思義,那肯定是一直會運行腳本,除非手動停止,腳本才會停止運行。

好了,今天的2種循環控制器就介紹到這里,綜上所述,如果用於參數化的話,大家肯定會使用ForEach Controller。2種控制器,各有功能,各取所需,希望對有需要的博友有所幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM