引言
在当今软件开发领域,接口测试扮演着至关重要的角色。随着系统变得日益复杂和互联,对于内部和外部接口的测试变得愈发关键。接口测试不仅仅是验证接口的正确性,更是确保系统的稳定性、安全性和性能优越性的关键一环。
本篇博客将带您深入了解接口测试的分类、不同架构的设计、关键测试重点以及目前市面上常用的接口测试工具。我们将探讨从 SOAP、RPC、RestFul 到 HTTP 协议的架构演变,并聚焦于 JMeter 这个强大的接口测试工具,详细介绍其简介、安装、常用组件以及执行接口测试的步骤。
一、接口测试分类
内部接口:
测试被测系统各个子模块之间的接口,或被测系统提供给内部使用的接口
外部接口:
- 被测系统调用外部的接口
- 系统对外提供的接口
接口测试重点:检查接口参数传递的正确性,接口功能的正确性,输出结果的正确性,以及对各种异常情况的容错处理,以及权限控制、分页,调用次数限制.
二、目前接口架构设计
- 基于SOAP架构,基于XML规范。基于WebService协议。特点:接口地址?wsdl结尾。
- 预计RPC架构,基于dubbo协议,thrift协议。SpringCloud微服务。
- 基于RestFul架构,基于json规范,预计http协议。
RestFul规则:
接口地址:http://127.0.0.1/user ,get(查询用户) post(新增用户) put(修改用户) delete(删除用户)
- Json数据格式:只有两种数据类型,
- 键值对:{key : value}
- 数组:arry1, arry2
http协议详解:
请求:请求行,请求头,请求正文
- 请求行: POST http://47.107.116.139/phpwind/index.php?m=u&c=login&a=dorun HTTP/1.1
- 请求头:
- HOST 47.107.116.139(请求主机)
- Connectoin: keep-alive(保存活跃)
- Content-Length: 112(内容长度)
- Accept: application/json, text/javascript, */8, q=0.01(数据格式)
- X-Request-With: XMLHttpRequest(异步请求)
- User-Agent:Mozilla/5.0(Windows NT)(客户端类型)
- Content-Type:(内容类型)
- ......
- Cookie:csrf_token=xxxxxx(Cookie信息,客户端发送给服务器的Cookie)
- 请求正文
username=msxy%password=msxy&backurl=httpxxxxx
响应:响应行,响应头,响应正文
- 响应行:
HTTP/1.1 200 OK
- 响应头
- Server: nginx
- Data: Tue, 24 Aug 2021 12:23:12 GMT
- Conten-Type: text/html; charset=UTF-8
- Transfer-Encoding: chunked
- X-Powered-By: PHP/5.6.36
- Set-Cookie: (服务器发送给客户端的Cookie信息)
- 响应正文
- xxx
三、市面上的接口测试工具
Jmeter Ant Git Jenkins
Postman Newman Git Jenkins
soapui, apipost, fildder, charles
四、Jmeter简介,安装,环境变了的配置
基于Java语言压力测试工具,可以做接口测试,也可以做性能测试。
安装:JDK1.8以上,配置环境变量
五、Jmeter目录介绍
backups:脚本备份目录,格式JML
bin:存放Jmeter的启动脚本,配置文件,模块文件
Jmeter.bat 启动Jmeter
jmeter.prperites 核心配置文件。
docs:离线帮助文档。
extras:存放于第三方的集成构建文件,继承Ant,Jenkins
lib目录:存放jar包
licensce:许可证文件
六、Jmeter常用组件
1.测试计划:起点,所有组件的容器。
2.线程组:代表一定数量的用户
3.取样器:向服务器发送请求的最小单元
4.逻辑控制器:结合取样器实现一些复杂的逻辑。
5.前置处理器:在请求之前的工作
6.后置处理器:在请求之后的工作
7.断言:用于判断请求释放成功
8.定时器:负责在请求之间的延迟间隔,固定,高斯,随机
9.配置元件:配置信息
10.监听器:负责收集结果
顺序:非常重要
测试计划》线程组》配置元件》前置处理器》定时器》取样器(请求)》后置处理器》断言》监听器。
作用域:非常重要
必须组件:测试计划,线程组,取样器
辅助组件:除必须组件外
辅助组件作用于父组件,同级组件,以及同级组件下的所有子组件
七、Jmeter执行接口测试
- 拿到API文档(实在不行就Fiddler抓包),熟悉接口业务,接口地址,鉴权方式,入参,出参,错误码。
- 编写接口测试用例。
测试思路:
正例:
输入正常入参,查看接口正常返回。
反例:
鉴权:空,错误,鉴权过期,鉴权次数限制...
参数:空,类型错误,长度错误,错误码的覆盖。
其他,黑名单,分页
- 使用接口测试工具执行
- Jmeter Ant Git Jemkins实现持续集成输出接口测试报告,通过电子邮件发送。
接口测试作为软件开发和维护的重要组成部分,为确保系统的稳定性和可靠性提供了重要保障。通过了解不同类型的接口、架构设计以及掌握接口测试工具的使用,我们能够更加高效地测试接口的正确性和性能。接口测试不仅仅是发现问题,更是为系统的优化和提升提供了有力支持。让我们携手探索接口测试的世界,不断提升软件质量,为用户带来更好的体验。
我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!