1. 程式人生 > >Jmeter(十一) - 從入門到精通 - JMeter邏輯控制器 - 下篇(詳解教程)

Jmeter(十一) - 從入門到精通 - JMeter邏輯控制器 - 下篇(詳解教程)

1.簡介

Jmeter官網對邏輯控制器的解釋是:“Logic Controllers determine the order in which Samplers are processed.”。

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

JMeter邏輯控制器可以對元件的執行邏輯進行控制,除僅一次控制器外,其他可以巢狀別的種類的邏輯控制器。

2.邏輯控制器分類

JMeter中的Logic Controller分為兩類:

(1)控制測試計劃執行過程中節點的邏輯執行順序,如:Loop Controller、If Controller等;
(2)對測試計劃中的指令碼進行分組、方便JMeter統計執行結果以及進行指令碼的執行時控制等,如:Throughput Controller、Transaction Controller。

3.預覽邏輯控制器 

首先我們來看一下JMeter的邏輯控制器,路徑:執行緒組(使用者)->新增->邏輯控制器(Logic Controller);我們可以清楚地看到JMeter5中共有17個邏輯控制器,如下圖所示:

如果上圖您看得不是很清楚的話,巨集哥總結了一個思維導圖,關於JMeter5的邏輯控制器型別,如下圖所示: 

 通過以上的瞭解,我們對邏輯控制器有了一個大致的瞭解和認識。下面巨集哥就給小夥伴或則童鞋們分享講解一些通常在工作中會用到的邏輯控制器。 

4.常用邏輯控制器詳解

  這一小節,巨集哥就由上而下地詳細地講解一下常用的邏輯控制器。

4.1Interleave Controller

交替控制器,顧名思義是:互相交替,其節點下的取樣器交替執行。根據被控制器觸發執行次數,去依次執行控制器下的子節點<邏輯控制器、取樣器>。被觸發執行可以由執行緒組的執行緒數、迴圈次數、邏輯控制器觸發。

1、我們先來看看這個Interleave Controller長得是啥樣子,路徑:執行緒組 > 新增 > 邏輯控制器 > 交替控制器,如下圖所示: 

2、關鍵引數說明如下:

Name:名稱,可以隨意設定,甚至為空;

Comments:註釋,可隨意設定,可以為空;

Ignore sub-controller blocks:忽略子控制器,即子控制器失效,由交替控制器接管。

勾選後,會無視節點下的所有控制器<交替控制器、隨機控制器例外>,將每個取樣器作為一個單獨位元組點執行
不勾選忽略子控制器,交替執行時,節點下次一級每個取樣器、邏輯控制器都認為是一個單獨子節點來交替執行。

Interleave across threads: 勾選此項,則交替控制器下的請求將應用至所有執行緒和迴圈中迭代。如有四個請求,三個執行緒,兩輪迴圈,那麼第一輪三個執行緒分別執行請求1,請求2,請求3,第二輪迴圈的三個執行緒執行請求4,請求1,請求2。

允許跨執行緒交替執行,勾選後,當執行緒組執行緒數大於1時,當前執行緒首次執行會根據執行緒數順序進行交替,後續執行按自己所屬執行緒的上一個次的執行的位置交替,如: 交替控制器下由A B C D  E 5個介面, 設定執行緒組 執行緒數3個,迴圈4次,則最終執行結果為  執行緒1執行 A B C D 執行緒2執行 B C D E 執行緒3執行 C D E A 。

 4.1.1簡單例項

1、首先在交替控制器下新增3個取樣器 訪問部落格園首頁、訪問北京巨集哥的部落格園首頁和訪問北京巨集哥的JMeter系列文章,執行緒組下新增一個取樣器 訪問度娘,與交替控制器同層級,執行緒組設定迴圈次數為2,如下圖所示:

2、配置好以後,執行JMeter,然後檢視結果樹(迴圈兩次,每次只執行交替控制器裡一個取樣器),如下圖所示:

4.1.2複雜例項

巨集哥這裡講解的複雜使用,就是將交替控制器巢狀使用,來看看執行結果,從而更進一步的理解和學習交替控制器。

1、建立一個父交替控制器:北京巨集爸,其下兩個子交替控制器:北京巨集哥 和 北京巨集弟,子交替控制器下面分別新增2個取樣器:訪問度娘 和 訪問部落格園首頁,設定執行緒組迴圈次數10,如下圖所示:

