文章目录
(一)接口及接口测试概念
一、接口
(接口可分为:硬件接口和软件接口。我们这里只关注软件接口)
接口:是指系统或组件之间的交互点,通过这些交互点可以实现数据的交互。(数据交互的通道)
1.1 接口的类型
接口测试分类有许多种,
按照范围划分:系统之间的接口和程序内部的接口。
- 系统之间的接口:多个内部系统之间的交互,内部系统与外部系统之间的交互。
- 程序内部的接口:方法与方法之间,模块与模块之间的交互。
二、接口测试
接口测试:是对系统或组件之间的接口进行测试,主要是校验数据的交换、传递和控制管理过程,以及相互逻辑依赖关系。
2.1 接口测试原理
模拟客户端向服务器发送请求,服务器接收请求后进行相应的业务处理,并向客户端返回响应数据,检查响应数据是否符合预期。
- 工具:fiddler、postman、jmeter
- 代码:python + UnitTest 框架 + Requests 框架
2.2 接口测试的特点
- 测试可以提前介入,提早发现 Bug,符合质量控制前移的理念。
- 可以发现一些页面操作发现不了的问题
- 接口测试低成本高效益(底层的一个 Bug 能够引发上层 8 个左右 Bug,接口测试可以实现自动化)
- 不同于传统的单元测试,接口测试是从用户的角度对系统进行全面的检测。
2.3 接口测试的实现方式
- 使用接口测试工具来实现(比如:JMeter、Postman)
- 通过编写代码来实现(Python + Requests)
(二)HTTP 协议
一、HTTP 协议介绍
HTTP(Hyper Text Transfer Protocol):超文本传输协议,是一个基于请求与响应模式的、应用层的协议,也是互联网上应用最为广泛的一种网络协议。
1.1 HTTP 协议的特点
- 支持客户端 / 服务器模式
HTTP 协议采用请求-响应模型,客户端(如浏览器)发起请求,服务器接收并处理请求后返回响应。这种模式清晰划分了功能边界,便于分布式系统的开发和维护。 - 简单快捷
HTTP 协议设计简单,请求方法(如 GET、POST)和状态码(如 200、404)易于理解。报文采用纯文本格式,可读性强,减少了通信复杂性,提高了传输效率。 - 灵活
HTTP 允许传输任意类型的数据,通过 Content-Type 头部字段标识资源类型(如文本、图片、视频)。支持扩展头部字段和自定义方法,适应不同应用场景的需求。 - 无连接
每次 HTTP 通信完成后立即断开连接,节省服务器资源。现代通过持久连接(如 HTTP/1.1 的 Keep-Alive)优化性能,但默认仍保持无连接特性。 - 无状态
协议不记录之前的请求信息,每个请求独立处理。虽提高了可靠性,但不利于会话管理,需借助 Cookie、Session 或 Token 等技术实现状态保持。
二、URL
URL(Uniform Resource Locator):统一资源定位符,是互联网上标准资源的地址。
HTTP 使用 URL 来建立连接和传输数据。
URL 格式
- 协议
- 域名
- 端口
- 资源路径
- 查询参数
三、HTTP 请求
http 请求由三部分组成,分别是:请求行、请求头、请求体。
- 请求行:http 请求第一行。请求方法(空格)URL(空格)协议版本
- 请求头:语法格式:
k:v
– User-Agent:请求发送端的浏览器类型
– Content-Type:请求体的数据类型 - 空行:代表 http 请求投结束。
- 请求体:请求发送时携带的数据。数据类型 Content-Type 的值。
请求方法:
- GET:从服务器获取资源(一项或多项)
- POST:在服务器新建一个资源
- PUT:在服务器更新资源(客户端提供改变后的完整资源)
- DELETE:从服务器删除资源
四、HTTP 响应
- 响应行(状态行):协议版本(空格)状态码(空格)状态描述
- 响应头:
k:v
- 空行:代表响应头结束
- 响应体:绝大多数不为空。
(请求成功:回发数据。失败:回发错误信息)
▲ 状态码:
- 1xx:代表指示信息。表请求已经被接收,等待继续处理。
- 2xx:代表请求成功被处理、接收。常见:200、201。
- 3xx:重定向,待访问的资源,需求重新指定路径访问。
- 4xx:代表客户端错误。常见:404、403。
- 5xx:服务器端错误。
(四)接口测试流程
-
需求分析
主要依据需求文档 -
接口文档解析
一般是由开发人员编写接口文档(API 文档) -
设计测试用例
-
执行测试
使用接口测试工具实现
通过编写代码实现 -
接口缺陷管理与跟踪
-
生成测试报告
-
接口自动化持续集成(可选)
接口文档结构
-
基本信息
– 资源路径(协议和域名在“系统信息”中)
– 请求方法
– 接口描述 -
请求参数
请求头:Content-Type
请求体 -
返回数据
成功:状态码 200
失败:错误码(自定义状态码)