一、jmeter接口請求方法介紹
http的組成部分:
請求url、請求方法get/post常用的、請求頭header、請求body、響應response;
http和https的本質區別:https增加了ssl,加密處理,沒有證書是不能通過抓包來獲取數據的;
1.1get請求
get請求的傳參格式
window打開cmd輸入命令:jmeter打開
添加線程組》request請求》get請求方式,參數要放在parameters中,不能放body里,為的是在請求接口時直接拼在路徑后面
1.2 post請求
需要把參數放到body里面,不能在請求路徑里面暴露出來,為了安全性,如果參數中有中文那么content encoding編碼格式必須要:utf-8,否則請求后會亂碼
二、jmeter變量
2.1用戶定義的變量
test-plan測試計划頁面,用戶定義的變量位置如下圖
后續需要用到這個變量值時,可以直接用${url}直接調用了
2.2用戶參數
添加》前置處理器》User Parameters
2.3函數生成變量
2.4BeanShell變量
菜單》前置處理器》BeanShell
vars:
使用方法:
vars.get(String key),從jmeter中獲得變量值
vars.put(String key, String value),數據存到jmeter變量中
在第一個請求中添加腳本處理器,腳本如下,vars.put是固定語法輸出待提取的腳本的,id是輸出的字段,需要調用該字段則用${id},字段和value之間需要用,分割,且value值需要雙引號;其他請求(第二個接口)也可以直接調用該處理結果;
線程組》取樣器》添加debug sampler,查看結果樹,可以查看變量的值
2.5數據文件變量:
是否忽略首行,選擇了false表時不忽略,如果在文件中首行是參數字段,那么需要忽略:true,首行直接取value
2.6配置元件用戶定義的變量
2.7jmeter正則表達式提取器
菜單位置:后置處理器
引用名稱:其他地方引用的變量名稱,可自定義;
正則表達式:()括號表示提取字符串中的部分值,前后是提取的邊界內容;(.+?)表示"id":后的是需要提取的信息,括號表示需要提取的信息,點.是任意字符,+是表示數據中滿足條件后會再次查后面的字符是否滿足條件5和1,滿足則一起返回51,直到不滿足條件的數據終止,再往后面繼續查,中斷后再滿足的條件的數據算第二個數組,?表示循環查詢數據只要滿足.+條件則返回數據,不滿足則返回空,即0次,那么51會展示5和1,兩個數組;
runoo+b,可以匹配 runoob、runooob、runoooooob 等,+ 號代表前面的字符必須至少出現一次(1次或多次)。
runoo*b,可以匹配 runob、runoob、runoooooob 等,* 號代表前面的字符可以不出現,也可以出現一次或者多次(0次、或1次、或多次)。
colou?r 可以匹配 color 或者 colour,? 問號代表前面的字符最多只可以出現一次(0次、或1次),是最小匹配;
模板:正則表達式的提取模式。如果正則表達式有多個提取結果,則結果是數組形式,模板$1$,$2$等等,表示把解析到的第幾個值賦給變量;從1開始匹配,以此類推。若只有一個結果,則只能是$1$;
匹配數字:正則表達式匹配數據的所有結果可以看做一個數組,匹配數字即可看做是數組的第幾個元素。-1表示全部,0隨機,1第一個,2第二個,以此類推。若只要獲取到匹配的第一個值,則填寫1
我們在第一個請求中添加正則提取器、然后再新建一個請求,入參的value是第一個請求正則中的變量名稱{id}
沒加?則提取到冒號:后全部的字段
圖1待提取的響應
表達式
提取結果
加了問好?提取到括號后的字符截至
表達式擴展:
\d:數字
\d{8}:匹配到的數字次數,達到條件則返回
[131159110]\d{8}表示獲取字符串里面開頭數字符合[131159110]限定的,即1、3、5、9、0,然后8個連續的數字,則就匹配成功
(131|159|110)\d{8}表示獲取字符串開頭為131|159|110的
三、jmeter配置元件請求頭默認值(添加多個接口共用的部分)
四、jmeter cookie管理
線程組》配置元件》cookie管理器
添加cookie是為了將想要存儲的數據存儲在cookie里,設置cookie方式如下
五、jmeter 授權管理
如果請求的接口加了用戶信息的認證,那么沒有認證信息的傳參,則不會有響應數據,如何設置認證信息,如下
線程組》配置元件》HTTP Authorization Manager
在請求頭中會帶經過MD5編碼后的信息,可以用base64解碼查看
六、jmeter斷言
線程組添加響應斷言:設置中用響應文本,包含字段,斷言信息配置response中的字段,包含該字段則響應成功,否則響應失敗,在查看結果樹中可以查看原因,通過則展示請求通過的響應數據;
如下是斷言失敗的情況
七、jmeter接口測試數據分離
多個接口請求,請求地址不同,請求參數不同,用if控制器,如果是get請求則如下:
循環控制器(Loop Controller): 作用:指定其子節點運行的次數;
把需要用到的路徑參數、傳參等信息放到文件中
因為首行定義了名字,所以我們需要忽略首行
if控制器判斷如果方法是get方法,interpret需要勾選,為了性能更好,勾選后必須用函數助手生成公式
__jexl3和__groovy方法
${__groovy("${methods}"=="Get",)}
如果不勾選,則輸入公式:"${methods}"=="Get"
斷言是響應數據中有true則響應成功
八、jmeter HTML測試報告dashboard report
生成步驟:
打開cmd 進入jmeter 目錄bin目錄
執行命令:
-n 是無GUI模式
-t 是腳本路徑
-l(小L)是存放測試數據的文件,文件名必須不存在,會自創,查看結果樹,聚合報告等都在里面
-e是生成html報告
-o是存放html報告的地方,也需要文件名不存在,會自創