1. 程式人生 > >Jmeter(十八) - 從入門到精通 - JMeter後置處理器 -下篇(詳解教程)

Jmeter(十八) - 從入門到精通 - JMeter後置處理器 -下篇(詳解教程)

1.簡介

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

2.預覽後置處理器

  首先我們來看一下JMeter的後置處理器,路徑:執行緒組(使用者)->新增->後置處理器();我們可以清楚地看到JMeter5中共有11個後置處理器(不包括jp@gc開頭的後置處理器,這個是巨集哥安裝的外掛),如下圖所示:

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

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

3.常用後置處理器詳解

這一小節,巨集哥就由上而下地詳細地講解一下常用的後置處理器。

3.1JSR223 後置處理程式

JSR223後置處理程式,用法和JSR223 PreProcessor類似,可以參考巨集哥的這一篇文章:Jmeter(十六) - 從入門到精通 - JMeter前置處理器(詳解教程)

1、我們先來看看這個JSR223 後置處理程式長得是啥樣子,路徑:執行緒組 > 新增 > 後置處理器 > JSR223 後置處理程式,如下圖所示: 

2、關鍵引數說明如下:

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

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

parameter:要傳遞到指令碼檔案或指令碼的引數列表;

file name:用於執行的指令碼檔案,若沒有指令碼檔案,將執行指令碼;

Script:傳遞給JSR223執行的指令碼;如果提供了指令碼檔案,則執行指令碼檔案,否則執行指令碼。

3.2除錯後置處理程式

除錯後置處理程式,使用正則表示式為從另一個HTTP請求中提取的HTTP引數指定動態值,配合regular expression extractor使用。暫時沒找到好的例子,後面想到補充。。

1、我們先來看看這個除錯後置處理程式長得是啥樣子,路徑:執行緒組 > 新增 > 後置處理器 > 除錯後置處理程式,如下圖所示: 

2、關鍵引數說明如下:

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

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

Regular Expression Reference Name:呼叫的正則表示式提取器中的引用名稱;

Parameter names regexp group number:用於提取引數名稱的正則表示式的組編號;

Parameter values regex group number:用於提取引數值的正則表示式的組編號。

3.3JDBC 後置處理程式

JDBC 後置處理程式,實際上JIBC PostProcessor就是一個JDBC Request,它與JDBC Request功能相同,都可以執行SQL語句。在測試的過程中可能會遇到這樣的測試場景:我們用JDBC Request修改了一些資料,當測試完成後,我們希望還原到原先狀態,此時我們可以用JDBC PostProcessor來完成,當然用JDBC Request也可以完成。具體的JDBC PostProcessor的使用參考巨集哥關於JDBC Request的這篇文章:Jmeter(七) - 從入門到精通 - 建立資料庫測試計劃實戰<MySQL資料庫>(詳解教程)。

1、我們先來看看這個JDBC 後置處理程式長得是啥樣子,路徑:執行緒組 > 新增 > 後置處理器 > JDBC 後置處理程式,如下圖所示: 

3.4結果狀態處理器

結果狀態處理器,實際上在測試的時候我們也經常會遇到這樣的測試場景:在一些測試用例失敗之後我們需要進行一些操作,例如停止測試,這裡可以使用結果狀態處理器。

1、我們先來看看這個結果狀態處理器長得是啥樣子,路徑:執行緒組 > 新增 > 後置處理器 > 結果狀態處理器,如下圖所示: 

2、關鍵引數說明如下:

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

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

Language:語言,開發指令碼選擇的語言,使用的JSR223語言,可根據需要選擇;

Parameters:引數,傳遞給指令碼的引數;

File Name:檔名,本地開發的指令碼檔案(會覆蓋在JMeter裡編寫的指令碼);

Script compilation caching:儲存編譯的指令碼,預設勾選;

Script:要執行指令碼。編寫指令碼的區域。

3.5XPath提取器

 Xpath提取器,如果請求返回的訊息為xml或html格式的,可以用XPath提取器來提取需要的資料。

 1、我們先來看看這個 Xpath提取器長得是啥樣子,路徑:執行緒組 > 新增 > 後置處理器 > Xpath提取器,如下圖所示: 

2、關鍵引數說明如下:

APPly to:作用範圍(返回內容的斷言範圍)
         Main sample and sub-samples:作用於父節點的取樣器及對應子節點的取樣器
         Main sample only:僅作用於父節點的取樣器
         Sub-samples only:僅作用於子節點的取樣器
         JMeter Variable:作用於jmeter變數(輸入框內可輸入jmeter的變數名稱)

XML Parsing Options:要解析的XML引數
         UseTidy:當需要處理的頁面是HTML格式時,必須選中該選項;如果是XML或XHTML格式(例如RSS返回),則取消選中;
         Quiet表示只顯示需要的HTML頁面,
    Report errors表示顯示響應報錯,
    Show warnings表示顯示警告;
         Use Namespaces:如果啟用該選項,後續的XML解析器將使用名稱空間來分辨;
         Validate XML:根據頁面元素模式進行檢查解析;
         Ignore Whitespace:忽略空白內容;
         Fetch external DTDs:如果選中該項,外部將使用DTD規則來獲取頁面內容;

