【接口测试】基础知识
目录
何为接口
概念
类型
何为接口测试
概念
原理
特点
接口自动化的定义
HTTP协议超文本传输协议
概念
特征
URL 统一资源定位符
http请求
http响应
传统风格的接口
RESTful接口
接口测试流程
接口文档
作用
展现形式
文档中每个接口信息的结构
测试的任务
接口测试用例
作用
测试角度
浏览器的开发者工具
功能性测试用例设计思路
接口用例字段
postman接口请求
何为接口
概念
系统与系统之间,组件与组件之间,数据传递交互的通道
类型
按协议划分:http、tcp、IP
按语言划分:C++、java、php
按范围划分:
- 系统之间:内部系统与内部系统;外部系统与外部系统
- 程序之间:方法与方法;函数与函数;模块与模块
何为接口测试
概念
对系统或组件之间的接口进行测试。校验传递的数据正确性和逻辑依赖关系的正确性!
原理
针对的测试目标 —— 服务器
怎么测:模拟客户端向服务器发请求
用什么测:
- 工具:fiddler、postman、jmter
- 代码:python + UnitTest框架 + Requests框架
- 测什么:测试服务器针对客户端请求,回发的响应数据是否与预期结果一致!
- 如何判断结果是否一致: 1.人眼对比 ;2.断言
特点
- 符合质量控制前移的理念
- 可以发现一些页面操作发现不了的问题
- 接口测试低成本高效益(接口可以实现自动化)
- 接口测试是从用户的角度对系统进行检测
接口自动化的定义
使用工具、代码代替手工,模拟客户端发送请求给服务器,通过断言自动判断预期和实际结果是否一致
HTTP协议超文本传输协议
概念
(HyperText Transfer Protocol)超文本传输协议,是一个基于请求与响应模式的、应用层的协议,也是互联网上应用最为广泛的一种网络协议。
特征
1. 支持客户端、服务器模式
2.简单快捷
3.灵活
4.无状态
5.无连接
URL 统一资源定位符
- 格式
⁕资源路径:标识网络资源(文件、图片、音视频、变量...)
⁕查询参数:传递给资源路径对应的数据。
http请求
作用:客户端(app、浏览器),发送请求给服务器时使用的协议 —— http请求协议。
请求行
- - http 请求方法:大小写均可。
- - GET:查询。 —— 没有请求体
- - POST:添加。(登录、添加时常用)
- - put: 修改。
- - delete: 删除。 —— 没有请求体
请求头:语法格式为键值对
- 1.User-Agent:描述 请求发送端的 浏览器类型。
- 2.Content-Type:描述 请求体 的 数据类型!
- - application/json: JSON数据格式
- - application/x-www-form-urlencoded: form表单数据
请求体
- - GET和DELETE 没有
- - PUT 和POST有 - 数据类型受 Content-Type 值影响。
http响应
状态行/响应行
- 协议版本
- 状态码:状态码有三位数字组成,第一个数字定义了响应类别
1××:指示信息-表示请求已接收,等待继续处理
2××:成功-表示请求已被成功接收,理解,接受。常见:200、201
3××:重定向-待访问的资源,需求重新指定路径访问。
4xx:代表客户端错误。常见:404、 403 5xx:服务器端错误-服务器未能实现合法的请求。
- 协议码描述
一般与状态码 唯一对应
200-ok; 404- file not found;403-没有权限
响应头
语法格式:k:v
Content-Type:值为 响应体 的数据类型。
Content-Length: 响应体的大小。可以不写,浏览器会自动求取。一旦写,必须准确
响应体:绝大多数不为空。 (请求成功:回发数据,失败:回发错误信息)
传统风格的接口
格式:操作-请求方式-URL-状态码
特点
- 请求方法,只使用 get 和 post 即可。
- URL 不唯一。同一个操作可以对应不同的 URL
- 状态码的使用较单一。200 最常见。
RESTful接口
操作-请求方式-URL-状态码
特点:
1. 每一个URL代表一种资源;
2. 客户端和服务器之间,传递这种资源的某种表现层; - 表现层:资源的不同表现形式(如:图片、文字表现同一个资源对象)
3. 客户端通过四个HTTP动词(GET、post、delete、put),对服务器端资源进行操作,实现"表现层状态转化";
4. 接口之间传递的数据最常用格式为JSON。
接口测试流程
工作场景
1. 分析需求,产生需求文档(产品)。 以下都是测试的工作
2. (开发产生接口文档)解析接口文档。
3. 产生接口测试用例(送审)。
4. 执行测试用例
- 工具:postman、jmeter、fidller
- 代码:python + Requests +UnitTest
5. 提交、跟踪缺陷。
6. 生成 测试报告。
7. (可选)接口自动化持续集成!
接口文档
作用
1. 能够让前端开发与后台开发人员更好的配合,提高工作效率。(有一个统一参考的文件)
2. 项目迭代或者项目人员更迭时,方便后期人员查看和维护
3. 方便测试人员进行接口测试
展现形式
- word 文档形式
- Excel 表格式形式
- pdf 文档形式(√)
文档中每个接口信息的结构
基本信息
- 资源路径(协议和域名在 “系统信息”中)
- 请求方法
- 接口描述
请求参数
- 请求头
- - Content-Type。描述请求体的数据类型!
- -Authorization:TOKEN。用户登录时会生成唯一标识的令牌,由bearer+空格+{{data}}组成。而TOKEN为令牌名。(每次登录令牌都会变的)
- 请求体:
- - 实现该接口使用的 数据及对应类型。
返回数据
- 状态码(状态行)
- 错误码(自定义状态码:码值和描述信息)
测试的任务
从文档中提取出HTTP请求报文所需信息, 按fiddler工具格式依次填入请求信息,并返回响应信息。 比较返回信息和文档中的预期结构是否一致,编写测试报告
接口测试用例
作用
1. 防止测试点漏测。条理清晰
2. 方便分配工作,评估工作量和时间
测试角度
功能性测试
业务场景功能
按照用户实际 使用场景,梳理 接口业务 场景。
组织业务场景时,一般只需做 正向 测试即可(与手工一致)。
一般建议用最少的 用例 覆盖最多的业务场景。
- 单功能:借助工具、代码。绕开前端界面,组织接口所需要的数据,展开接口测试--》手工测试中的单个业务模块,一般对应一个接口。
- - 登录业务 ——> 登录接口
- - 加入购物车业务 ——> 加入购物车接口
- - 订单业务 ——> 订单接口
- - 支付业务 ——> 支付接口
性能测试
- 响应时长
- 吞吐量
- 并发数
- 服务器资源使用率
安全测试
- 攻击方向-与测试无关
- 业务安全-测试方向
- 敏感数据是否加密,如密码
- SQL注入
浏览器的开发者工具
可以看到请求,响应报文,以及数据的传输内容
功能性测试用例设计思路
业务场景功能用例设计
- 以“员工管理“业务场景为例--》 员工管理列表;员工的增删改查
正向测试: 登录 —— 添加员工 —— 查询员工 —— 修改员工 —— 再次查询 —— 删除员工 —— 查询员工列表
单功能用例设计(测试数值和参数的正确与否)
- 参数值:和功能测试相同,分别从正向和反向方面测
- 参数
- 正向
必选参数:所有的 必选(必填)都包含。
组合参数:所有的 必选 + 任意一个或多个可选参数。
全部参数:所有的 必选 + 所有的 可选参数
- 反向
多参:预期结果为正确,因为后端会自动忽略多余的参数
少参:缺少一个或多个必选参数。
无参:没有必选参数。预计结果为稍等繁忙,而不是用户名或密码错误
错误参数:参数名输入错误。
接口用例字段
编号,用例名,模块,优先级,预设条件,请求方法,URL,请求头,请求体(将请求的数据输入数据库),预设条件(若文档中结果不全,则查看浏览器的开发则工具)
postman接口请求