1.1、核心定义
接口(Interface)是软件系统内部、系统与系统之间,预先约定好规则的数据交互通道,定义了输入的格式、内容、规则,以及输出的格式、内容、异常情况,交互双方无需了解对方内部实现,只需遵守约定即可完成协作。
1.2、通俗类比
把接口想象成「快递驿站」
寄件人(调用方):只需要按驿站规则(接口约定),把包裹(请求参数)填好地址、按规定包装,送到驿站 驿站(接口):按约定的规则处理包裹,转发给收件方 收件人(服务提供方):收到符合规则的包裹,处理后返回回执(响应数据) 核心:双方不需要见面,不需要知道对方怎么处理包裹,只要遵守驿站的规则,就能完成交互。 1.3、接口的本质
接口的本质是「契约」,是调用方和服务方的一份约定:约定你给我什么、我返回给你什么、什么情况是正常、什么情况是错误。所有接口测试的核心,都是验证服务方有没有遵守这份契约。
2. 接口的 4 大核心作用
场景:淘宝 APP 改版换页面样式,后端服务完全不用改,只需要前端调整即可
场景:同一个「查询商品详情」接口,手机淘宝、淘宝小程序、PC 端淘宝都在调用
场景:所有接口响应都用 code+message+data的统一 JSON 格式
场景:用户不能直接修改自己的账户余额,必须通过「充值」「消费」等接口,经过校验后才能变更
3. 接口全维度分类
维度 1:按协议类型分
HTTP/HTTPS 接口:基于 HTTP 协议,最主流,90% 以上的对外接口都是这类 RPC 接口:远程过程调用,多用于后端微服务内部调用(如 Dubbo、gRPC) WebSocket 接口:长连接双向通信接口,用于实时消息场景 FTP/SFTP 接口:文件传输接口,用于文件上传下载
维度 2:按暴露范围分
对外接口:给第三方、前端客户端调用的接口,如开放平台 API、APP 后端接口 内部接口:系统内部模块 / 服务之间调用的接口,不对外暴露,如用户服务调用订单服务 第三方接口:我们调用其他公司的接口,如微信支付、短信验证码接口
维度 3:按请求方式分(HTTP 接口细分)
GET:查询数据 POST:新增数据 PUT:全量修改数据 DELETE:删除数据 PATCH:部分修改数据
维度 4:按数据格式分
JSON 格式接口:当前绝对主流,前后端交互基本都用 JSON XML 格式接口:老旧系统、部分银行 / 政务系统在用 form 表单格式:传统网页提交、文件上传场景常用
4. API 与接口的关系辨析(高频易混点)
API = Application Programming Interface(应用程序编程接口),是接口的一个子类,特指编程层面的函数 / 服务入口 我们日常测试工作中说的「接口」,默认就是「HTTP API 接口」,可以近似理解为一回事,但概念上:接口的范围更大,API 是接口的一种。 一句话区分:所有的 API 都是接口,但不是所有接口都是 API(比如硬件接口就不是 API)。 二、接口测试核心理论与全流程 1. 接口测试的核心定义
接口测试是针对后端服务接口的测试活动,通过工具模拟客户端向服务端发送请求,校验返回数据的正确性、完整性、安全性、性能,验证接口的业务逻辑、参数校验、权限控制等是否符合设计预期。
通俗说:跳过前端页面,直接给后端发请求,测后端的逻辑对不对、稳不稳、安不安全。
2. 接口测试的 5 个核心目的
3. 接口测试的 6 大核心优势
验证后端业务逻辑的正确性:所有业务规则、计算逻辑、数据处理是否符合需求 提前发现底层缺陷:在前端还没开发完的时候就介入测试,降低缺陷修复成本 校验系统健壮性:验证异常参数、异常请求下,服务会不会报错、崩溃、数据错乱 保障系统安全性:验证鉴权、权限控制、数据加密是否到位,防止越权、数据泄露 支撑高频回归迭代:接口稳定后做成自动化,版本迭代时快速回归,提升测试效率 4. 接口测试的 4 类典型适用场景
场景:接口变更频率远低于前端页面,接口自动化脚本维护成本低,收益高 价值:是企业自动化测试的首选切入点,90% 的公司自动化都是从接口开始做 场景:前端还没开发、前端改需求、前端页面改版,都不影响接口测试的执行 价值:测试进度不依赖前端开发进度,项目整体周期更可控 场景:100 条接口用例,自动化执行只需要几十秒;前端功能自动化要几分钟,手工测要几小时 价值:适合高频回归,版本迭代时快速验证核心接口 场景:前端页面展示错误,可能是前端渲染错了,也可能是后端返回数据错了,排查要半天;接口测试直接测后端,出问题直接就是后端的锅 价值:减少前后端甩锅,缺陷定位时间缩短 80% 场景:前端页面会做参数校验,比如手机号长度不够不让点提交;但接口测试可以绕过前端校验,直接发非法参数,测后端有没有做校验 价值:能覆盖大量前端无法触达的异常、边界、非法场景,缺陷发现率更高 场景:后端接口开发完成即可开始测试,不用等前端页面做好,测试周期提前 1-2 周 价值:缺陷发现越早,修复成本越低,后端阶段修复成本是前端阶段的 1/5 - 3.1、测试左移,提前介入
- 3.2、场景覆盖更全面
- 3.3、缺陷定位更精准
- 3.4、执行效率更高
- 3.5、不受前端限制
- 3.6、更容易实现自动化
5. 接口测试 vs 前端功能测试 前后端分离架构的 Web、APP、小程序项目(当前互联网主流) 微服务架构项目,服务间调用多、后端逻辑复杂的项目 迭代速度快、回归测试量大的项目(如互联网电商、社交产品) 对安全性、稳定性要求高的项目(如金融、支付、政务系统) 对比维度 接口测试 前端功能测试 测试层级 后端服务层(逻辑层) 前端 UI 层(展示层) 测试对象 接口的请求、响应、业务逻辑 页面元素、用户操作流程、页面展示 介入时机 接口开发完成即可介入(测试左移) 前端页面开发完成后才能介入 执行方式 工具模拟请求,无需页面渲染 模拟用户操作,依赖页面加载渲染 场景覆盖 可覆盖正向、反向、异常、边界、鉴权等所有场景,不受前端限制 受前端校验和页面操作限制,很多异常场景无法触达 缺陷定位 直接定位后端逻辑问题,精准度高 需排查是前端渲染问题还是后端数据问题,定位慢 执行效率 高,单条用例毫秒级,可批量并发执行 低,单条用例秒级,受页面加载速度限制 自动化成本 低,接口变更少,脚本维护简单 高,页面改版频繁,元素经常变,维护成本高 6. 接口测试 10 步完整流程
第 1 步:需求分析
- 输入
产品需求文档、业务流程图、原型图 - 核心动作
梳理业务规则、业务场景、异常分支 明确每个接口的业务背景、使用场景、权限约束 记录需求中不明确、有歧义的点,同步产品 / 开发确认 - 产出物
需求理解清单、需求疑问点列表 - 注意事项
不能跳过需求直接看接口文档,否则会只测格式、不测业务逻辑
第 2 步:接口文档解读
- 输入
需求理解清单、官方接口文档(Swagger/Apifox 等) - 核心动作
通读全量接口文档,按模块分类整理 提取每个接口的 8 大核心要素(请求方法、URL、参数、响应等) 对比需求,校验文档和需求是否一致,记录文档缺失、歧义、错误的点 - 产出物
接口要素清单、文档疑问清单 - 注意事项
文档不是 100% 准确的,一切以需求为准,文档有问题必须找开发确认
第 3 步:接口用例设计
- 输入
需求理解清单、接口要素清单 - 核心动作
先设计单接口用例,覆盖 8 大维度 再设计业务场景串联用例,覆盖核心业务流程 标注用例优先级、前置条件、预期结果 - 产出物
接口测试用例表 - 注意事项
预期结果必须明确,不能写 “返回正确”,要写清返回的 code、message、data 的具体值
第 4 步:用例评审
- 输入
接口测试用例表 - 核心动作
邀请开发、产品、测试同事一起评审 讲解用例设计思路,收集修改意见 补充遗漏场景,修正错误的预期结果 - 产出物
评审后的最终版用例 - 注意事项
评审不是走形式,是补全场景、统一认知的核心环节
第 5 步:环境准备
- 输入
最终版用例、测试环境部署文档 - 核心动作
确认测试环境服务启动正常,接口可以正常访问 准备测试账号,配置好对应权限 确认数据库可访问,准备测试数据 调试接口工具(Postman/Jmeter 等),确保能正常发请求 - 产出物
可用的测试环境、测试账号、测试数据 - 注意事项
环境不通不要急着写脚本,先把环境问题排查完,否则全是无用功
第 6 步:脚本开发
- 输入
最终版用例、可用的测试环境 - 核心动作
在工具中编写接口请求脚本,配置请求头、参数、断言 实现接口之间的参数关联(上一个接口的返回值传给下一个接口) 实现参数化、异常场景的脚本配置 - 产出物
可执行的接口测试脚本 - 注意事项
脚本必须加断言,不能只看接口通不通,要校验返回内容对不对
第 7 步:测试执行
- 输入
接口测试脚本、最终版用例 - 核心动作
按优先级顺序执行用例,先执行 P0 核心用例 记录每条用例的实际结果,和预期结果对比 对失败的用例,重复验证 2 次,排除环境、操作问题 - 产出物
用例执行结果记录 - 注意事项
执行过程中发现的问题先自查,确认不是自己参数传错了再提缺陷
第 8 步:缺陷管理
- 输入
用例执行失败的结果 - 核心动作
按规范提交缺陷,附请求信息、响应截图、日志信息 跟踪缺陷修复状态,和开发沟通疑问 被驳回的缺陷要补充证据,确认是 bug 再二次提交 - 产出物
缺陷单 - 注意事项
缺陷描述要精准,让开发看了就能复现,不要只说 “接口有问题”
第 9 步:回归测试
- 输入
修复后的缺陷单、对应测试用例 - 核心动作
缺陷修复后,重新执行对应用例,验证是否修复成功 执行关联接口的用例,验证修复有没有引入新问题 未修复的缺陷打回,备注原因 - 产出物
回归测试结果 - 注意事项
回归不能只测修复的那个点,还要测周边关联功能,防止牵一发而动全身
第 10 步:测试报告输出
- 输入
用例执行结果、缺陷数据、回归结果 - 核心动作
统计用例总数、执行率、通过率 统计缺陷数量、严重等级分布、模块分布 总结测试风险、遗留问题、测试结论 - 产出物
接口测试报告 - 注意事项
报告要有明确的结论,能不能上线,风险点是什么,不能只堆数据
三、主流接口架构分类与对比
1. HTTP / HTTPS 接口
底层原理
基于 HTTP/HTTPS 应用层协议,采用请求 - 响应的同步通信模式,客户端发一次请求,服务端回一次响应,请求结束连接就断开(短连接)。HTTPS 是 HTTP 的加密版,加了 SSL/TLS 加密层。
通信过程
客户端和服务端建立 TCP 连接 客户端组装请求报文(请求行 + 请求头 + 请求体)发送给服务端 服务端处理请求,组装响应报文(状态行 + 响应头 + 响应体)返回 连接断开(HTTP1.1 支持长连接复用,但本质还是请求 - 响应模式)
典型应用场景
所有网站、APP、小程序的前后端交互 第三方开放平台 API(如微信开放平台、支付宝开放平台) 系统之间的跨语言、跨平台对接
测试工具
Postman、Apifox、Jmeter、curl、Python requests 库
测试核心关注点
请求方法、URL 是否符合规范 参数校验、业务逻辑是否正确 状态码、响应体是否符合约定 鉴权、权限控制是否到位
2. RPC 接口(Dubbo /gRPC 为代表)
底层原理
RPC = Remote Procedure Call(远程过程调用),让调用方像调用本地方法一样调用远程服务器上的方法,底层基于 TCP 协议(也可基于 HTTP2),传输效率更高。
Dubbo:阿里开源,Java 生态主流,多用于国内 Java 微服务内部调用 gRPC:Google 开源,基于 Protobuf 序列化,跨语言,性能极强,多用于多语言微服务 通俗理解:HTTP 接口就像你给饭店打电话点餐,要说清地址、菜品、格式;RPC 接口就像你家厨房,你直接喊 “妈,做个番茄炒蛋”,就像调用本地方法一样自然。
通信过程
调用方通过接口代理发起方法调用 客户端将方法名、参数按约定序列化 通过网络发送给服务端 服务端反序列化,执行对应方法,将结果序列化返回 客户端反序列化得到结果
典型应用场景
微服务架构中,后端内部服务之间的调用(如用户服务调用订单服务) 对性能要求极高的内部系统交互 同技术栈的后端服务集群
测试工具
Dubbo 用:Dubbo Admin、Jmeter Dubbo 插件、Telnet、Java 代码调用gRPC 用:gRPCurl、Postman、BloomRPC
测试核心关注点
接口方法、入参出参是否正确 服务注册与发现是否正常 超时、重试、降级机制是否生效 并发下的性能与稳定性
3. WebSocket 接口
底层原理
基于 WebSocket 协议,长连接全双工通信,连接建立后,客户端和服务端可以双向实时发送数据,不需要客户端每次发请求,服务端可以主动推送数据给客户端。
通信过程
客户端通过 HTTP 握手请求,请求升级为 WebSocket 协议 服务端同意,握手成功,连接建立,保持长连接 双方可以随时双向发送数据 任意一方发起断开,连接关闭
典型应用场景
即时通讯(微信聊天、客服系统) 实时数据推送(股票行情、直播弹幕、外卖订单状态) 实时协作工具(在线文档、白板)
测试工具
Postman、Apifox、Jmeter WebSocket 插件、wscat
测试核心关注点
连接建立、断开是否正常 消息推送是否实时、准确、不丢包 心跳机制、断线重连是否正常 多连接并发下的服务稳定性
| WebSocket(应用层) | |||
| 二进制序列化(体积小,速度快) | |||
| 高(长连接减少握手开销) | |||
| 前后端交互、对外开放接口 | |||
| 中等,需要长连接工具 | |||
5. 易混点深度辨析
5.1、HTTP 和 RPC 的本质区别不是性能,是定位
HTTP 是通用的、跨语言的、面向资源的交互协议,适合对外暴露 RPC 是面向方法的、偏向内部的、高性能的调用方式,适合内部服务协作 不是 RPC 一定比 HTTP 快,HTTP2 + 二进制序列化的性能也很强 5.2、WebSocket 和 HTTP 轮询的区别
HTTP 轮询:客户端每隔几秒发一次请求问有没有新数据,效率低、延迟高、浪费资源 WebSocket:一次连接,双向推送,实时性高,资源占用少
四、避坑指南(高频误区,提前规避)
❌ 误区:接口就是 URL ✅ 纠正:URL 只是接口的访问地址,接口还包含请求方法、请求头、请求参数、响应规则等一整套约定 ❌ 误区:接口测试就是测接口通不通 ✅ 纠正:通不通只是最基础的,核心是测业务逻辑对不对、参数校验严不严、鉴权有没有效、异常会不会崩 ❌ 误区:所有接口都是 HTTP 接口 ✅ 纠正:HTTP 只是最常见的,后端内部还有大量 RPC 接口,实时场景用 WebSocket ❌ 误区:接口测试流程就是发请求→看结果 ✅ 纠正:完整流程有 10 步,需求分析、用例设计、评审、回归都是核心环节,跳过就是乱测 ❌ 误区:接口文档都是对的 ✅ 纠正:文档经常和代码不同步,文档只是参考,有疑问必须找开发确认,不能全信文档
夜雨聆风