Jmeter做接口测试
Jmeter
举例:以XC-9000添加计划任务、手动运行、删除计划任务为例
一、测试步骤实现
1.添加http请求:
计划名可以是项目名称,这里改为“XC-9000接口测试”
创建一个线程组,命名为计划任务
创建一个http请求,命名为添加计划任务
在接口文档里面获取信息,填写协议类型、服务器名称或ip、HTTP请求方法、路径,端口号默认,因为是post请求方法涉及请求体,需要填写请求体信息,因为请求体是表单的形式所以填写在参数里面,也没有要求特定的请求头。具体填写如下:
2.添加察看结果树:
在线程组里面右键选择添加->监听器->察看结果树,如果成功获取在察看结果树->响应数据里面会显示正确的响应报文。
3.断言
(1)响应断言:
①测试字段
A.响应文本就是响应body
B.响应代码:responsecode例如“200”,“401”
C.响应信息:“ok”也就是message
我们没有响应代码和信息,所以我们选择响应文本
②匹配规则
A.包含是说我们响应是否包含某个内容,包含和字符串的区别为是否支持正值表达式(包含包括)
B.匹配和相等差不多,只是匹配支持正值表达式
我们选择包括
③点击测试模式添加预期结果:
(2)Json断言
①字段说明:
assert json path exists:需要断言的json表达式
Additionally assert value:如果要根据值去断言,请勾选
Match as regular expression:如果要根据正则表达式去断言,请勾选
Expected Value:期望值
Expect null:如果期望是 null 则勾选
Invert assertion:取反
正则表达式提取器:
引用名称:即参数名称,这个自己定义,在后面时可用
正则表达式: 正则表达式中()括起来的部分就是要提取的。.代表任意字符,+代表出现任意次,后面加?。
模板:$1$代表只有一组数据
匹配数字:0代表随机取值,-1代表全部取值,通常情况下填0,如果在LR中,取出的值是一个数组,还得处理一下,LR11版本用一个随机的函数就可以不用写大段的代码来处理数组
缺省值:如果参数没有取得到值,那默认给一个值让它取
4.测试用例的实现:
①测试数据跟参数有关系,首先在wps里面创建excel表格,在表格第一行书写表头信息,包含title,入参数,expect,本次请求共有三个入参数,他们是taskname、isdisable、level、creator、triggers、commands、dirname。
②标题格式为数据+预期结果
③将所有入参值按照用例要求填入相应位置
④根据接口文档返回参数填写expect
⑤保存为csv文档形式
⑥在请求内添加一个配置原件->CSVData Set Config原件读取。
⑦文件名直接将刚刚填写好的获取”添加任务.csv”文件导入。
⑧文件编码只需要在乱码的情况填写,在这里我们不填写。
⑨变量名称不写,如果我们不写就是按照csv文件第一行作为变量名称。
⑩因为上面没有填写变量名称所以忽略首行填写false。
⑪分隔符允许带引号?,一般情况不允许带引号,特殊情况允许,填写false,
⑫遇到文件结束符再次循环?在所有文件运行完了后不再运行所以我们选择false,再循环就填写true
⑬遇到文件结束符停止线程?我们运行完了后就不再往下了,所以填写ture,否则则填写false
5.关联
点击access_token前置请求右键选择后置处理器(请求发完后执行)->json提取器。在变量名上填写全局变量名taskid(桥名称),在JSON路径表达式里面填写$.taskId(桥左边)。将手动运行请求内的路径的taskid改成${taskid}(桥的右边)进行全局变量的调用。
6.counter和time函数:
${__counter(True,counter)}
${__time(yyyy-MM-dd HH:mm:ss,time)}