性能測試-Jmeter正則表達式提取

jmeter中,接口自動化的關鍵在於參數關聯。比如需要登錄的接口,如何調用登錄口令?一個增刪改查的閉環,如何將接口參數上下傳遞?在jmeter中,可以利用正則表達式提取器來幫助我們完成這一動作。

1、正則表達式提取器

右鍵添加後置處理器→正則表達式提取器,正則表達式提取器界面如下:

說明:

後置處理器:在請求結束或者返迴響應結果時發揮作用

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

APPly to:作用範圍(返回內容的斷言範圍)

>Main sample and sub-samples:作用於父節點的取樣器及對應子節點的取樣器

>Main sample only:僅作用於父節點的取樣器

>Sub-samples only:僅作用於子節點的取樣器

>JMeter Variable:作用於jmeter變量(輸入框內可輸入jmeter的變量名稱)

要檢查的響應字段:需要檢查的響應報文的範圍

>主體:響應報文的主體

>Body(unescaped):主體,響應的主體內容且替換了所有的html轉義符,注意html轉義符處理時不考慮上下文,因此可能有不正確的轉換,不太建議使用

> Body as a Document:從不同類型的文件中提取文本,注意這個選項比較影響性能

> Response Headers:響應信息頭

>Request Headers:請求信息頭

> URL:統一資源定位符,即Internet上用來描述信息資源的字符串

>Response Code:響應狀態碼,比如200、404等

>Response Message:響應信息

2、正則表達式引用

引用名稱:定義一個變量,供後續請求引用

一般(.+?)和(.*?)能夠滿足我們80%的使用場景。所以,一般的正則表達式都可以寫成下面這2種

左邊界(.+?)右邊界

左邊界(.*?)右邊界

left對應匹配目標的起始字符

right對應匹配目標的結束字符

正則表達式:利用正則將需要的數據提取出來

() 括起來的部分就是需要提取的,對於你要提的內容需要用小括號括起來

. 點號表示匹配任何字符串

+ 一次或多次

? 在找到第一個匹配項後停止

模板:用$$引用起來,如果在正則表達式中有多個正則表達式(多個括號括起來),則可以是$N$等,表示提取第N個括號裏面的值

匹配數字 -1:表示取所有返回值,此時提取結果是一個數組,其餘正整數代表第幾個匹配的內容提取出來。如果匹配數字選擇的是-1,後續還可以通過${XXX_1}的方式來取第1個匹配的內容,${XXX_2}來取第2個匹配的內容。

匹配數字1:表示取第一個返回值

匹配數字0:表示隨機取一個返回值

缺省值:正則匹配失敗時取的值

3、示例

a.提取一個Name

b.提取全部Name

c.表達式同時提取Name和population,並傳出兩個參數

d.條件判斷取值