一、工具简介
jmeter是一个主流的性能测试工具,主要用于测试服务器接口
注:单元测试(开发)>接口测试(避免后期功能测试出现大量bug)>功能测试(黑盒测试)>回归测试>性能测试(上线前,功能测试通过了,没有bug)>自动化测试(接口+web+app )
二、环境搭建
- jdk
- 下载解压jmeter
环境配置:新建系统变量JMETER_HOME,并将jmeter根目录粘贴在该目录下,最后在cmd中输入命令jmeter -v(出现jmeter的标志则配置成功)
三、启动jmeter
- bin/jmeter.bat文件启动
- 命令行启动(在cmd中输入jmeter回车就可以启动jmeter-----推荐)
注:命令行启动jmeter后,不要关掉cmd,关掉jmeter就被关掉了
四、jmeter做接口测试
①添加线程组
右键测试计划-->添加-->Threads-->线程组
②添加http请求
右键线程组-->添加-->Sampler-->http请求
③填写接口信息
抓包的接口信息如下:
jmeter中填写接口相关信息:
④添加请求头
请求头用来规定参数的格式:请求的时候给服务器什么格式的参数,他就以什么格式来解析参数,所以需要在请求头中,告知参数格式
右键http请求-->添加-->配置元件-->http信息头管理器
再点击底部“添加”按钮,添加参数
⑤添加“查看结果树”(直接在测试计划里添加就好)
右键测试计划-->添加-->监听器-->察看结果树
⑥运行结果
⑦断言(在单个http请求中添加断言,每个请求都需要添加断言,多个请求可以共同使用同一个断言----将断言拖到线程组里)
只要接口不报错,执行结果都会通过,例如账号密码错误,接口也不会报错,因此需要添加断言判断,一般判断接口返回的code值即可。
- 响应断言:右键http请求-->添加-->断言-->响应断言
一般都是通过返回值里的code值判断是否通过断言:
- json断言:右键http请求-->添加-->断言-->json assertion
- 断言过程
1.自动判断http状态码,如果大于400则直接报错
2.状态码通过才开始判断断言
五、jmeter做接口测试需要关注的控件
①察看结果树
- 关注取样器结果--response code
- 请求---请求的参数是否正确(接口类型、接口地址、请求头、接口参数)
- 响应数据
②测试计划:包含了所有的线程组
③线程组:理解为一个测试用例,在性能测试中称为场景;包含了多个请求
④http请求:理解为单个步骤
⑤断言
- 响应断言
- json断言
⑥关联
- 正则表达式提取器
- json提取器
六、jmeter中的关联
1、什么是关联:
即前面接口的返回值需要作为后一个接口的参数
2、关联类型:
6.2.1、正则表达式提取器
①添加正则表达式提取器:
右键登录的http请求-->添加-->后置处理器-->正则表达式提取器
②配置正则表达式提取器(即提取值保存到变量中,方便后续使用)
理解:将token的value值保存到gtoken变量中
正则表达式:将token的value值替换成:(.*?),注意一定要在接口返回中复制下来再改value值,不然大概率会出错
③引用变量:${变量名}
6.2.2、json提取器
①添加json提取器:
右键http请求-->添加-->后置处理器-->json extractor
②配置json提取器
例如接口返回值如下,取token值:
$..token:..表示在所有结果中,找到token(不管路径在第几层)
③引用变量:${变量名}
七、小tips:
- 注意记得保存脚本(保存成功后,左上角会有文件路径)
- 右键可禁用不想用的功能,禁用后变灰,后续可打开
- $代表全部,即返回值的全部信息
例:接口返回值$={"code":1,"msg":"返回成功","data":["token":"123456","name":"智障"]}
取值:$.code即为1
$.msg即为返回成功
$.data.0.taken即为123456
接口返回值$={"code":1,"msg":"返回成功","data":[{"token":"123456","name":"智障"}]}
$data.0即为第一个字典:{"token":"123456","name":"智障"}(虽然返回之中只有一个字典,但是也要一层一层剥开)
$data.0.0即为"token":"123456"
$data.0.0即为123456
- jmeter中前置处理器和后置处理器
前置处理器:一般来说都是做一些初始化的准备(在请求之前要准备的工作,使用场景比如密码加密)
后置的内容,比如提取token值,都是在请求完成之后,接口返回结果后,提取结果中的token,所以是后置(在请求完成后要做的工作,使用场景比如关联)
- 点击清除按钮,可以清除察看结果树中的结果