Jmeter做接口测试
1.Jmeter的安装以及环境变量的配置
Jmeter是基于java语法开发的接口测试以及性能测试的工具。
jdk:17 (最新的Jeknins,只能支持到17)
jmeter:5.6 官网:http://jmeter.apache.org/download_jmeter.cgi
认识JMeter的目录:
backups目录:备份脚本
bin目录:模板,主jar包,启动文件,jmeter.propties全局配置文件。jmeter-server.bat分布式压
测。
修改全局配置文件:
language=zh_CN 设置为中文
sampleresult.default.encoding=utf-8
extras目录:存放和集成第三方的一些文件。
lib目录:jar包
2.使用Jmeter执行接口测试
1.测试计划
在一个测试计划中可能存在多个线程组
线程组之间在执行时是没有顺序的。如果希望线程按顺序执行,则需要勾上【独立运行每个线程组】
2.Jmeter的组件作用域
组件可以作用于父组件
组件可以作用于同级组件
组件可以作用于同级组件的子组件
3.线程组和测试片段
测试片段就是一个特殊的线程组
线程组
线程组适用于自己调试或者单个测试人员去调试
在线程组中也可以创建模块控制器去执行测试片段
测试片段和include处理器
测试片段是特殊的线程组,和线程组同级别。用于多个测试之间协同做接口测试。主要是和模块控
制以及Include控制结合使用。
特点:
1.默认是禁用状态。
2.单个测试片段无法执行,需要结合模块控制器(自己调试)以及Include控制器(leader)执行。
使用include控制器去执行该测试片段(注意:要添加对应的测试片段存放路径)
4.测试单个接口
接口信息(事例)
添加配置原件
HTTP请求默认值
协议: 根据url
服务器名称或IP: 跟在协议后面的第一段字符串
端口号: http--80,https--443
HTTP Cookie管理器
用于传入cookie
用户定义的变量
相当于全局变量
填写接口信息
新建一个http请求,然后填入相关信息
web服务器: 同HTTP请求默认值, 如果信息与默认值相同则不用填, 如果不同则填
HTTP请求: GET,POST,PUT....(根据接口信息填)
路径: url中ip地址后面的字符串
查看接口执行结果
添加一个查看结果树
执行后进去查看对应接口的执行结果,查看响应信息是否符合期望
5.接口关联(多个接口)
什么是接口关联
当一个接口(接口1)的响应结果为另一个接口(接口2)的传参时, 需要先执行接口1,并通过提取器获取对应的结果数据, 然后将结果数据再放入接口2的对应位置
常用提取器
正则表达式提取器
引用名称相当于变量名, 可使用 ${引用名称} 来使用该变量
正则表达式可以提前在查看结果树中测试是否可以获取得到
语法: 使用字典的形式填写,在value部分填入 (.*?) 即可(记得加引号)
如果要获取多个值,可以在木板部分加入多个 $*$ 的结构 一个 $*$ 代表接收一个对应位置的值
边界提取器
语法: 和正则比较相似
左边界为: "key":"
右边界为: "
JSONpath提取器
Json语法:
(1) $ 根节点
(2).或[] 去子节点
(3)如果是数组(llist),则通过下标取值
(4)相对路径用法:$..name 这里的name一般需要唯一。
(5)列表切片:$.tags[0:3]
总结:看到字典则用.看到列表则用[0]下标,下标从0开始。
Xpath提取器
同web自动化里面的定位方式,一般用于返回html网页时。
关联事例
在上一个接口中我使用正则表达式提取机中的引用名称为token,所以该接口的路径如下填写:
6.动态参数接口测试
工具--》函数助手对话框。
1.随机数字函数(在给定数字范围随机一个整数)
2.随机字符串函数(根据传入的内容字符串和长度,随机出一个新的字符串)
3.随机时间戳函数(根据当前时间生成时间戳)
4.其他函数(大写)(使用JavaScript函数)
在字符串(带变量的字符串也可以)后面加上 .toUppCase()
3.接口测试常规断言和数据库断言
常规断言
断言作用在接口用例中
1.响应断言
2.json断言
3.beanshell断言
主要通过Failure标识是否失败和FailureMessage标识失败信息。
Failure=true 失败,Failure=false 成功。
数据库断言(TO DO)
4.反例接口测试(使用CSV)
首先在要添加反例的接口用例下面加上一个 CSV 数据文件设置 和 一个响应断言
如果有需要执行多次接口的情况(该接口有多个反例和正例需要执行)
可以将该接口放到循环控制器下面,并在循环控制器中设置执行的次数(次数根据要执行的用例数量而定)
然后创建一个.csv文件
第一行写接口的参数
最后加上一个断言的参数
然后就可以添加正例和反例的传参
最后的断言字符串可以通过运行用例查看报错信息获取到,如下: