1. 程式人生 > >Jmeter(十四) - 從入門到精通 - JMeter定時器 - 下篇(詳解教程)

Jmeter(十四) - 從入門到精通 - JMeter定時器 - 下篇(詳解教程)

1.簡介

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

  JMeter中的定時器一般被我們用來設定延遲與同步。定時器的執行優先順序高於Sampler(取樣器),在同一作用域(例如控制器下)下有多個定時器存在時,每一個定時器都會執行,如果想讓某一定時器僅對某一Sampler有效,則可以把定時器加在此Sampler節點下。

2.預覽定時器

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

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

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

3.常用定時器詳解

這一小節,巨集哥就由上而下地詳細地講解一下常用的定時器。

3.1Gaussian Random Timer

高斯定時器,高斯定時器,生成一個呈高斯分佈的時間間隔。

如需要每個執行緒的延遲時間是符合標準正態分佈的隨機時間停頓,那麼使用這個定時器,總延遲 = 高斯分佈值(平均0.0和標準偏差1.0)* 指定的偏差值+固定延遲偏移(計算參考:Math.abs((this.random.nextGaussian() * 偏差值) + 固定延遲偏移))。
另一種解釋方法,在高斯隨機定時器中, 隨機時間在固定延遲偏移附近,概率符合高斯曲線分佈。

總延遲時間 = 高斯分佈值(平均0.0和標準差1.0)* 指定的偏差值 + 固定延遲偏移

1、我們先來看看這個Gaussian Random Timer長得是啥樣子,路徑:執行緒組 > 新增 > 定時器 > 高斯隨機定時器,如下圖所示: 

2、關鍵引數說明如下:

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

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

Deviation:忽略子控制器,即子控制器失效,由交替控制器接管。

Constant Delay Offset:

3.1.1例項

1、新建測試計劃,執行緒組下新增2個取樣器 訪問部落格園首頁、訪問北京巨集哥的園子,如下圖所示:

2、然後再新增高斯隨機定時器,設定高斯隨機定時器的偏差為1000ms,固定延遲偏移為3000,如下圖所示:

3、配置好以後,點選“儲存”,執行JMeter,查看錶格結果(取樣器訪問部落格園首頁和訪問度娘間隔3s),如下圖所示:

3.2JSR223 Timer

JSR定時器,在jemter最新的版本中,新增了這個定時器,可以這麼理解,這個定時器相當於BeanShell定時器的“父集”,它可以使用java、JavaScript、beanshell等多種語言去實現你希望完成的事情。

1、我們先來看看這個JSR223 Timer長得是啥樣子,路徑:執行緒組 > 新增 > 定時器 > JSR233定時器,如下圖所示: 

2、關鍵引數說明如下:

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

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

Thread Delay:忽略子控制器,即子控制器失效,由交替控制器接管。

3.2.1例項

1、新建測試計劃,執行緒組下新增2個取樣器 訪問部落格園首頁、訪問度娘,如下圖所示:

2、然後再新增JSR223 定時器,編寫指令碼設定延遲時間5s,如下圖所示:

3、配置好以後,點選“儲存”,執行JMeter,查看錶格結果(取樣器訪問部落格園首頁和訪問度娘間隔5s),如下圖所示:

3.3Poisson Random Timer

泊松隨機定時器,這個定時器在每個執行緒請求之前按隨機的時間停頓,總的延遲就是泊松分佈值和偏移值之和。這個定時器在每個執行緒請求之前按隨機的時間停頓,總的延遲就是泊松分佈值和偏移值之和。

泊松分佈:概率學中離散機率分佈

1、我們先來看看這個Poisson Random Timer長得是啥樣子,路徑:執行緒組 > 新增 > 定時器 > 泊松隨機定時器,如下圖所示: 

2、關鍵引數說明如下:

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

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

Lambda(in milliseconds):蘭布達值;

Constant Delay Offset(in milliseconds):暫停的毫秒數減去隨機延遲的毫秒數。

3.3.1例項

1、新建測試計劃,執行緒組下新增2個取樣器 訪問部落格園首頁、訪問度娘,如下圖所示:

2、然後再新增泊松定時器,設定暫停時間會分佈在100到400毫秒之間,如下圖所示:

3、配置好以後,點選“儲存”,執行JMeter,查看錶格結果(取樣器訪問部落格園首頁和訪問度娘間隔在100到400毫秒之間),如下圖所示:

3.4Synchronizing Timer

同步計時器,用來模擬多使用者併發,或者說更嚴格的併發場景,比如秒殺活動,就要用這個玩意了。

作用:也是用來設定集合點,阻塞執行緒,同步虛擬使用者,直到指定的執行緒數量到達後,恰好在同一時刻執行任務,再一起釋放,可以瞬間產生很大的壓力。

注意:敲黑板,敲腦袋!!!

一般情況,併發使用者數多少,同步定時器就寫多少。(多少併發就要等多少個人到齊一起釋放)

1、我們先來看看這個Synchronizing Timer長得是啥樣子,路徑:執行緒組 > 新增 > 定時器 > 同步定時器,如下圖所示: 

2、關鍵引數說明如下:

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

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

Number of Simulated Users to Group by:集合點個數 (執行的執行緒數),如果設定為0,等於設定為執行緒租中的執行緒數量。