2、配置好以後,執行JMeter,然後檢視結果樹( 從結果可以看出,先交替子控制器的樣例,再交替父控制器下的樣例。大家明白了吧),如下圖所示:

4.1.3忽略子控制器塊

  在交替控制器的設定介面,有這樣一個選項,是否忽略子控制器,所以這裡一般也是交替控制器作為父級控制器時使用的選項,這裡的子控制器一般指非交替控制器的其他控制器 (如果子控制器也是交替控制器,該項實際和交替控制器的巢狀效果一樣了)

1、下面,我們在交替器下新增一個迴圈控制器,設定迴圈次數 2,執行緒組迴圈次數設定為 3,設定交替器 勾選 忽略子控制器,如下圖所示:

迴圈控制器:

執行緒組:

交替控制器:

2、 配置好以後,執行JMeter,然後檢視結果樹( 從結果可以看出,迴圈控制器沒有執行2次,只執行了1次),如下圖所示:

3、下面,我們再把交替控制器中 忽略子控制器 去掉勾選,其他設定不變,如下圖所示:

4、配置好以後,點選“儲存”,執行JMeter,然後檢視結果樹( 從結果可以看出,迴圈控制器執行2次,然後再執行 訪問度娘-哥弟 取樣器這樣交替執行了3次),如下圖所示:

綜上所述:以控制器為1個小單元,交替執行。

4.2Once Only Controller

在每個執行緒內,該控制器下的內容只會被執行一遍,無論迴圈多少次,都只執行一遍。<巢狀在迴圈控制器之內時是個例外,每個執行緒組迴圈都會被執行一遍>。

此控制器通常用於控制需要登入的請求,測試過程中,我們往往都只需要登入一次,獲取到對應的登入資訊後即可執行後續相關的請求,而不是每執行一個請求都登入一次,如將login請求放入僅一次控制器,則線上程組迴圈執行期間,不論迴圈次數設定為多少次,login請求都將僅在第一次執行時執行

 1、我們先來看看這個Once Only Controller長得是啥樣子,路徑:執行緒組 > 新增 > 邏輯控制器 > 僅一次控制器,如下圖所示:

2、關鍵引數說明如下:

Name:名稱,可以隨意設定,甚至為空;

Comments:註釋,可隨意設定,可以為空。

4.2.1例項

巨集哥這裡以部落格園釋出文章為例,說一下測試場景:正常邏輯是我們需要一次登入部落格園然後多次釋出文章;而不是釋出一次文章就需要登入一次部落格園。以此為例新增測試指令碼。

1、按照上邊的測試場景,巨集哥新增測試指令碼,如下圖所示:

 2、配置好以後,點選“儲存”,執行JMeter,然後檢視結果樹( 從結果可以看出,一次登入部落格園然後多次釋出文章;而不是釋出一次文章就需要登入一次部落格園),如下圖所示:

4.2.2紅色字型實戰舉例 

<巢狀在迴圈控制器之內時是個例外,每個執行緒組迴圈都會被執行一遍>。

1、保持上邊的測試樹結構,然後將 僅一次控制器 用滑鼠拖到 迴圈控制器 裡邊,如下圖所示:

 2、配置好以後,點選“儲存”,執行JMeter,然後檢視結果樹( 從結果可以看出,巨集哥設定了3個執行緒,每個執行緒都登入一次部落格園),如下圖所示:

4.3Random Controller

隨機控制器節點下的元件隨機執行,與交替控制器不一樣的是節點下的元件執行順序不定。

 1、我們先來看看這個Random Controller長得是啥樣子,路徑:執行緒組 > 新增 > 邏輯控制器 >  隨機控制器,如下圖所示:

2、關鍵引數說明如下:

Name:名稱,可以隨意設定,甚至為空;

Comments:註釋,可隨意設定,可以為空;

Ignore sub-controller blocks:忽略子控制器,即子控制器失效,由隨機控制器接管,類似交替控制器。

4.3.1簡單例項 

1、建立測試計劃,隨機控制下新增三個請求,控制器外一個請求,執行緒4個;如下圖所示:

