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.1Runtime Controller

執行控制器用來控制其子元件的執行時長。市場單位是秒。

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

2、關鍵引數說明如下:

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

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

Runtime:預設為1,去掉1則預設為0,此時不執行其節點下的元件。 與執行緒組中的排程器的持續時間 效果一致。不填 或 0,不會執行樣例

4.1.1Runtime控制器控制其下取樣器執行2s

1、建立測試計劃,設定 Runtime 控制器的執行時間 為 2,執行緒組設定預設不變,如下圖所示:

Runtime 控制器設定

執行緒組設定

2、配置好以後,執行JMeter,然後檢視結果樹,如下圖所示:

4.1.2使用執行緒組中的排程器控制樣例執行3s

1、建立測試計劃,設定 Runtime 控制器的執行時間 為 2,執行緒組設定執行時間3,如下圖所示:

執行緒組設定

Runtime 控制器設定

2、配置好以後,執行JMeter,然後檢視結果樹,如下圖所示:

執行緒組設定3,Runtime控制器設定2,但是執行時間是2s。所以從上邊的執行時間得出結論:如果執行緒組中設定了持續時間,Runtime 控制器也設定了 執行時間,那麼會優先於執行緒組中的設定。

4.2Simple Controller

Simple Controller用來指定了一個執行單元,它不改變元件的執行順序。在它下邊還可以巢狀其他控制器。簡單控制器可以編輯只有名稱和註釋。就像他的名字一樣,簡單,可以理解為一個資料夾,就是分組用的,沒有其他特殊功能,但相比不新增簡單控制器,區別在於簡單控制器可以被模組控制器所引用。其作用就是分組,比如QQ好友列表,可分為家人、同學、等。一般是請求較多,需要分組時採用。

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

2、關鍵引數說明如下:

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

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

4.2.1簡單例項

1、建立測試計劃,執行緒組設定迴圈10,如下圖所示:

2、配置好以後,執行JMeter,然後檢視結果樹,如下圖所示:

4.3Throughput Controller

用來控制其下元件的執行次數,並無控制吞吐量的功能,想要控制吞吐量可以使用Constant Throughput Timer,後邊會講解到。吞吐量控制器有兩種模式:Total Executions:設定執行次數與Percent Executions:設定執行比例(1~100之間)。

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

2、關鍵引數說明如下:

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

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

Total Executions:執行百分比(1-100);

percent Executions:執行數量;

Throughput:根據上邊選擇的方式填寫,百分比為0~100;

Per User:執行緒數,當選Total Executions時,是執行緒數;當選percent Executions時,是執行緒數*迴圈次數。
4.3.1不勾選Per User

1、執行緒組中設定 執行緒數量 2,迴圈次數 10,吞吐量控制器 設定 Total Executions,吞吐量設定為 2,其下新增一個取樣器,如下圖所示:

2、配置好以後,執行JMeter,然後檢視結果樹(執行了2次),如下圖所示:

3、現在將 吞吐量控制器 設定為百分比的控制方式,吞吐量設定為:50%,如下圖所示:

4、配置好以後,點選“儲存”執行JMeter,然後檢視結果樹(執行了10次,計算方式:10=吞吐量50% * 迴圈次數10 * 執行緒數 2),如下圖所示:

4.3.2勾選Per User

1、執行緒組中設定 執行緒數量 2,迴圈次數 10,吞吐量控制器 設定 Total Executions,吞吐量設定為 2,其下新增一個取樣器,勾選Per User,如下圖所示:

執行緒組設定

吞吐量控制器

2、配置好以後,點選“儲存”,執行JMeter,然後檢視結果樹(總共執行了4次,其中吞吐量設定為2,執行2次,執行緒設定為2,執行2次,總共4次),函式 __threadNum 只是簡單地返回當前執行緒的編號,如下圖所示:

3、現在將 吞吐量控制器 設定為百分比的控制方式,吞吐量設定為:50,如下圖所示:

4、配置好以後,點選“儲存”執行JMeter,然後檢視結果樹(執行了10次,計算方式:10=吞吐量50% * 迴圈次數10 * 執行緒數 2),如下圖所示:

綜上所述:

勾選Per User:

1.執行緒數*迴圈次數>=執行緒數*吞吐量時,Total Executions模式的執行次數=執行緒數*吞吐量。

2.執行緒數*迴圈次數<執行緒數*吞吐量時,Total Executions模式的執行次數=當執行緒數*迴圈次數。

不勾選Per User:

1.執行緒數*迴圈次數<=吞吐量時,Total Executions模式的執行次數=執行緒數*迴圈次數。

2.執行緒數*迴圈次數>吞吐量時,Total Executions模式的執行次數=吞吐量。

l Percent Executions:設定執行比例(1~100之間),單位為%

不管Per User是否勾選,按Percent Executions模式的執行次數都不受Per User影響,Percent Executions模式的執行次數=執行緒數*迴圈次數*吞吐量%。(迴圈次數=執行緒組迴圈次數*迴圈控制器迴圈次數)

