Jmeter腳本調試之關聯----(正則表達式)


 

腳本調試 

 關聯,在腳本中,是必應用到的一個設置方法,將腳本中,每次都會動態變化的特殊值進行關聯。一個能正確執行的腳本,都需要進行關聯(LR、jmeter)。

 

Jmeter關聯:

         在腳本回放過程中,客戶端發出請求,通過Jmeter中的正則表達式提取器所定義的左右邊界值(也就是關聯規則),在服務器所響應的內容中查找,得到相應的值,以變量的形式替換錄制時的靜態值,從而向服務器發出正確的請求,這種動態獲得服務器響應內容的方法稱作關聯。通俗點說,就是把腳本中某些寫死的(hard-coded)數據,轉變成擷取自服務器所送的、動態的、每次都不一樣的數據。

 

關聯分兩種,提取單個字符串和多個字符串。

先添加正則表達式提取器,如下所示:

 

 

 

正則表達式提取器:

允許用戶從服務器的響應中通過使用perl的正則表達式提取值。該元素會作用在指定范圍取樣器,用正則表達式提取所需值,生成模板字符串,並將結果存儲到給定的變量名中。

 

提取單個字符串

假如想匹配Web頁面的如下部分: 

name="csrf_token" value="a8443cafdd8ea7f9"/>

 

 

 提取該值,正則表達式寫為:name="csrf_token" value="(.+?)"/>。

 

 

修改腳本如下:

 

 

可以添加一個取樣器 來查看所得的所有值

 

 

 運行腳本,可以查看到如下結果:

 

token=6a353e4b0c9fd4e6
token_g=1
token_g0=name="csrf_token" value="6a353e4b0c9fd4e6"/>
token_g1=6a353e4b0c9fd4e6

 

 

 

 

 提取多個字符串

假如想匹配Web頁面的如下部分:

name="csrf_token" value="a8443cafdd8ea7f9"/>並提取csrf_token和a8443cafdd8ea7f9。

添加正則提取器,寫入正則表達式,如下所示,正則表達式為:name="(.+?)" value="(.+?)"/>。

 

我們先運行一遍  

我們得到了幾個值:

token=csrf_token41bbd186910d7c23
token_g=2
token_g0=name="csrf_token" value="41bbd186910d7c23"/>
token_g1=csrf_token
token_g2=41bbd186910d7c23

 

 

這就是我們要找的值 

上面報錯沒關系  因為我們還沒有修改那個變量名

 

token_g1 _g2 是系統自己幫你創建的名字  你可以直接使用

token_g1=csrf_token
token_g2=41bbd186910d7c23

 

 

 

 再運行一次   就可以了 

 

 

 

正則表達式提取器詳解:

先看一張圖,就是正則提取器的面板,如下所示:

 

 

 

名稱: 隨意設置, 最好具有業務上的意義, 方便區分

注釋: 隨意設置, 一般不填寫

Apply to: 應用范圍, 包含4個選項。

  Main sample and sub-samples: 匹配范圍包括當前父取樣器並覆蓋子取樣器。

  Main sample only: 匹配范圍是當前父取樣器(一般默認選擇這個) 。

  Sub-samples only: 僅匹配子取樣器。

  Jmeter Variable: 支持對Jmeter變量值進行匹配。

要檢查的響應字段: 針對響應數據的不同部分進行匹配, 共七個選項。

  主體: 響應數據的主體部分, 排除Header部分; Http協議返回請求的主體部分就是

  Body:(一般默認選擇這個)

  Body(unescaped) : 針對替換了轉義碼的Body部分。

  Body as a Document: 返回內容作為一個文檔進行匹配。

  信息頭: 只匹配信息頭部分的內容。

  URL: 只匹配URL鏈接。

  響應代碼: 匹配響應代碼, 比如狀態碼200代表成功等。

  響應信息: 匹配響應信息, 比如”成功” “OK”等。

  引用名稱: 即下一個請求要引用的參數名稱, 如填寫token, 則可用${token}引用它。

正則表達式: 正則表達式提取器根據該處的設置進行信息匹配

模板: 用$$引用起來, 如果在正則表達式中有多個正則表達式, 則可以是$1$, $2$等等, 表示解析到的第幾個值給token, $1$表示第一個模板, $0$表示全文匹配。

匹配數字: 用正則表達式匹配的時候, 可能出現多個值的情況, 為正數用來確定取一組值中的第幾個, 為0表示隨機取匹配值, 負數取所有值。

默認值: 如果沒有匹配到可以指定一個默認值。

 

 

正則表達式匹配注意事項:

  如果不能匹配,那么顯示變量名稱,如  ${token}

正則的操作符與含義如下所示:

 

 

 

本文僅代表作者觀點,系作者@請多指教 發表。
歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
文章出處: http://www.cnblogs.com/yushengaqingzhijiao/p/7652639.html

 


免責聲明!

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



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