2、配置好以後,點選“儲存”,執行JMeter,然後檢視結果樹( 從結果可以看出,巨集哥設定了4個執行緒,每個執行緒都要訪問一次北京巨集哥的Jmeter系列文章,但是控制器下邊的取樣器的訪問卻是隨機訪問一個),如下圖所示:

4.3.2隨機巢狀迴圈-不忽略子控制器

1、按照小標題的內容,建立測試計劃,如下圖所示:

2、配置好以後,點選“儲存”,執行JMeter,然後檢視結果樹( 從結果可以看出,巨集哥設定了3個執行緒,隨機選擇隨機控制器下的兩個迴圈控制器),如下圖所示:

4.3.3隨機巢狀迴圈-忽略子控制器

1、按照小標題的內容,建立測試計劃,如下圖所示:

2、配置好以後,點選“儲存”,執行JMeter,然後檢視結果樹( 從結果可以看出,巨集哥設定了3個執行緒,迴圈控制器也失效了,每次都隨機選擇一個取樣器執行),如下圖所示:

4.3.4隨機巢狀交替-忽略子控制器

1、按照小標題的內容,建立測試計劃,如下圖所示:

2、配置好以後,點選“儲存”,執行JMeter,然後檢視結果樹( 從結果可以看出,巨集哥設定了10次迴圈,交替控制器也失效了,每次都隨機選擇一個取樣器執行),如下圖所示:

4.4Random Order Controller

隨機順序控制器其節點下的原件隨機執行,不過每個元件只執行一次。

當控制器被觸發時,將控制器下的所有子節點順序打亂執行一遍,執行一遍;執行一遍,不是執行一個。

注意:是將子節點的順序打亂,而非請求的順序打亂,子節點可以是其他邏輯控制器。

隨機控制器與隨機順序控制器名字十分接近,但兩者還是有著明顯的區別,可參考  上邊介紹的隨機控制器。

隨機控制器為每次只執行節點下的一個子節點,隨機順序控制器是將節點下的所有子節點都正常執行,只是將執行順序打亂

1、我們先來看看這個Random Order Controller長得是啥樣子,路徑:執行緒組 > 新增 > 邏輯控制器 > 隨機順序控制器,如下圖所示: 

2、關鍵引數說明如下:

Name:名稱,可以隨意設定,甚至為空;

Comments:註釋,可隨意設定,可以為空。

4.4.1例項

1、建立測試計劃,如下圖所示: 

2、配置好以後,點選“儲存”,執行JMeter,然後檢視結果樹( 從結果可以看出,巨集哥設定了3次迴圈,每次迴圈把所有的子節點都執行了),如下圖所示: 

4.5Recording Controller

其錄製控制器,顧名思義是錄製的時候會用到。實際上它是一個位置,當我們用JMeter代理進行錄製時,錄製的指令碼預設放在此控制器的節點下面。沒有實際的邏輯作用,我們用簡單控制器也可以代替它。由於這個沒有用到過,這裡巨集哥就不做詳細介紹了,如果後期用到的話,巨集哥會單獨寫一篇關於錄製控制器的文章給小夥伴或童鞋們來答疑解惑。

1、我們先來看看這個Recording Controller長得是啥樣子,路徑:執行緒組 > 新增 > 邏輯控制器 > 錄製控制器,如下圖所示: 

2、關鍵引數說明如下:

Name:名稱,可以隨意設定,甚至為空;

Comments:註釋,可隨意設定,可以為空;

Forever:勾選上這一項表示一直迴圈下去。

5.小結

 

 好了,今天關於邏輯控制器的上篇就講解到這裡,這一篇主要介紹了 Interleave Controller、Once Only Controller、Random Controller 、 Random Order Controller和Recording Controller。

 

您的肯定就是我進步的動力。如果你感覺還不錯,就請鼓勵一下吧!記得隨手點波  推薦  不要忘記哦!!!

別忘了點 推薦 留下您來過的痕跡

 

相關推薦

Jmeter() - 入門精通 - JMeter邏輯控制器 - 下篇教程

1.簡介 Jmeter官網對邏輯控制器的解釋是:“Logic Controllers determine the order in which Samplers are processed.”。 意思是說,邏輯控制器可以控制取樣器(samplers)的執行順序。由此可知,控制器需要和取

Jmeter() - 入門精通 - JMeter邏輯控制器 - 中篇教程

