用Jmeter进行接口测试

web接口测试工具:
手工测试的话可以用postman ,自动化测试多是用到 Jmeter(开源)、soupUI(开源&商业版)。
在这里插入图片描述

下面将对前一篇Postman做接口测试中的接口用Jmeter来实现。

一、Jmeter 的使用步骤
打开Jmeter 安装包,进入\bin 中,找到"jmeter.bat", 点击打开即可。

在下图打开的Jmeter 页面中,右键“测试计划” -> “添加” -> “Threads(Users)” -> “线程组”, 建立线程组。
在这里插入图片描述

右键“线程组” -> “添加” -> “Sample” -> “HTTP请求”, 输入“服务器名称或IP”,对应的端口号,http默认端口号80,可以不写。

以下请求为GET, 所有“方法”那选择“GET”, 输入对应的路径,添加参数及值。
在这里插入图片描述

注意: “服务器名称或IP”中不用输入http://, 请求时会自动加入(eg, 输入api.test.cn.
在这里插入图片描述

右键“线程组” -> “添加” -> “监听器” -> “察看结果数”, 添加“察看结果数”, 以察看运行后的结果,如果所示。
在这里插入图片描述

这是一个简单的接口请求例子。

二、接口请求实例

  1. “用户定义的变量” 的应用
    以获取学生信息接口(stu_info) 为例,添加一个“用户定义的变量”,设置变量"host" 以及值,这样在获取学生信息接口(stu_info)就可以通过"${host}“取得“服务器名称或IP”的值。
    在这里插入图片描述
    在这里插入图片描述
    登陆接口(login)接口也可以应用“用户定义的变量”的方法,如上图所示,在“用户定义的变量”中添加"username”, “password” 变量及对应的值, 应用到登陆接口(login)接口请求中即可。
    在这里插入图片描述

  2. "HTTP Cookie 管理器"的应用

以金币充值接口(gold_add)为例,建立一个HTTP请求改名“金币充值”,选取请求方式POST, 输入对应的host, path以及同请求一起发送的参数和值。
在这里插入图片描述
由于此接口有权限验证,需要admin用户才可以做操作,需要添加cookie, 因此需要添加"HTTP Cookie 管理器"以传递Cookie。

添加"HTTP Cookie 管理器" 方法如下图所示, 右键“金币充值” -> “添加” -> “配置元件” -> “HTTP Cookie 管理器”
在这里插入图片描述
设置Cookie 的名称(即username 的值),值(即login Response 中的sign 值),域(已在“用户定义的变量”中设置,只需输入变量即可,格式为${host})
在这里插入图片描述
最后可以通过“察看结果数”的响应数据查看结果。

  1. 建立接口间的关联
    以下以登陆接口(login)和金币充值接口(gold_add)为例,在这两个接口间建立关联,让金币充值接口(gold_add)可以实时取得登陆接口(login)的"sign" 值,不必再“HTTP Cookie 管理器”中手动输入最新的sign 值。

从“察看结果树”可以看出,登陆接口(login)的Response 结构为Json格式, sign 在 login_info 里面一层。
在这里插入图片描述
3.1 应用"jp@gc - JSON Path Extractor" 来实现

右键“登陆” -> “后置处理器 -> “jp@gc - JSON Path Extractor”
在这里插入图片描述
通过“察看结果数”得到Response 的结果后, 将“JSONPath Expression” 输入"$.login_info.sign", 设置变量"sign2", 给金币充值接口(gold_add)用
在这里插入图片描述

因此需要在“HTTP Cookie 管理器”中将 u s e r n a m e 的 值 输 入 {username}的值输入 username{sign2},代替之前手动输入的那一串码。
在这里插入图片描述

3.2 右键“登陆” -> “后置处理器 -> “正则表达式提取器”
在这里插入图片描述
输入对应的值, “jp@gc - JSON Path Extractor” 中类似,将“引用名称”输入"sign2",以保证和“HTTP Cookie 管理器”的一致。将正则表达式中的式用login 接口返回的 “sign”: “cd2b43f1688e472e3a516b5a2c6831e8”, 中的一串码用(.*) 替换即可。
在这里插入图片描述
各参数的含义参考下表:
在这里插入图片描述
4. 设置断言
以“增加学生”接口(add_stu)为例,增加响应断言,以验证添加的数据是否成功。如下图所示设置
在这里插入图片描述
通过“察看结果数”可以看到“增加学生” 金币结果为绿色,同时响应数据里的确有断言中的设置的"1000"。
在这里插入图片描述

  1. “HTTP信息头管理器”的使用

以下图中的“获取所有学生信息” 为例,右键“获取所有学生信息” -> “添加” -> “配置元件” -> “HTTP Cookie 管理器” , 输入对应的名称和值即可。

注意: 这里的值需要输入完整的url, 包括http:// (eg, 输入http://api.test.cn)
在这里插入图片描述
6. POST 文件的使用方法
与其他POST请求中添加key-value, json 数据不同的是,这个需要在HTTP 请求中点击“Flies Upload” tab, 点击“添加”, 然后通过“浏览”上传本地的文件。

注意: 参数名称必须为"file"。
在这里插入图片描述
7. “CSV Data Set Config” 和 “函数助手对话框”的使用
以增加学生接口(add_stu)为例,在本地创建一个文件,添加name 和sex的值,对脚本设置5个线程或者循环5次,以加入这5个用户。
在这里插入图片描述
右键“线程组” -> “添加” -> “配置元件” -> “CSV Data Set Config”,如果仅应用于“增加学生”接口的话,可以直接在“增加学生”接口下面创建"CSV Data Set Config"。
在这里插入图片描述
根据下图添加对应的,“Variable Names” 输入"name" 和"sex", 以逗号隔开,为避免插入的数据乱码,将file encoding 设置为utf-8。
在这里插入图片描述
由于"CSV Data Set Config"中的变量名为name 和sex,因此在“增加学生”接口的"Body Data" 中将值分别替换为${name}, ${sex}。
在这里插入图片描述
由于“phone”的唯一性,每次插入一条学生信息时phone 都要求不一样,所以对后面8位用随机函数来实现。
在这里插入图片描述
8. 数据库的应用
以下是JMeter 驱动数据库列表:
在这里插入图片描述
以下以mysql 数据库为例。

添加一个"JDBC Connection Configuration", 根据上表中对mysql的要求设置下图的值。
在这里插入图片描述
添加一个"JDBC Request", 由于在Query 中有insert 和select, 所以Query Type 需要选择"Callable Statement", 如果是单个的select 或者insert,可以选取对应的Select Statement 和Update Statement。
在这里插入图片描述
通过察看结果数看到"JDBC Request" 请求成功,响应数据里返回insert 和select 的结果。
在这里插入图片描述
登陆mysql 数据库,查询发现和Jmeter 中通过察看结果数看到的结果一致。
在这里插入图片描述
**注意点:修改Jmeter 中的中文乱码要将"\bin" 路径下的"jmeter.properties" 文件中设置为 “sampleresult.default.encoding=utf-8”,如下所示。
在这里插入图片描述
对于Jmeter 里中文显示不出来的问题,可以打开"\bin" 路径下的"jmeter.properties" 文件,如下图所示,将这几个JS开头的注释去掉。
在这里插入图片描述
对于以上两个问题,修改后,需将Jmeter 重启才能起效。

转载地址:https://www.cnblogs.com/nancyzhu/p/8035042.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值