l Per User:勾選該項的話則按虛擬使用者數(執行緒數)來計算執行次數,不勾選則按所有虛擬使用者數來計算執行次數

測試計劃
序號 執行緒數 迴圈次數 模式 Throughput Per User 執行次數
1 2 10 Percent 50 Y 10
2 2 10 Percent 50 N 10
3 2 10 Total 7 Y 14
4 2 10 Total 7 N 7
5 2 2 Total 7 Y 4
6 2 2 Total 7 N 4

下面說明一下這6個場景:
(1)序號1和2場景,Per User 對總執行次數沒有影響。
(2)序號3場景,Per User勾選,每個虛擬使用者(執行緒)執行7次,共執行14次。
(3)序號4場景,Per User不勾選,則所有虛擬使用者執行7次。
(4)序號5場景,Per User勾選,每個虛擬使用者(執行緒)執行7次,共執行14次,由於Thread Group計劃迴圈次數是4(2執行緒*2迴圈)次,所以最多隻能執行4次。
(5)序號6場景,Per User不勾選,所有虛擬使用者執行7次,由於Thread Group計劃迴圈次數是4(2執行緒*2迴圈)次,所以最多隻能執行4次。

4.4Module Controller

模組控制器可以快速的切換指令碼,不用來回的新建,方便指令碼除錯。 

可以理解為引用、呼叫的意思,執行內容為Module To Run種所選的內容,引用範圍為當前測試計劃內的測試片段、邏輯控制器<模組控制器除外>
被引用的邏輯控制器、測試片段可以為禁用狀態,被引用後仍然會被執行。
可以將模組控制器與包括控制器一起學習比較,模組控制器是從內部檔案中引用,引用上相對比較靈活,可以只引用部分測試片段或模組內容,包括控制器是從外部檔案引用,只能引用整個測試片段的內容。
注意:被應用的模組位置不可隨意變更,變更後會執行時出現提示引用失敗
找到目標元素:快速查詢與跳轉的作用,點選後會立即跳轉到所選的邏輯控制器的內容詳情

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

2、關鍵引數說明如下:

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

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

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

4.4.1例項

1、建立測試計劃,新增兩個測試片段,並且在每個測試片段下新增一個取樣器,然後,新增執行緒組,再新增模組控制器,最後新增檢視結果樹,如下圖所示:

2、配置模組控制器,選擇第一個測試片段,如下圖所示:

3、配置好以後,點選“儲存”執行JMeter,然後檢視結果樹(執行了第1個測試片段的取樣器),如下圖所示:

4、配置模組控制器,選擇第二個測試片段,如下圖所示: 

5、配置好以後,點選“儲存”執行JMeter,然後檢視結果樹(執行了第2個測試片段的取樣器),如下圖所示:

4.5Switch Controller

Switch Controller:開關控制器,通過其下樣例順序數值或名稱 控制執行某一個樣例。

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

2、關鍵引數說明如下:

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

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

Switch Value:指定請求的索引或者名稱,索引從0開始,如果沒有賦值,或者索引超過請求個數的話就執行第0個請求。可以是數字,也可以是字元,為字元時匹配取樣器名稱,如果匹配不上就會預設並找取樣器名稱為default的取樣器,如果沒有則不執行。

4.5.1數值

數值:表示將執行其下第 數值+1個取樣器,例如:填1,將執行第2個取樣器;填0或者不填,將執行第1個取樣器;數值超出其下取樣器數目時,執行第1個取樣器。

1、建立一個測試計劃,設定執行緒組和Switch控制器,如下圖所示:

執行緒組

Switch控制器

2、配置好以後,點選“儲存”執行JMeter,然後檢視結果樹(執行了第3<數值+1>個取樣器),如下圖所示:

3、修改Switch控制器的數值為0或者不填,如下圖所示:

4、配置好以後,點選“儲存”執行JMeter,然後檢視結果樹(執行了第1<數值為0或者不填,執行第1個取樣器>個取樣器),如下圖所示:

4.5.2字元

1、建立一個測試計劃,設定執行緒組和Switch控制器(直接使用取樣器名字),如下圖所示:

執行緒組

Switch控制器

2、配置好以後,點選“儲存”執行JMeter,然後檢視結果樹(執行了使用名字的取樣器),如下圖所示:

5.小結

好了,今天關於邏輯控制器的上篇就講解到這裡,這一篇主要介紹了 Runtime Controller 、 Simple Controller 、Throughput Controller、Module Controller 和  Switch 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進

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

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

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

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

Jmeter(十三) - 入門精通 - JMeter定時器 - 上教程

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

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測試結果檔案格式多樣,比如XML格式、CSV格式。預設情況下,測試結果將被儲存為xml格式的檔案,檔案的字尾: ".jtl"。另外一種儲存格式為CSV檔案,該格式的好處就

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

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

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定時器 - 下篇教程

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

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

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

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

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

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

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

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

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

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

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

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

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