1.簡介 Jmeter官網對邏輯控制器的解釋是:“Logic Controllers determine the order in which Samplers are processed.”。 意思是說,邏輯控制器可以控制取樣器(samplers)的執行順序。由此可知,控制器需要和取

Jmeter(四) - 入門精通 - JMeter定時器 - 下篇教程

1.簡介   使用者實際操作時,並非是連續點選,而是存在很多停頓的情況,例如:使用者需要時間閱讀文字內容、填表、或者查詢正確的連結等。為了模擬使用者實際情況,在效能測試中我們需要考慮思考時間。若不認真考慮思考時間很可能會導致測試結果的失真。例如,估計的可支撐使用者數偏小。在效能測試中,訪問請求之間的停頓時間被

Jmeter(八) - 入門精通 - JMeter後置處理器 -下篇教程

1.簡介   後置處理器是在發出“取樣器請求”之後執行一些操作。取樣器用來模擬使用者請求,有時候伺服器的響應資料在後續請求中需要用到,我們的勢必要對這些響應資料進行處理,後置處理器就是來完成這項工作的。例如系統登入成功以後我們需要獲取SessionId,在後面的業務操作中伺服器會驗證這

Jmeter(二) - 入門精通 - JMeter監聽器 -下篇教程

1.簡介   監聽器用來監聽及顯示JMeter取樣器測試結果,能夠以樹、表及圖形形式顯示測試結果,也可以以檔案方式儲存測試結果,JMeter測試結果檔案格式多樣,比如XML格式、CSV格式。預設情況下,測試結果將被儲存為xml格式的檔案,檔案的字尾: ".jtl"。另外一種儲存格式為CSV檔案,該格式的好處就

Jmeter(二二) - 入門精通 - JMeter斷言 - 下篇教程

1.簡介   斷言元件用來對伺服器的響應資料做驗證,常用的斷言是響應斷言,其支援正則表示式。雖然我們的通過響應斷言能夠完成絕大多數的結果驗證工作,但是JMeter還是為我們提供了適合多個場景的斷言元件,輔助我們來更好的完成結果驗證工作。在使用JMeter進行效能測試或者介面自動化測試工作中,經常會用到的一個功

Jmeter(三五) - 入門精通進階篇 - 關聯教程

1.簡介   上一篇中介紹瞭如果想要同時傳送多條請求,那麼怎樣才能讓每條資料某些請求引數改變呢。這就用到了jMeter引數化。在實際測試場景中,我們往往還有這樣的需求,登入後伺服器響應的token作為下次請求的引數,這就是所謂的引數關聯。   當請求之間有依賴關係,比如一個請求的入參是另一個請求返回的資料

Jmeter(二) - 入門精通 - JMeter邏輯控制器 - 終篇教程

1.簡介 Jmeter官網對邏輯控制器的解釋是:“Logic Controllers determine the order in which Samplers are processed.”。 意思是說,邏輯控制器可以控制取樣器(samplers)的執行順序。由此可知,控制器需要和取

Jmeter(二) - 入門精通 - JMeter斷言 - 上篇教程

1.簡介   最近由於巨集哥在搭建自己的個人部落格可能更新的有點慢。斷言元件用來對伺服器的響應資料做驗證,常用的斷言是響應斷言,其支援正則表示式。雖然我們的通過響應斷言能夠完成絕大多數的結果驗證工作,但是JMeter還是為我們提供了適合多個場景的斷言元件,輔助我們來更好的完成結果驗證工作。在使用JMeter進

Jmeter(九) - 入門精通 - JMeter邏輯控制器 - 上篇教程

1.簡介 Jmeter官網對邏輯控制器的解釋是:“Logic Controllers determine the order in which Samplers are processed.”。 意思是說,邏輯控制器可以控制取樣器(samplers)的執行順序。由此可知,控制器需要和取

Jmeter(五) - 入門精通 - JMeter匯入自定義的Jar包教程

1.簡介   原計劃這一篇是介紹前置處理器的基礎知識的,結果由於許多小夥伴或者童鞋們在微信和部落格園的短訊息中留言問如何引入自己定義的Jar包呢???我一一回復告訴他們和引入外掛的Jar包一樣的道理,一通百通。但是感覺他們還是很迷糊很迷惘,因此在這裡穿插一篇匯入自定義的Jar包。還有另外一個原因就是前置處理器

