jmeter接口测试实例
Jmeter的运行:打开Jmeter安装包,进入\bin中,找到“jmeter.bat”,双击运行即可。打开界面如图所示:
修改简体中文路径:option->choose Language->chinese(simplified)
(1)获取学生信息-get请求
执行步骤:
1、添加线程组
2、添加http请求
3、添加查看结果树
4、执行
5、查看结果
步骤1,在打开的jmeter界面中,右键“test plan”-> “Threads(user)”->“线程组”,添加线程组。
步骤2,右键“线程组”->“添加”->“sample”->“HTTP请求”,添加HTTP请求。
按照http请求接口文档,填写http请求信息,包括请求名称、请求方式、服务器名称、端口号,请求路径,参数等。
其中:
(1)参数可以在“parameters”中填写,也可以写在“路径”中,如:/api/user/stu_info?stu_name=小黑。
(2)端口号,http默认为80,可以省略。
(3)服务器名称,不需要添加http://,发送请求时,系统会添加。
(4)content encoding 填写utf-8,不填写请求返回信息可能乱码。
步骤3,右键“线程组”->“添加”->“监听器”->“查看结果树”,查看请求结果。
步骤4、点击“获取学生信息”,在工具栏点击绿色运行箭头,发送请求。
步骤5、在步骤4执行后,点击“查看结果树”查看请求结果。
点击工具栏扫帚图标,可删除已执行的结果。
(2)登录-post请求
说明:实例(2)“登录”是实例(1)“获取学生信息”的基础上操作。
执行步骤:
1、添加http请求
2、执行
3、查看结果
步骤1,右键“线程组”->“添加”->“sample”->“HTTP请求”,添加HTTP请求。
点击“登录”请求,按照http请求接口文档,填写post请求信息,包括请求名称、请求方式、服务器名称、端口号,请求路径,参数等。
步骤3、点击“获取学生信息”,在工具栏点击绿色运行箭头,发送请求。
步骤4、在查看结果树中,查看执行返回结果。
执行时,可将实例(1)获取学生信息“禁用”,仅关注实例(2)运行结果。
(3)添加学生信息-参数为json类型
说明:实例(3)是实例(1)、(2)的基础上操作。
执行步骤:
1、添加http请求
2、执行
3、查看结果
步骤1,右键“线程组”->“添加”->“sample”->“HTTP请求”,添加HTTP请求。
在“添加学生信息”界面,填写http请求信息,如下图所示。
步骤2、选择“添加学生信息”,点击工具栏绿色三角,发送请求。
步骤3、点击“查看结果树”,查看请求返回结果信息。
(4)添加金币充值-发送cookii及身份验证机制
金币充值,需要身份验证,即需要用户登录后服务器返回的cookie信息。
知识点:
(1)以“http cookie管理器”的方式发送cookie
(2)以“http信息头管理器”的方式发送cookie
Ø 以“http cookie管理器”的方式发送cookie
步骤1,添加http请求,填写请求信息,如下图所示。
步骤2,不添加cookie信息,直接发送请求,则服务器返回“未登录”提示,如下图。
步骤3,以http cookie管理器方式添加cookie。
首先“登录”,获取用户登录后服务器返回的cookie信息。
添加http cookie管理器,添加方法:在“学生金币充值”上右键,选择“添加”->“配置元件”->“HTTP cookie管理器”,如下图。
填写获取的cookie信息,填写内容见下图。
http cookie管理器的弊端,当cookie有多个参数时,要添加多行参数,比较麻烦。
执行后,服务器返回操作成功的信息,如下图所示。
Ø 以http信息头管理器的方式添加cookie。
http信息头管理器的添加方式:在“学生金币充值”上右键,选择“添加”->“配置元件”->“http信息头管理器”,如下图。
http 信息头管理器,cookie为参数,对应的值,即使是多个,也可以一并拷贝到“值”对应的列,很方便。
运行结果如下图。
(5)获取所有学生信息-添加header信息
知识点:http 信息头管理器的使用
步骤1,添加http请求信息
添加http信息头管理器,添加方法:
在“获取所有学生信息”上右键,选择“添加”->“配置元件”->“http信息头管理器”
运行后,查看结果信息,如下图所示。
(6)文件上传
文件上传http请求如下图。
请求执行结果。
(7)函数助手(_ramdom/_time)-应用实例
应用场景,注册多个用户,用户名不能重复。
1、借用函数助手中的随机函数_ramdom生成某一范围内的值,参与用户名的生成。
弊端:因为生成的是给定范围内的随机数,两次请求可能重复,造成请求失败。
2、借用_time,根据时间戳生成唯一数据。
Ø _ramdom的使用
步骤1,填写http请求,如下图。
步骤2,选择“选项”->“函数助手对话框”,弹出函数助手窗口。
在函数助手窗口中,选择随机函数_random,输入最小值01,最大值10,点击【生成】。
将生成的字符串粘贴至用户名dinghui后。
选择“线程组”,在右侧窗口中输入“3”,即发起3次注册请求。
执行后查看结果,如下图所示,请求1、3注册成功,请求2提示用户已注册,因为请求2产生的随机数与请求1相同,都为8.
Ø _time的使用
time参数以当前时间生成随机数,格式为YYYYMMddHHmmss,优点不会重复。
(7)http请求默认值-应用实例
该组件可以为我们的http请求设置默认的值。假如,我们创建一个测试计划有很多个请求且都是发送到相同的server,这时我们只需添加一个 Http request defaults组件并设置“Server Name or IP”,然后添加多个http请求且不设置"server name or ip",这些http请求会默认使用Http request defaults组件设置的值。
补充说明:
1、一个测试计划中可以有多个Defaults组件,多个Defaults组件的默认值会叠加,如第一个defaults中定义参数a=1;第二个defaults中第二参数b=2,c=3.有一个请求什么参数也没写,发送请求时,参数为a=1&b=2&c=3。
(8)用户自定义变量-应用实例
同一线程组下多个请求都用到的参数,如服务器名,可以通过添加用户自定义变量实现。
右键“线程组”->“添加”->“配置元件”->“用户定义的变量”,
(9)关联(sessionid)-应用实例
应用场景:学生充值金币接口请求,需要发送sessionid以验证身份信息,sessionid为用户登录后服务器返回的信息,需要在返回信息中获取sessionid信息。
Ø 利用json extractor 组件
只针对Json格式的Response 取值,右击请求添加->后置处理器->JSON Extractor;
sessionid信息的表达式由来:登录接口的返回信息。
v
在学生金币充值中获取参数的值。
学生金币充值可执行成功。
Ø 正则表达式提取器
在需要被提取响应数据的请求下添加正则表达式提取器,右击添加->后置处理器->正则表达式提取器。
根据登录返回数据中包含sign的字符串,填写正则表达式。
应用名称:变量名
正则表达式:最简单的办法是在响应数据中把要提取的目标值左右若干字符包含目标值的一行拷贝出来,粘贴到正则表达式框内,在把目标值用一对小括号替换,括号里用添上合适的匹配符本例如(.*)或(.+?),左右边界中若含转义字符,尽量避开,或转义;
模板:$1$,匹配数据1代表匹配的第一个值。
缺省:获取不到值是赋一个默认值。
在请求中填写cookii信息,提取变量的值。
三、关于正则表达式的举例说明:
1、提取单个字符串:
假如想匹配Web页面的如下部分:name = "file" value =
"readme.txt">并提取readme.txt。一个合适的正则表达式:name = "file" value =
"(.+?)">。
():封装了待返回的匹配字符串。
.:匹配任何单个字符串。
+:一次或多次。
?:不要太贪婪,在找到第一个匹配项后停止。
2、提取多个字符串:
假如想匹配Web页面的如下部分:name = "file.name" value =
"readme.txt">并提取file.name和readme.txt。一个合适的正则表达式:name = "(.+?)" value =
"(.+?)"。这样就会创建2个组,分别用于$1$和$2$
比如:
引用名称:MYREF
模板:$1$$2$
如下变量的值将会被设定:
MYREF: file.namereadme.txt
MYREF_g0: name = "file.name"value =
"readme.txt"
MYREF_g1: file.name
MYREF_g2: readme.txt
在需要引用地方可以通过:${MYREF}, ${MYREF_g1}进行使用。
(10)参数化-应用实例
Ø CSV 数据文件设置
利用CSV 数据文件设置元件,导入外部参数列表。
以注册为例,多次注册,每次用不用的用户名。
右键“线程组”->“添加”->“配置元件”->“CVS数据文件设置”
文件名:浏览选择参数列表。
变量名称:有几个变量就写几个变量,变量间用分隔符分割,分割符在“分隔符”中定义。
应用方法${username},${password}
分隔符:定义分隔符,这里定义某个分隔符。
是否允许带?:选项选为“true”的时候对全角字符的处理出现乱码。
参数文件内容:
参数文件的引用:
请求参数:
(11)响应断言-应用实例
正确匹配时,结果树中运行结果情况如下:
设置错误匹配值,运行情况如下: