如何用Jmeter做接口测试
Posted SeanPan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用Jmeter做接口测试相关的知识,希望对你有一定的参考价值。
Jmeter介绍&测试准备:
Jmeter介绍:Jmeter是软件行业里面比较常用的接口、性能测试工具,下面介绍下如何用Jmeter做接口测试以及如何用它连接mysql数据库。
前期准备:测试前,需要安装好Jmeter以及jdk并配置好jdk环境变量。
Jmeter下载地址:http://jmeter.apache.org/download_jmeter.cgi
Jmeter为免安装版本,下载后进行解压,双击bin目录下面的jmeter.bat文件即可启动jmeter .
![](https://image.cha138.com/20210605/647803f3c1ed4e60a98bec699b8eacb3.jpg)
启动jmeter之后,会看到左侧有一个“测试计划”,测试计划可以理解为一套测试环境,测试计划下面可以添加不同的线程组,相当于不同的测试套。线程组下面可以添加具体的测试用例脚本。
添加线程组的流程:右键点击测试计划->点击“添加”->点击Threads(Users)->点击线程组。
![](https://image.cha138.com/20210605/fde7685ae38b4099aeb6d2febbe942bd.jpg)
五种请求介绍:这里介绍get/post/带cookie/带Header/上传文件五种请求的测试。
- get请求:get请求是最简单的请求方式,输入正确的域名地址或者IP地址 ,添加路径和请求方式,启动后即可。
- 第一步:右键点击线程组->点击添加->点击Sampler->点击HTTP请求。
- 第二步:右键点击线程组->点击添加->监听器->查看结果树。
- 第三步:点击请求->输入ip地址或者域名->选择请求方式为GET->输入路径->点击启动按钮。
![](https://image.cha138.com/20210605/a1777ddc8d3543eb963e7b98446cb3d8.jpg)
- 第四步:点击查看结果树->查看执行结果
- post请求:post请求跟get的区别除了请求方式不同之外,还需要添加请求体,请求体内容多半为json格式。
- 第一步:右键点击线程组->点击添加->点击Sampler->点击HTTP请求——同get请求
- 第二步:右键点击线程组->点击添加->监听器->查看结果树。——已添加的话,这步可以省略。
- 第三步:点击请求->输入ip地址或者域名->选择请求方式为POST->输入路径->输入请求参数->点击启动按钮。
- 第四步:点击查看结果树->查看执行结果——同get请求
- 带cookie的请求:该请求需要添加HTTP Cookie管理器。
- 第一步:右键点击线程组->点击添加->点击Sampler->点击HTTP请求——同get请求
- 第二步:右键点击线程组->点击添加->监听器->查看结果树。——已添加的话,这步可以省略。
- 第三步:右键点击线程组->点击添加->配置元件->HTTP Cookie管理器->点击Cookie管理器添加Cookie值。
![](https://image.cha138.com/20210605/f7e5cc9663a5481e981fb141b5d9ed18.jpg)
- 第四步:点击请求->输入ip地址或者域名->选择请求方式为POST->输入路径->输入请求参数->点击启动按钮。——同POST请求
![](https://image.cha138.com/20210605/7995729db72a4bb1af360d8851451706.jpg)
- 第五步:点击查看结果树->查看执行结果——同get请求
- 带Header的请求:该请求需要添加HTTP信息头管理器。
- 第一步:右键点击线程组->点击添加->点击Sampler->点击HTTP请求——同get请求
- 第二步:右键点击线程组->点击添加->监听器->查看结果树。——已添加的话,这步可以省略。
- 第三步:右键点击线程组->点击添加->配置元件-HTTP信息头管理器->填写信息头内容
![](https://image.cha138.com/20210605/d36097d18fe24ec19e72d660b9a3e3b9.jpg)
- 第四步:点击请求->输入ip地址或者域名->选择请求方式为GET->输入路径->点击启动按钮。——同GET请求
![](https://image.cha138.com/20210605/59a732a7e86545c182195fcd7a75bec4.jpg)
- 第五步:点击查看结果树->查看执行结果——同get请求
- 文件上传的请求:需填写上传文件的路径。
- 第一步:右键点击线程组->点击添加->点击Sampler->点击HTTP请求——同get请求
- 第二步:右键点击线程组->点击添加->监听器->查看结果树。——已添加的话,这步可以省略。
- 第四步:点击请求->输入ip地址或者域名->选择请求方式为POST->输入路径->点击Files Upload->点击添加按钮->点击浏览->点击本地文件->输入参数名称->输入MIME类型->点击启动按钮。
- 第五步:点击查看结果树->查看执行结果——同get请求
其他功能介绍:
参数化:所谓参数化就是我们可以将需要传入的参数写到某个配置文件中,配置好参数 ,即可使用配置文件内的参数。
- 第一步:添加配置元件->CSV Data Set Config
- 第二步:本地新建一个user.txt的配置文件,输入用户名,密码,逗号隔开,将文件放到Jmeter安装路径的/bin目录下。
- 第三步:点击CSV Data Set Config,配置变量,输入文件名称,定义参数名称,逗号隔开。
- 第四步:新建请求,步骤同上面的post请求。点击请求名称->输入域名->选择请求方式->输入路径->名称地方输入变量名->值的地方输入在CSV Data Set Config里面配置的变量名->点击启动按钮->查看结果树。
![](https://image.cha138.com/20210605/167e4d7660984c13825599bd4f5b7a10.jpg)
函数助手:Jmeter具备一个函数助手的功能,里面集成了常见函数的使用,这里介绍下随机函数Random和时间函数time的使用。
- 函数助手__Random:点击菜单栏的选项->函数助手对话框->选择一个功能__Random->输入范围的最小值&最大值->点击“生成”按钮->将生成的函数变量带入到请求内。
![](https://image.cha138.com/20210605/4a876d82ee3c4097b2aac41448896269.jpg)
- 函数助手__time:选项->函数助手对话框->选择一个功能__time->输入时间格式->点击“生成”按钮->将生成的函数变量带入到请求内。
![](https://image.cha138.com/20210605/f0e53bfa517e46418b0774541ea59f19.jpg)
关联:所谓关联就是让不同的请求之间的参数形成关联关系,比如说将上一个请求的出参,当作下个请求的入参,该方法可以让多个脚本都串连起来,从而达到连跑的效果。
- 新建请求->右键点击请求添加后置处理器->JSON Extractor
- 点击JSON Extractor->输入变量名称->输入json表达式(json的层级关系用.点号来区分)
![](https://image.cha138.com/20210605/5feaf66b8424491f9925755e814be5dd.jpg)
- 新建新请求->传入变量值(传入上一个请求提取的参数),这样就将两个请求的参数关联起来了。
![](https://image.cha138.com/20210605/9a9c55d3dc624cf2b061641d7a36c4a3.jpg)
添加断言(响应断言):判断一个请求是否成功,除了校验返回码,有时候还要校验返回体的内容是否正确,jmeter可以添加断言来检查结果。
- 右键点击请求->添加->断言->响应断言
- 点击响应断言->选择测试的响应字段->选择匹配规格->添加匹配的字段
![](https://image.cha138.com/20210605/1d91d38569eb4d5c9adf158378736e46.jpg)
Jmeter操作数据库:jmeter还可以通过调用jdbc接口对数据库进行远程操作,这里以mysql为例。
前期准备:需准备好mysql的jdbc驱动包:mysql-connector-java-5.1.7-bin.jar。
- 添加驱动包:点击测试计划->点击“浏览”->添加本地驱动包
- 添加线程组:右键点击测试计划->点击“添加”->点击Threads(Users)->点击线程组->修改线程组名称为“操作数据库”
- 添加JDBC连接配置:右键点击线程组->添加->配置元件->JDBC Connection Configration
- 配置JDBC连接参数:定义变量名->输入DatabaseURL->JDBC驱动类->数据库用户名->数据库用户密码。
- URL:jdbc:mysql://${host+port}/${database_name}?allowMultiQueries=true&characterEncoding=utf-8(host、port、database_name换成对应的值),allowMultiQueries=true是允许多次查询,characterEncoding=utf-8是为了防止中文乱码的情况。
- JDBC驱动类:com.mysql.jdbc.Driver(固定)
- Username:数据库的用户名
- Password:数据库用户密码
- 添加JDBC请求:右键点击线程组->添加->Sampler->JDBC Request
- 配置请求:点击JDBC请求->输入配置的变量名->选择查询类型(Callable代表支持所有的sql语句)->输入数据库语句。
- 添加查看结果树->启动->查看执行结果(返回结果为绿色代表执行成功)。
![](https://image.cha138.com/20210605/08449ba536314798814da6e4a3030c83.jpg)
Jmeter使用常见问题:
- jmeter jdbc 中文乱码:连接池url后面添加characterEncoding=utf-8
- 接口返回体内容有乱码情况:
- 进入jmeter的/bin目录,打开jmeter.properties
- 找到"#sampleresult.default.encoding=ISO-8859-1"
- 去掉#,将ISO-8859-1修改成utf-8
- 重启jmeter
- win10系统上传文件接口报错的问题:将需要上传的文件直接放到jmeter安装目录的/bin目录下。
以上是关于如何用Jmeter做接口测试的主要内容,如果未能解决你的问题,请参考以下文章