一、接口测试的相关概念
二、市面上的接口架构设计
三、市面上的接口测试工具
四、安装jmeter
安装jmeter前,确保环境已安装JDK,Apache JMeter 5.5 (Requires Java 8+)
1.下载
- jmeter官网下载,当前最新版为jmeter5.5
- 下载地址:jmeter官方下载
- 下载速度很慢,有需要的可以直接联系我发给你下载好的。
2.安装
- 下载好之后,放到自己期望路径下,直接解压运行即可
- 运行方式(GUI启动): - (1)运行
\apache-jmeter-5.5\bin
目录下的:ApacheJMeter.jar- (2)运行\apache-jmeter-5.5\bin
目录下的:jmeter.bat- > 两种方式没有区别,第一种方式没有cmd弹窗。
3.一些易用性配置
- (1)汉化 - 可以进入jmeter中在选择语言,这种方法需要每次进入后都要修改- 永久修改: 编辑
\apache-jmeter-5.5\bin
下的jmeter.properties
文件,在截图位置插入:language=zh_CN - (2)快捷方式 - 第一步:将
\apache-jmeter-5.5\bin
目录下的ApacheJMeter.jar
或者jmeter.bat
发送快捷方式到桌面- 第二步:此时已经添加,但是可以看到名称显示为:jmeter.bat --快捷方式
,而且没有图标,可以做出以下优化: - 修改名称 右键重命名,一般修改为:jmeter
,即可- 更换图标 图标的格式一般为ico格式,不能直接用本地的jpg或者png,暴力改后缀也不行,因此需要生成ico格式图标。 方法:确定源图片在jmeter安装路径:apache-jmeter-5.5\docs\images
下可以看到jmeter的一些图标如下 打开在线制作ico图标的网站:在线制作ICO图标 选择源文件,选择目标尺寸,点击生成 回到桌面快捷方式,右键—属性—更换图标—浏览,选择到刚才制作的ICO图标,应用即可。
至此就可以在桌面上看到美观的图标,点击开始写脚本吧
这个方法适用于所有的应用换图标
五、目录介绍
六、常用组件
必须组件:测试计划、线程组、取样器
非必须组件:除必须外
- 组件介绍 - 1.测试计划:起点,所有组件的容器- 2.线程组:代表一定数量的用户- 3.取样器:向服务器发送请求的最小单元- 4.逻辑控制器:结合取样器实现一些复杂的逻辑- 5.前置处理器:请求之前的工作- 6.后置处理器:请求之后的工作- 7.断言:判断请求是否成功- 8.定时器:请求之前的延时间隔。固定、随机- 9.配置元件:配置信息- 10.监听器:收集结果
- 执行顺序 测试计划>线程组>配置元件>前置处理器>定时器>取样器>后置处理器>断言>监听器
- 作用域 作用于:父组件、同级组件、同级组件下的所有子组件(夫亲、兄弟、儿子、侄子) 不能作用于:叔父、堂亲
七、执行接口测试
- 1.拿到接口文档、熟悉接口业务、接口地址、鉴权方式、入参、出参、错误码
- 2.编写接口测试用例。- 思路: - 正常场景:输入正确入参,接口正常返回- 异常场景: 鉴权:空、错误、过期、次数限制 参数:空、类型、长度、大小、错误码覆盖 其他:黑名单、分页···
- 3.使用接口测试工具执行。
- 4.得出测试报告。
八、接口测试实践
1.添加线程组
- 1.在测试计划下面添加线程组 线程数等配置一般用于性能测试,在做接口测试、接口自动化测试时,以下值保持默认的1。
2.添加一些常用的配置元件
- http cookie管理器 不用做任何配置修改,该配置元件只要放在这里,就可以保证以后的cookies不会丢失
- .http请求默认值 可以配置:协议、服务器或IP、端口号。 配置好后,之后的请求可以省略这些配置。
- 用户自定义的变量 全局变量,可以保存一些用户账户信息、环境信息、数据库信息···
- 必须带请求头的接口,比如需要加客户端类型的接口。还需要添加http信息头管理器 从fiddler中复制所有请求头添加到http信息头管理器中(可以通过逐个删除来调试到底需要哪些请求头)。
3.添加http请求
- 线程组—右键——取样器——http请求
- 请求主体,包含以下内容:- 协议:http/https,根据实际接口配置。可以在【http请求默认值】中配置,后续接口不用再配置- 服务器或IP:域名或者IP。根据实际接口配置。可以在【http请求默认值】中配置,后续接口不用再配置- 端口号:http:80,https:443根据实际接口配置。可以在【http请求默认值】中配置,后续接口不用再配置- 方法:post/get- 路径:接口路径,以“/开头”。运行时和服务器/ip拼接后,发送请求- 内容编码:- 参数:使用parmars的接口,get请求的参数- 消息体:消息body,post请求的参数。- 文件上传:上传文件
4.添加查看结果树
- 右键—监听器—查看结果树
- 作用域:同级组件
- 结果树内容: - 截图中编号1:此处可以点击切换内容格式- 截图中编号2:取样器结果- 截图中编号3:请求页签,包含请求headers和body- 截图中编号4:响应页签,包含响应headers和body
九、接口关联
- 1.正则表达式
- 2.json提取器
性能测试章节中已经做过介绍,此处不再赘述,有需要可以参考:
十、实现接口业务闭环
- 业务操作:增、删、改、查
- 接口的操作不外乎以上四种情况。
- 增加类型的接口:测试增加后,需要删除 - 可以避免出现大量垃圾数据
- 删除类型的接口:先新增,再测试删除- 可以避免出现删除的数据不存在而执行失败,保证接口每次都能运行成功
- 修改类型的接口:先新增,再测试修改,最后删除 - 可以避免出现修改的数据不存在而执行失败,保证接口每次都能运行成功
- 查询类型的接口:直接测试查询- 查询接口不影响业务闭环
- 业务闭环好处: - 1.可以保证用例每次都可以执行成功。- 2.不会对存量业务数据造成误操作。- 3.一般情况下目录结构:
十一、接口测试断言
- 断言字段: - 响应文本:返回的json数据- 响应代码:200、300、400···- 响应信息:ok- 响应头:- 请求头:- URL:- 文本(文档):返回的json转换为字符串- 忽略状态:当有多个断言时,如果有一个断言成功,那么结果是成功- 请求数据
- 模式匹配规则- 字符串:响应内容包含需要匹配的字符串,区分大小写,不支持正则表达式- 包括:响应内容包含需要匹配的字符串,区分大小写,支持正则表达式- 匹配:响应内容完全相等需要匹配的字符串,区分大小写,支持正则表达式- 相等:响应内容完全相等需要匹配的字符串,区分大小写,不支持正则表达式
- 测试模式- 断言内容书写框
常用断言方式:响应数据 + 字符串/包含
十二、接口测试调试方案
- 1.通过查看结果树查看
- 2.使用调试取样器
- 3.jmeter结合fiddler实现调试- 把fiddler作为代理。一般在没有接口文档,需要通过抓包获取接口信息时使用
十三、Jmeter数据驱动之——csv参数化处理
应用场景
同一个接口需要执行多组数据时,可以采用csv参数化处理
使用方法
- 1.在该接口前添加【csv数据文件设置】 - 在取样器右键—配置元件—csv数据文件设置- 准备csv数据,填写路径- 配置循环 - 如果该线程组下只有这一个请求-,那么可以直接设置线程组的循环次数,csv有几组数据,就配置循环几次- 如果该线程组下有多个请求,而只有这一个请求需要循环,那么添加一个循环控制器,将需要循环的请求单独放在循环控制器下。循环次数同上。- 在请求中使用csv参数 - 通过${变量名}来读取变量- 在请求名称、请求数据、断言···中都可以使用- 执行,查看结果树,是否读取csv正确
自动化测试经常会用到
十四、jmeter脚本录制
- badboy:早已淘汰
- http代理服务器 (原理:将jmeter作为代理服务器) - 测试计划—右键—非测试元件—http代理服务器- 录制方法 - 端口:8888- 目标控制器:选一个干净的线程组- 设置本机的请求,通过代理服务器发送,配置代理:127.0.0.1:8888- jmeter的http代理服务器启动- 过滤:包含模式、排除模式。注意格式,前后需要加".*",点需要通用反斜杠\转义,参考下图。
十五、jmeter执行数据库操作
参考我的另一篇文档,传送门:
十三、bean shell组件和语言规则
十四、非GUI方式运行
十五、集成
版权归原作者 chosen1_ln 所有, 如有侵权,请联系我们删除。