目录
接口测试
- 根据API文档编写接口测试用例
- 使用Postman 工具进行接口测试,熟练创建测试集、断言、关联、参数化及生成测试报告
- 使用python+Requests 封装接口测试框架,实现接口对象封装。测试用例编写、测试数据管理及生成
理论
-
分类
- 硬件
- 软降
-
概念:数据交互的通道
-
接口类型:
- 系统之间
- 淘宝与支付宝
- 系统内部
- 淘宝登录与订单系统
- 系统之间
-
接口测试
- 针对接口进行测试,主要测试数据的传递、交互、控制管理过程以及接口之间的
-
原理
- 模拟客户端建立连接
- 发送请求
- 服务器处理请求并相应
- 校验相应数据
-
特点
- 提前介入,提早发现BUG
- 发现页面操作发现不了的问题
- 成本低效益高(底层一个BUG能引发上层8个左右
- 不同于传统的单元测试,接口测试是从用户的角度对系统进行全检测
HTTP协议
超文本传输协议
-
url格式解析
-
协议部分:http、https、ftp
-
域名部分:www.xxx.com,也可以使用IP地址
-
端口号:8080,默认端口可以省略
- 默认端口(http 80/https 443/ftp 21
-
资源路径部分
- 图片、视频、音频、链接、接口等
-
查询参数部分
-
?:隔离URL主主体与参数部分内容
-
&:存在多个参数时,连接符
-
-
HTTP请求
-
请求行
- 请求方式 get、post、put、delete…
- get 查询数据
- post 新增数据
- put 修改数据
- delete 删除数据
- 资源路径
- 协议及版本
- 请求方式 get、post、put、delete…
-
请求头
- 主要以键值对形式存在
- 重点掌握Content-Type
- text/html:HTML格式
- test/plan:纯文本格式
- image/jpeg:JPG图片格式
- JSON
- x-www-from-urlencoded:表单
- form-data:表单中进行文件上传使用
-
请求体
- 内容形式:json、html、test
HTTP响应(报文
- 状态行
- 协议/版本 状态码(三位数组成
- 1XX:指示信息,表示请求已接收继续处理
- 2XX:成功–表示请求已被成功接收、理解、接受
- 3XX:重定向–要完成请求必须进行更进一步的操作
- 输入旧地址返回新地址
- 4XX:客户端错误–请求有语法错误或请求无法实现
- 5XX:服务器端错误–服务器未能实现合法请求
- 协议/版本 状态码(三位数组成
- 响应头
- 键值对形式存在
- 描述服务器相关信息
- 响应体
- 响应数据:XML、json、html
状态码 | 状态消息 | 动词 | 说明 |
---|---|---|---|
200 | OK | [GET] | 服务器成功返回用户请求的数据 |
201 | CREATED | [POST/PUT] | 用户新建或修改数据成功 |
202 | Accepted | [*] | 表示一个请求已经进入后台排队(异步任务) |
204 | NO CONTENT | [DELETE] | 用户删除数据成功 |
400 | Bad Request | [POST/PUT] | 客户端请求有语法错误,不能被服务器所理解 |
401 | Unauthorized | [*] | 表示用户没有权限(令牌、用户名、密码错误) |
403 | Forbidden | [*] | 表示用户得到授权(与401错误相对),但是访问是 被禁止的 |
404 | Not Found | [*] | 请求资源不存在,eg:输入了错误的URL |
406 | Not Acceptable | [GET] | 用户请求的格式不可得(比如用户请求JSON格式, 但是只有XML格式) |
410 | Gone | [GET] | 用户请求的资源被永久删除,且不会再得到 |
500 | INTERNAL SERVER ERROR | [*] | 服务器发生错误,用户将无法判断发出的请求是否成功 |
503 | ERROR | [*] | 服务器当前不能处理客户端的请求,一段时间后可能恢复正常 |
RESTful
REST:即(Representational State Transfer)的缩写。词组的翻译是"表现层状态转化"。如果一个架构符合REST原则,就称它为RESTful架构
是一种规范、不是标准或规定
-
示例:
- url:`协议://域名:端口号/资源路径/{资源集合}/{指定资源}
- 请求方法:get/post/put/delete
- 状态码:200/201/204
-
RESTful接口风格
- 对用户进行操作的相关接口,包括增删改查
- 接口之间传递的数据常用JSON
- 常用动词
- GET:从服务器获取资源(一项或多项)
- POST:在服务器新建一个资源
- PUT:在服务器更新资源(客户端提供改变后的完整资源)
- DELETE:从服务器删除资源
-
重点:
- 请求方法与状态码对应
- 查询:【get】【200】
- 新增:【post】【201】
- 修改:【put】【201】
- 删除:【delete】【204】
- 请求方法与状态码对应
流程
- 需求分析
- 主要依据需求文档
- 接口文档解析
- 一般是由开发人员编写接口文档(API文档)
- 设计测试用例
- 执行测试
- 使用接口测试工具实现
- 通过编写代码实现
- 接口缺陷管理与跟踪
- 生成测试报告
- 接口自动化持续集成(可选)
接口文档
- 基本信息
- 接口名称
- 请求方法
- 请求路径
- 接口描述
- 请求参数
- 请求头
- 请求体
- 请求参数名称、参数类型、是否必须、示例、备注
- 返回数据
- 不同情况的响应状态码
- 响应数据
- 包含响应数据名称、类型、是否必须、示例、备注
作用
- 便于前端开发和后端开发的合作
- 便于项目迭代或者人员迭代时,快速上手维护
- 便于测试尽早接入
设计的方法与思路
验证接口功能是否按照接口文档实现(输入+处理+输出)
输入:request 输出:respond
-
单接口测试
- 正向功能:通过性测试
- 仅必填参数
- 全部参数
- 参数组合
- 反向测试:异常测试
- 参数异常:无参、少参、多参、参数错误
- 数据异常:数据为空、长度不符、类型不符、错误数据
- 业务数据异常:结合业务功能考虑输出的各种异常返回情况
- 正向功能:通过性测试
-
多接口测试
- 业务场景测试(优先级:高)
- 将多个业务场景设计的接口进行组合测试
- 注意:接口调用的先后顺序即可
- 业务场景测试(优先级:高)
-
接口测试模板
- 编号
- 模块
- 标题
- 接口名称
- 接口地址
- 请求方式
- 请求头
- 数据类型
- 请求参数
- 预期结果
- 状态码
- 返回数据
- 实际结果
- 结论
Fiddler
Filters
1.第一项有三个选项,不做更改:
“No zone filter”
“Show Only Intranet Hosts”
“Show Only Internet Hosts”
2.第二个选项是只监控以下网址
“No Host Filter”不设置hosts过滤
“Hide The Following Hosts”隐藏过滤到的域名
“Show Only The Following Hosts”只显示过滤到的域名
“Flag The Following Hosts”标记过滤到的域名
postman
-
登录测试后会返回一个data
-
之后的信息更改 Authorization = Bearer XXX :Token
- xxx为data返回的数值
-
主要特点:
- 简单易用的图形用户界面
- 可以保存接口请求的历史记录
- 可以创建测试集collection,更有效的管理组织接口
- 可以在团队之间同步 接口数据
常见的数据传递格式
- 字符串 : url?username=123&passwd=123
- 表单:applocation/x-www-from-urlencoded
- json:applocation/json
高级用法
测试集管理
- 创建集合-new collection
- 创建目录-add folder
- 添加请求-add request
断言
- 特点:通