AKA__Zas头像
接口自动化测试(1.0 初认识封面图

接口自动化测试(1.0 初认识

测试是验证软件是否满足预期的手段,而接口测试是测试的一种类型,它绕过前端页面,直接对系统提供的接口构造请求并校验响应,从而验证接口的功能、性能与安全性是否符合约定。

一、什么是接口

接口是系统对外或对内提供的一种交互约定,调用方按照约定传入参数,服务方按照约定返回结果。从调用关系上看,接口通常分为两类:

  • 程序内部的接口:方法与方法之间、模块与模块之间的交互,是程序内部抛出的接口。
  • 系统对外的接口:从别的网站或服务器上获取资源或信息时,对方不会直接开放数据库,而是提供一个写好的方法来获取数据,通过接口即可实现数据共享。

二、什么是接口测试

接口测试是软件测试中的一种重要类型,它直接针对系统对外或对内提供的接口进行验证,不依赖前端页面,而是通过构造请求、检查响应来判断接口的功能、性能与安全性是否符合预期。

简单来说,接口测试关注的核心问题是:

给定一组输入,接口是否返回了正确的输出,并且在异常情况下是否表现符合约定。

三、接口的组成

一个完整的接口通常由以下几个部分组成,理解这些组成部分有助于在测试时明确“该校验什么”。

  • 接口地址(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)
响应:状态码 + 响应头 + 响应体(业务码 + 数据)

四、如何执行接口测试

接口测试的执行流程可以概括为「明确目标 → 准备环境 → 设计用例 → 构造请求 → 校验响应 → 回归与持续集成」六个步骤,下面逐一说明。

  1. 明确测试目标与范围:先梳理被测接口清单,确认接口文档(地址、方法、参数、返回结构、错误码)是否完整,明确本次要覆盖的核心业务链路与优先级。
  2. 准备测试环境与工具:准备独立的测试环境、测试账号和测试数据,避免污染生产数据;工具上可先用 Postman、Apifox 等做手工调试,再逐步沉淀为代码化的自动化用例。
  3. 设计测试用例:围绕正向用例、参数校验、边界值、权限校验、异常场景等维度设计用例,并明确每条用例的预期状态码、业务码和关键字段。
  4. 构造并发送请求:按接口文档组装 URL、请求方法、请求头和请求体,注意 Content-Type 与鉴权信息(如 Authorization)的正确传递。
  5. 校验响应结果:按「先状态码、再业务码、后字段值」的顺序断言,同时校验响应结构、字段类型和关键业务数据是否符合预期。
  6. 回归与持续集成:把用例纳入版本管理与 CI 流水线,提交触发冒烟用例、定时执行全量回归,并输出可视化报告便于定位问题。

可以用下面的流程直观表示一次接口测试的执行过程:

读取接口文档 → 准备环境与数据 → 设计用例 → 构造请求 → 发送请求 → 断言响应 → 记录结果 → 回归/持续集成

五、接口测试主要测什么

  • 功能正确性:正常参数下返回的状态码、业务码和关键字段是否符合接口文档。
  • 参数校验:必填缺失、类型错误、长度越界、格式非法时是否返回合理的错误提示。
  • 边界与异常:空值、极值、特殊字符、依赖服务超时等场景下的处理是否健壮。
  • 权限与安全:未登录、无权限、越权访问、敏感信息泄露等风险是否被有效拦截。
  • 性能与稳定性:响应时间、并发能力、幂等性是否满足业务要求。

下面以「用户登录接口」为例,用表格形式给出一个接口测试用例的编写示例,覆盖正向与异常两类场景:

用例编号用例类型请求方法请求地址请求数据预期状态码预期业务码预期结果
TC-01正向POSThttps://api.example.com/api/login{"username": "tester", "password": "123456"}2000响应体包含 token 字段,登录成功
TC-02参数校验POSThttps://api.example.com/api/login{"username": "tester"}400非 0提示「密码不能为空」
TC-03异常POSThttps://api.example.com/api/login{"username": "tester", "password": "wrong"}200非 0提示「账号或密码错误」
TC-04权限GEThttps://api.example.com/api/user/info未携带 Authorization401非 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

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--