Jmeter(六) - 入門精通 - JMeter前置處理器教程

1.簡介   前置處理器是在發出“取樣器請求”之前執行一些操作。如果將前置處理器附加到取樣器元件,則它將在該取樣器元件執行之前執行。前置處理器最常用於在取樣器請求執行前修改其設定,或更新未從響應文字中提取的變數。前置處理器主要是用來處理請求前的一些準備工作,比如引數設定、環境變數設定等

Jmeter(七) - 入門精通 - JMeter後置處理器 -上篇教程

1.簡介   後置處理器是在發出“取樣器請求”之後執行一些操作。取樣器用來模擬使用者請求,有時候伺服器的響應資料在後續請求中需要用到,我們的勢必要對這些響應資料進行處理,後置處理器就是來完成這項工作的。例如系統登入成功以後我們需要獲取SessionId,在後面的業務操作中伺服器會驗證這

Jmeter(九) - 入門精通 - JMeter監聽器 -上篇教程

1.簡介   監聽器用來監聽及顯示JMeter取樣器測試結果,能夠以樹、表及圖形形式顯示測試結果,也可以以檔案方式儲存測試結果,JMeter測試結果檔案格式多樣,比如XML格式、CSV格式。預設情況下,測試結果將被儲存為xml格式的檔案,檔案的字尾: ".jtl"。另外一種儲存格式為CSV檔案,該格式的好處就

Jmeter(二四) - 入門精通 - JMeter函式 - 中篇教程

1.簡介   在效能測試中為了真實模擬使用者請求,往往我們需要讓提交的表單內容每次都發生變化,這個過程叫做引數化。JMeter配置元件與前置處理器都能幫助我們進行引數化,但是都有侷限性,為了幫助我們能夠更好地進行引數化,JMeter提供了一組函式來幫助我們引數化生成需要的資料,這些函式可以函式助手面板來進行編

Jmeter(二八) - 入門精通 - Jmeter Http協議錄製指令碼工具-Badboy1教程

1.簡介    在使用jmeter自動錄製指令碼時會產生很多無用的請求,所以推薦使用badboy錄製指令碼之後儲存為jmx檔案,在jmeter中開啟使用。因此巨集哥在這裡介紹一下Badboy這款工具,本來打算不做介紹了,原因是因為這款工具已經不在維護和更新了,但是考慮到有些童鞋們不能手擼測試指令碼,

Jmeter(二九) - 入門精通 - Jmeter Http協議錄製指令碼工具-Badboy2教程

1.簡介   上一篇文中已經對Badboy做了一個基本上詳細完整的介紹,這一篇巨集哥帶你們實戰一下,這一篇主要講解和分享:錄製和執行指令碼、引數化 首先讓我們使用N模式錄製一個指令碼,測試用例編號為:1.1.1 成功的釋出僅有文字主題。  2錄製指令碼 1. 建立名為1 Log in的Suite,

Jmeter(三) - 入門精通 - Jmeter Http協議錄製指令碼工具-Badboy3教程

1.簡介   Badboy為方便自動化資料靈活性,以及指令碼的重用,減少工作量;為此提供了指令碼引數化的功能,這一篇文章巨集哥以度娘搜尋的關鍵字“北京-巨集哥”進行引數化為例,巨集哥帶領你們實戰一下如何使用Badboy的引數化功能。 2.指令碼錄製   經過上一篇文章的學習想必大家對B

Jmeter(三四) - 入門精通進階篇 - 引數化教程

1.簡介   前邊三十多篇文章主要介紹的是Jmeter的一些操作和基礎知識,算是一些初級入門的知識點,從這一篇開始我們就來學習Jmeter比較高階的操作和深入的知識點了。今天這一篇主要是講引數化,其實前邊或多或少的介紹過類似的知識點,知識沒有系統的講解,由於這個在實際工作中用到比較多而且經常用到,所以巨集哥今

Jmeter(三) - 入門精通 - 測試計劃Test Plan的元件教程

1.簡介 上一篇中巨集哥已經教你如何通過JMeter來建立一個測試計劃(Test Plan),那麼這一篇我們就將JMeter啟動起來,建立一個測試計劃(Test plan),然後巨集哥給大家介紹一下測試計劃(Test Plan)有哪些元件組成的。 2.測試計劃(Test Plan)要素 本節主要描述