為什么要進行關聯:當我們在對系統進行測試時,本次操作或下一次操作對服務器提交的請求,參數中有部分參數需要服務器返回動態變化的值, 如cookie或token或userid等數據.
關聯數據的規則: 首先這個值是動態變化的, 其次是由服務器動態返回的, 最后會對請求結果產生影響.
在Jmeter中關聯數據的常用的處理方式有以下幾種方法:
1、正則表達式提取器
2、Boundary Extractor邊界提取器
3、Json Extractor提取器
一、正則表達式提取器
在要關聯的請求下右鍵點擊添加-后置處理器-正則表達式提取器
進入響應結果界面, 將格式選擇為RegExp Tester, 然后通過正則表達式獲取數據.
e.g. 通用匹配規則: 將需要關聯的數據 替換為(.*?)
在正則表達式提取器中進行設置:
1. 引用名稱, 即后續使用時進行調用的變量名稱 通過${變量名}即可使用獲取到的變量數據.
2. 模板$1$意思是,如果有多個動態變化的值,$1$代表獲取匹配到的第一個數據,如果有多個動態變化的值需要關聯那么直接多添加幾個正則表達式提取器就可以了,然后在要關聯的值里填入 ${變量名 }
說明:
后置處理器:在請求結束或者返回響應結果時發揮作用
正則表達式提取器:允許用戶從服務器的響應中通過使用獲取userid的正則表達式提取值。該元素會作用在指定范圍取樣器,用正則表達式提取所需值,生成模板字符串,并將結果存儲到給定的變量名中。
模板:代表從正則表達式結果引用的樣式,其實結果是一組,而不是一個。$0$代表這一組結果的全部,$1$代表這一組結果的第1個,以此類推;$1$$2$代表該正則表達式一組結果中的第1個和第2個,兩個結果在一起中間沒有間隔;$3$,$4$代表該正則表達式一組結果中的第3個和第4個,兩個結果間有一個逗號相連。
匹配數字:0代表正則表達式結果組中隨機,1代表全部。
缺省值:當引用不對時顯示傳遞的信息,一般寫一個ERROR。
二、Boundary Extractor
在你要關聯請求右鍵點擊添加—后置處理器-邊界提取器
進入響應結果界面, 將格式選擇為邊界提取器測試, 然后需要提取數據的左邊界與右邊界,點擊測試獲取數據.
進入都邊界提取器界面將確定的左邊界與右邊界, 引用變量名稱進行輸入.
使用獲取到的關聯數據時,通過${變量名} 進行引用即可.
三、Json Extractor提取器:
當傳數據返回的是一個Json格式,如{"name":"sojson","url":"www.qftestjson.com"}這樣的格式又或者是如下
{
'status': 1.
'msg': '登陸成功',
'result': {
'user_id': 8.
'email': '123456@sina.com',
'password': '519475228fe35ad067744465c42a19b2',
'level_name': '倔強青銅'
}
}
在你要關聯請求右鍵點擊添加—后置處理器—JSON Extractor
進入響應結果界面, 將格式選擇為JSON Path Testter, 然后通過JSON Path語法獲取數據.
調試通過后, 進入JSON Extractor頁面, 將調試成功的JSON Path語法填寫在JSON Path exressions中即可. Variable Names為引用變量名稱, 后續通過${id}引用變量名即可使用關聯數據.
以上三種方式, 在實際使用中, 正則表達式提取器與JSON Extractor使用較多, 應重點掌握.
更多關于軟件測試培訓的問題,歡迎咨詢千鋒教育在線名師,如果想要了解我們的師資、課程、項目實操的話可以點擊咨詢課程顧問,獲取試聽資格來試聽我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門到精通。