一、工具简介

jmeter是一个主流的性能测试工具,主要用于测试服务器接口

注:单元测试(开发)>接口测试(避免后期功能测试出现大量bug)>功能测试(黑盒测试)>回归测试>性能测试(上线前,功能测试通过了,没有bug)>自动化测试(接口+web+app )

二、环境搭建

  • jdk
  • 下载解压jmeter

环境配置:新建系统变量JMETER_HOME,并将jmeter根目录粘贴在该目录下,最后在cmd中输入命令jmeter -v(出现jmeter的标志则配置成功)

jmeter做接口测试_右键

 

jmeter做接口测试_正则表达式_02

 三、启动jmeter

  • bin/jmeter.bat文件启动
  • 命令行启动(在cmd中输入jmeter回车就可以启动jmeter-----推荐)

注:命令行启动jmeter后,不要关掉cmd,关掉jmeter就被关掉了

 

四、jmeter做接口测试

①添加线程组

右键测试计划-->添加-->Threads-->线程组

jmeter做接口测试_右键_03

 

②添加http请求

右键线程组-->添加-->Sampler-->http请求

jmeter做接口测试_正则表达式_04

 

③填写接口信息

抓包的接口信息如下:

jmeter做接口测试_右键_05

 jmeter中填写接口相关信息:

jmeter做接口测试_正则表达式_06

④添加请求头

请求头用来规定参数的格式:请求的时候给服务器什么格式的参数,他就以什么格式来解析参数,所以需要在请求头中,告知参数格式

右键http请求-->添加-->配置元件-->http信息头管理器

jmeter做接口测试_正则表达式_07

再点击底部“添加”按钮,添加参数

jmeter做接口测试_json_08

 ⑤添加“查看结果树”(直接在测试计划里添加就好)

右键测试计划-->添加-->监听器-->察看结果树

 

jmeter做接口测试_json_09

 ⑥运行结果

jmeter做接口测试_右键_10

 ⑦断言(在单个http请求中添加断言,每个请求都需要添加断言,多个请求可以共同使用同一个断言----将断言拖到线程组里)

只要接口不报错,执行结果都会通过,例如账号密码错误,接口也不会报错,因此需要添加断言判断,一般判断接口返回的code值即可。

  • 响应断言:右键http请求-->添加-->断言-->响应断言

jmeter做接口测试_正则表达式_11

 一般都是通过返回值里的code值判断是否通过断言:

jmeter做接口测试_右键_12

 

  •  json断言:右键http请求-->添加-->断言-->json assertion

jmeter做接口测试_右键_13

 

 

jmeter做接口测试_正则表达式_14

 

  •  断言过程

 1.自动判断http状态码,如果大于400则直接报错

 2.状态码通过才开始判断断言

jmeter做接口测试_json_15

五、jmeter做接口测试需要关注的控件

①察看结果树

  • 关注取样器结果--response code
  • 请求---请求的参数是否正确(接口类型、接口地址、请求头、接口参数)
  • 响应数据

②测试计划:包含了所有的线程组

③线程组:理解为一个测试用例,在性能测试中称为场景;包含了多个请求

④http请求:理解为单个步骤

⑤断言

  • 响应断言
  • json断言

⑥关联

  • 正则表达式提取器
  • json提取器

 

jmeter做接口测试_正则表达式_16

 六、jmeter中的关联

1、什么是关联:

即前面接口的返回值需要作为后一个接口的参数

2、关联类型:

6.2.1、正则表达式提取器

①添加正则表达式提取器:

右键登录的http请求-->添加-->后置处理器-->正则表达式提取器

jmeter做接口测试_右键_17

 ②配置正则表达式提取器(即提取值保存到变量中,方便后续使用)

理解:将token的value值保存到gtoken变量中

正则表达式:将token的value值替换成:(.*?),注意一定要在接口返回中复制下来再改value值,不然大概率会出错

 

jmeter做接口测试_右键_18

 ③引用变量:${变量名}

 

jmeter做接口测试_正则表达式_19

6.2.2、json提取器

①添加json提取器:

右键http请求-->添加-->后置处理器-->json extractor

jmeter做接口测试_右键_20

 ②配置json提取器

例如接口返回值如下,取token值:

$..token:..表示在所有结果中,找到token(不管路径在第几层)

jmeter做接口测试_正则表达式_21

 

 

jmeter做接口测试_右键_22

 

 

③引用变量:${变量名}   

 

jmeter做接口测试_正则表达式_19

jmeter做接口测试_右键_24

七、小tips:

  • 注意记得保存脚本(保存成功后,左上角会有文件路径)

jmeter做接口测试_正则表达式_25

 

  •  右键可禁用不想用的功能,禁用后变灰,后续可打开

jmeter做接口测试_正则表达式_26

  • $代表全部,即返回值的全部信息

例:接口返回值$={"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,所以是后置(在请求完成后要做的工作,使用场景比如关联)

jmeter做接口测试_右键_27

jmeter做接口测试_正则表达式_28

  • 点击清除按钮,可以清除察看结果树中的结果

jmeter做接口测试_右键_29