Return entire XPath fragment of  text content:返回文字內容的整個XPath片段;

Reference Name:存放提取出的值的引數。

XPath Query:用於提取值的XPath表示式。語法參考:XPath

匹配數字:取第幾個匹配結果,0隨機,-1全部,1代表第一個,2代表第二個,....以此類推

Default Value:引數的預設值。

3.5.1例項

1、新建測試計劃,執行緒組下新增1個取樣器 天氣預報,如下圖所示:

2、天氣預報返回HTML,然後再新增xpath提取器,如下圖所示:

舉例://div[@class='w_city city_guonei']//a/@href

選取div下帶有class屬性為w_city city_guonei的href屬性節點。
註釋://div選取了div節點的所有子節點
@選取屬性
/@href 從根節點選取所有的href屬性

Xpath提取器設定

3、繼續新增GetWeatherInfo取樣器,獲取xpath提取到的引數,如下圖所示:

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

3.6XPath2 Extractor

Xpath2提取器,雖然JMeter官方文件說可以使用XPath2查詢語言從結構化響應(XML或(X)HTML)中提取值,但目前測試只支援從XML響應中提取值;從HTML中提取會報錯,這個可以通過檢視結果樹中選擇XPath2 Tester來驗證。

 1、我們先來看看這個 Xpath2提取器長得是啥樣子,路徑:執行緒組 > 新增 > 前置處理器 > Xpath2提取器,如下圖所示: 

2、關鍵引數說明如下:

APPly to:作用範圍(返回內容的斷言範圍)
         Main sample and sub-samples:作用於父節點的取樣器及對應子節點的取樣器
         Main sample only:僅作用於父節點的取樣器
         Sub-samples only:僅作用於子節點的取樣器
         JMeter Variable:作用於jmeter變數(輸入框內可輸入jmeter的變數名稱)

Return entire XPath fragment of  text content:返回文字內容的整個XPath片段;

Name of created variable:存放提取出的值的引數。

XPath Query:用於提取值的XPath表示式。

Match No 匹配數字:取第幾個匹配結果,0隨機,-1全部,1代表第一個,2代表第二個,....以此類推

Default Value:引數的預設值。

Namespaces aliases list:命名空間別名列表。就是這個功能,能讓使用名稱空間比使用舊的XPath提取器更方便。關於名稱空間含義,可以看官方文件:XML 名稱空間,但是寫的不夠詳細,詳細的參考這裡:XML 名稱空間(XML Namespaces)介紹以及節點讀取方法。由於XPath2對於表示式的要求比較嚴格,對於帶名稱空間的XML(包括預設的名稱空間),使用不帶名稱空間字首的表示式是查詢不到結果的。

3.7BeanShell 後置處理程式

 BeanShell 後置處理程式,如果請求返回的訊息為xml或html格式的,可以用XPath2提取器來提取需要的資料。這個估計是JMeter5.0新加的吧,具體用法和Xpath提取器的應該差不多的,可以參考上邊Xpath提取器的用法。

 1、我們先來看看這個  BeanShell 後置處理程式長得是啥樣子,路徑:執行緒組 > 新增 > 後置處理器 > BeanShell 後置處理程式,如下圖所示: 

2、關鍵引數說明如下:

Reset bsh.Interpreter before each call: 每次迭代是否重置直譯器

Reset Interpreter :false

Parameters to be passed to BeanShell(=>String Parameters and String []bsh.args) 引數傳遞,字串或者陣列

Parameters:

Script file(overrides script): 指令碼檔案

File Name:

Script(variables:ctx vars props prev data log): 指令碼編輯()

3.7.1例項

在這裡巨集哥就列舉一個簡單的例子,響應結果中有中文亂碼,使用BeanShell 後置處理程式來處理中文亂碼。

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

2、然後再新增BeanShell 後置處理程式,設定指令碼:prev.setDataEncoding("UTF-8"); ,如下圖所示:

3、配置好以後,點選“儲存”,執行JMeter,禁用BeanShell 後置處理程式,查看錶格結果(中文亂碼),如下圖所示:

(1)禁用BeanShell 後置處理程式,查看錶格結果(有中文亂碼)

(2)啟用BeanShell 後置處理程式,查看錶格結果(無中文亂碼)

4.小結

 好了,今天到這裡所有的JMeter後置處理器就全部介紹分享完了,感謝您的耐心閱讀!!!

 

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

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

 

相關推薦

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Jmeter() - 入門精通 - JMeter配置元件教程

1.簡介 JMeter配置元件可以用來初始化預設值和變數,讀取檔案資料,設定公共請求引數,賦予變數值等,以便後續取樣器使用。將在其作用域的初始化階段處理。配置元件(Config Element)提供對靜態資料配置的支援,可以為取樣器設定預設值和變數。 首先我們來看一下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匯入自定義的Jar包教程

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

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

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

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

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

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

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

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

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

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引數化。在實際測試場景中,我們往往還有這樣的需求,登入後伺服器響應的token作為下次請求的引數,這就是所謂的引數關聯。   當請求之間有依賴關係,比如一個請求的入參是另一個請求返回的資料

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

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