Timeout in milliseconds:指定執行緒數多少秒沒集合到算超時(以毫秒為單位)。如果設定為0,該定時器將會等待執行緒數達到了"Number of Simultaneous Users toGroup"中設定的值才釋放,不夠的話就死等。如果大於0,那麼如果超過Timeout inmilliseconds中設定的最大等待時間後還沒達到"Number of Simultaneous Users toGroup"中設定的值,Timer將不再等待,釋放已到達的執行緒。預設為0

注意:敲黑板,敲腦袋!!!

(1)上面兩個引數如果都設定了值,則在實際中是哪個條件先達到,定時器先執行哪個,如第一個引數釋放執行緒數量先達到,則不會管超時時間的值,timer會釋放;如果第二個引數超時時間先達到,則不會再等執行緒數量,按照目前超時的時間點集合的執行緒數,timer釋放。

(2)同步定時器(Synchronizing Timer)的超時時間設定要求: 超時時間 > 請求集合數量 * 1000 / (執行緒數 / 執行緒載入時間)

執行緒組使用者數100,新增同步定時器

執行緒數(100) 定時器等待執行緒數(視情況而定) 超時設定(預設為0,單位毫秒) 設定效果(指令碼執行達到的效果)
100 100 0 使用者等待達到100個使用者,同時併發請求
100 90 100

1、剛好超時100ms,且等到90個使用者併發請求;

2、等到90個使用者,未超時,繼續等到結束,再併發,這時使用者數將大於90;

3、等到小於90和使用者,又超過了設定100ms,那麼以等到的使用者併發請求,可能小於90;

100 110 0 使用者無法達到110個使用者,執行緒將一直等待,不會停止;
100 100 100

1、剛好超時100ms,等到100個使用者併發請求;

2、超時100ms後,定時器以等到的最大使用者數併發請求;

3、如果超時100ms,使用者數沒有到達100,將以等到的使用者數併發請求,這是使用者數可能小於100;

100 0 0 定時器設定的使用者數等效於執行緒的使用者數,超時預設設定為0,使用者同時併發請求
3.4.1例項

a. 若某個請求需要併發測試,則可在該請求下新增同步定時器。

1、新建測試計劃,執行緒組(設定執行緒組10個,載入時間1s)下新增2個取樣器 訪問部落格園首頁(已禁用)、訪問度娘,如下圖所示:

2、然後再新增同步定時器,設定模擬使用者組數量:10,超時時間:5000,如下圖所示:

3、配置好以後,點選“儲存”,執行JMeter,查看錶格結果(幾乎是在同一時間,10個使用者同時併發訪問度娘),如下圖所示:

b. 若某幾個請求需要同時進行併發,則可在請求的同一級新增同步定時器。

1、新建測試計劃,執行緒組下新增2個取樣器  訪問部落格園首頁、訪問度娘,如下圖所示:

2、然後再新增同步定時器,設定模擬使用者組數量:10,超時時間:5000,如下圖所示:

3、配置好以後,點選“儲存”,執行JMeter,查看錶格結果(取樣器訪問部落格園首頁和訪問度娘間隔3s),如下圖所示:

c. 若某幾個執行緒需要同步併發,則可在測試計劃下(執行緒組同一級)新增同步定時器(適用於多業務混合併發測試)。

1、新建測試計劃,新增同步定時器,設定模擬使用者組數量:10,超時時間:5000,如下圖所示:

2、然後再新增兩個執行緒組,一個執行緒組下新增2個取樣器  訪問部落格園首頁、訪問度娘,另一個執行緒組下新增1個取樣器 訪問度娘1,如下圖所示:

3、配置好以後,點選“儲存”,執行JMeter,查看錶格結果,如下圖所示:

3.5BeanShell Timer(重要-常用)

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

1、我們先來看看這個 Bean Shell定時器長得是啥樣子,路徑:執行緒組 > 新增 > 定時器 > Bean Shell定時器,如下圖所示: 

2、關鍵引數說明如下:

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

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

Reset Interpreter:每次迭代是否重置解析器,預設為false;在長時間執行的指令碼中建議設定為true。

Parameters:BeanShell指令碼的入參。入參可以是單個變數;也可以是陣列,若是字串陣列,兩個元素之間用空格隔開;也可以是常量。

File Name:BeanShell指令碼可以從指令碼檔案中讀取。

Script:在Script區直接寫BeanShell指令碼。

3.5.1例項

1、新建測試計劃,執行緒組下新增2個取樣器 訪問部落格園首頁、訪問度娘,如下圖所示:

2、然後再新增Bean Shell定時器,指令碼程式碼設定延遲時間5s,如下圖所示:

3、配置好以後,點選“儲存”,執行JMeter,檢視結果樹(取樣器訪問部落格園首頁和訪問度娘間隔5s),如下圖所示:

4.小結

   好了,今天到這裡JMeter的所有定時器就已經介紹完了,感謝你耐心的閱讀和學習。

 

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

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

 

相關推薦

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

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

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

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

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配置元件與前置處理器都能幫助我們進行引數化,但是都有侷限性,為了幫助我們能夠更好地進行引數化,JMeter提供了一組函式來幫助我們引數化生成需要的資料,這些函式可以函式助手面板來進行編

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

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

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匯入自定義的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(三) - 入門精通 - 測試計劃Test Plan的元件教程

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