测试是验证软件是否满足预期的手段,而接口测试是测试的一种类型,它绕过前端页面,直接对系统提供的接口构造请求并校验响应,从而验证接口的功能、性能与安全性是否符合约定。
一、什么是接口
接口是系统对外或对内提供的一种交互约定,调用方按照约定传入参数,服务方按照约定返回结果。从调用关系上看,接口通常分为两类:
- 程序内部的接口:方法与方法之间、模块与模块之间的交互,是程序内部抛出的接口。
- 系统对外的接口:从别的网站或服务器上获取资源或信息时,对方不会直接开放数据库,而是提供一个写好的方法来获取数据,通过接口即可实现数据共享。
二、什么是接口测试
接口测试是软件测试中的一种重要类型,它直接针对系统对外或对内提供的接口进行验证,不依赖前端页面,而是通过构造请求、检查响应来判断接口的功能、性能与安全性是否符合预期。
简单来说,接口测试关注的核心问题是:
给定一组输入,接口是否返回了正确的输出,并且在异常情况下是否表现符合约定。
三、接口的组成
一个完整的接口通常由以下几个部分组成,理解这些组成部分有助于在测试时明确“该校验什么”。
- 接口地址(URL):即请求的目标路径,由协议、域名(或 IP 与端口)和资源路径组成,例如
https://api.example.com/api/users。 - 请求方法(Method):表明本次操作的类型,常见的有 GET(查询)、POST(新增)、PUT/PATCH(更新)、DELETE(删除)。
- 请求参数(Params / Body):包括 URL 查询参数、表单参数和 JSON 请求体,是接口的输入部分,也是参数校验的重点。
- 请求头(Headers):携带内容类型
Content-Type、身份凭证Authorization、客户端标识等信息,常用于鉴权与内容协商。 - 响应状态码(Status Code):如 200 表示成功、400 表示参数错误、401 表示未认证、403 表示无权限、404 表示资源不存在、500 表示服务端异常。
- 响应体(Response Body):通常为 JSON 结构,包含业务码、提示信息和数据主体,是断言业务逻辑的主要依据。
- 响应头与耗时:如
Content-Type、Set-Cookie以及响应时间,可用于校验内容格式与性能表现。
可以用下面的结构直观表示一次接口交互的组成:
请求:方法 + URL + 请求头 + 请求参数(Query / Body)
响应:状态码 + 响应头 + 响应体(业务码 + 数据)
四、如何执行接口测试
接口测试的执行流程可以概括为「明确目标 → 准备环境 → 设计用例 → 构造请求 → 校验响应 → 回归与持续集成」六个步骤,下面逐一说明。
- 明确测试目标与范围:先梳理被测接口清单,确认接口文档(地址、方法、参数、返回结构、错误码)是否完整,明确本次要覆盖的核心业务链路与优先级。
- 准备测试环境与工具:准备独立的测试环境、测试账号和测试数据,避免污染生产数据;工具上可先用 Postman、Apifox 等做手工调试,再逐步沉淀为代码化的自动化用例。
- 设计测试用例:围绕正向用例、参数校验、边界值、权限校验、异常场景等维度设计用例,并明确每条用例的预期状态码、业务码和关键字段。
- 构造并发送请求:按接口文档组装 URL、请求方法、请求头和请求体,注意
Content-Type与鉴权信息(如Authorization)的正确传递。 - 校验响应结果:按「先状态码、再业务码、后字段值」的顺序断言,同时校验响应结构、字段类型和关键业务数据是否符合预期。
- 回归与持续集成:把用例纳入版本管理与 CI 流水线,提交触发冒烟用例、定时执行全量回归,并输出可视化报告便于定位问题。
可以用下面的流程直观表示一次接口测试的执行过程:
读取接口文档 → 准备环境与数据 → 设计用例 → 构造请求 → 发送请求 → 断言响应 → 记录结果 → 回归/持续集成
五、接口测试主要测什么
- 功能正确性:正常参数下返回的状态码、业务码和关键字段是否符合接口文档。
- 参数校验:必填缺失、类型错误、长度越界、格式非法时是否返回合理的错误提示。
- 边界与异常:空值、极值、特殊字符、依赖服务超时等场景下的处理是否健壮。
- 权限与安全:未登录、无权限、越权访问、敏感信息泄露等风险是否被有效拦截。
- 性能与稳定性:响应时间、并发能力、幂等性是否满足业务要求。
下面以「用户登录接口」为例,用表格形式给出一个接口测试用例的编写示例,覆盖正向与异常两类场景:
| 用例编号 | 用例类型 | 请求方法 | 请求地址 | 请求数据 | 预期状态码 | 预期业务码 | 预期结果 |
|---|---|---|---|---|---|---|---|
| TC-01 | 正向 | POST | https://api.example.com/api/login | {"username": "tester", "password": "123456"} | 200 | 0 | 响应体包含 token 字段,登录成功 |
| TC-02 | 参数校验 | POST | https://api.example.com/api/login | {"username": "tester"} | 400 | 非 0 | 提示「密码不能为空」 |
| TC-03 | 异常 | POST | https://api.example.com/api/login | {"username": "tester", "password": "wrong"} | 200 | 非 0 | 提示「账号或密码错误」 |
| TC-04 | 权限 | GET | https://api.example.com/api/user/info | 未携带 Authorization | 401 | 非 0 | 提示「未认证」 |
编写用例时建议遵循「一条用例只验证一个关注点」的原则,并明确写出前置条件、请求数据、预期状态码、预期业务码和关键字段断言,这样后续无论是手工执行还是转成自动化脚本,都能直接复用。
六、接口测试与 UI 测试的区别
| 对比维度 | 接口测试 | UI 测试 |
|---|---|---|
| 测试对象 | 服务端接口与数据流转 | 页面元素与用户交互 |
| 执行速度 | 毫秒到秒级 | 通常较慢,依赖渲染 |
| 稳定性 | 高,不受前端变动影响 | 易受元素、浏览器、网络影响 |
| 问题定位 | 直接指向接口与字段 | 需逐层排查前端与后端 |
| 投入成本 | 较低,易于批量维护 | 较高,维护成本大 |
七、一个简单的接口测试示例
使用 Python 的 requests 库发起一次请求并校验结果:
import requests
r = requests.get("https://www.baidu.com")
print(r)

八、小结
接口测试不依赖前端页面,执行快、稳定性高、问题定位精准,是分层测试体系中承上启下的关键环节。掌握接口的组成、执行流程和校验要点后,就可以进一步借助 Requests、Pytest、Allure 等工具,把零散的手工验证沉淀为可维护、可扩展的接口自动化测试体系。
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/AKA__Zas/article/details/169366875




