- 接口 :系统与系统之间(外部系统与内部系统或内部系统与内部系统)数据传递交互的通道
- 按范围划分 :
- 系统之间的接口 :多个系统内部或系统与外部系统间的交互
- 程序内部的接口 :方法与方法 模块与模块间交互
1.1 接口
- 接口测试概念 :对系统或组件之间的接口进行测试,检验传递数据和逻辑依赖关系的正确性
- 原理 :绕过前端界面,针对
服务器
进行测试,模拟客户端发送请求- 测什么 : 测服务器针对客户端请求,回发的响应数据与预期是否一致(人眼对比或断言).
- 特点 : 质量控制前移理念,发现页面操作潜在问题,低成本高收益,从用户角度对系统进行全面检测.
- 工具 : Postman Jmeter
- 代码 : python+request,java+httpClient
- 自动化接口测试 : 工具或代码模拟客户端发送请求给服务器,借助断言自动判断预期与实际是否一致.
1.2 协议
- HTTP协议 : 超文本传输协议,基于
请求与响应
模式的应用层
协议,互联网应用广泛.
URL(Uniform Resource Locater)格式
- 概念 : 统一资源定位符.
- 作用 : 定义一个数据资源
- URL组成 : 协议:// IP地址:端口号/资源路径?查询参数
- 协议 : http规定数据传输的方式(80).有s是加密安全(https是443)
- 域名(IP) : 网络环境中找到主机(唯一标识一台主机) —>://与协议分隔(如:tpshop-test.itheima.net)
- 端口(port) : 网络主机上标识进程(应用程序) —>:与域名隔开
- 资源路径 : 标识网络资源(文本 图片等)—>:/与端口分隔(index.php)
- 查询参数(可省) : 传递给资源路径对应的数据—>?与资源路径隔分,参数内部使用&隔分多个键值对(m=Home&c=User&a=do_login)
HTTP协议
- http请求协议 : 客户端发送给服务器时使用
- 规定数据传输的语法格式
- 特点 : 支持客户端/服务器模式 简单快速 灵活 无连接 无状态(三握四挥)
请求格式 :
- http请求方法:(大小写无所谓)
- 请求行(http请求第一行) : 方法 (空格) URL (空格) 协议版本
- GET:查询
- POST:添加数据(常用做登录)
- PUT:修改
- DELETE:删除
- 请求头 : 格式:key : value
- User-Agent:描述请求发送端的浏览器类型
- Content-Type:描述请求体数据类型
- application/json : json数据格式
- application/x-www-form-urlencoded : 请求体的数据类型为表单类型
- 空行 : 代表http请求头结束
- 请求体 :请求发送时携带的数据,Content-Type的值影响请求体的数据类型
- post和put(类似修改操作)有请求体
- get和delete没有
HTTP响应格式
- 服务器端,针对客户端发送的http请求,回发响应数据
- 规定回发给客户端的数据组织格式
- 响应行(状态行) :
- 协议版本(空格)状态码(空格)状态描述
- 状态码有三位数字中第一个数字定义了响应的级别
- 1xx : 指示信息-信息已经接受,等待继续处理
- 2xx : 成功–表示请求已被成功接受,处理,200,201
- 3xx : 重定向–待访问的资源需要重新指定路径访问
- 4xx : 客户端错误–请求有语法错误或请求无法实现,404,403
- 5xx : 服务器端错误–服务器未能实现合法的请求
- 状态码描述 : 一般与状态码 唯一对应,200–ok,404–not found
- 响应头 :
- 语法格式 : k:v
- Content-Type : 值为响应体中的数据类型
- Content-length : 响应体大小,可以不写,浏览器自动求,写就要准确.
- 空行 : 代表响应头结束
- 响应体 :
- 绝大多数情况不为空,请求成功回发数据,失败回发错误信息,是实际结果!!!
- 回发给客户端的消息内容,有html网页,xml,json等
- 几乎所有 响应协议都有响应体
1.3 Fiddler工具
1.4 传统风格接口(对用户进行操作的相关接口,包括增删改查)
- 请求方法,只是用get和post
- url 不唯一,同一个操作对应不同的url,可以在url中查看出是何操作
- 状态码的使用较单一,都是200
- 针对不同功能接口独立 同个功能可以有多个接口
1.5 RESTful风格接口(表现层状态转换)
- 特点 :
- 每一个url代表一种资源(url相同,但对应方法可能不同),看不出是啥操作
- 接收方法与请求协议一一对应
- 客户端通过四个http动词(get,post,put,delete)对服务器资源进行操作
- 最常用格式为json
接口API设计
特点:面向资源
- 请求API的URL定位资源
# 资源整合
/users //所有用户
# 单个资源
/users/1001 //id为1001的用户
- 通过http方法对资源增删改查
GET/users // 获取所有用户
POST/user/1001 // 修改id为1002的用户
区别
- 传统风格接口:get post方法,url不唯一,统一返回200
- RESTful接口:url唯一,定位资源,结合请求方法对应不同操作,返回状态码较灵活.
接口规范 | 请求方法 | URL | 状态码 |
---|---|---|---|
传统接口 | 通过get,post完成增删改查 | url定义资源和操作整合 | 均为200 |
Restful接口 | 使用http协议方法定义 | url只定义资源 | 通过http协议状态码定 |
1.6 接口测试流程
- 需求分析,产生需求文档(产品)
- 解析接口文档(开发编写接口文档)
- 产生测试用例(送审)
- 执行测试用例
- 工具 : postman,jmeter
- 代码 : python+requests+UnitTest
- 执行测试用例,提交跟踪缺陷
- 生成接口测试报告
- 接口自动化持续集成(可选)
什么是接口文档
由后端人员编写,描述接口信息的文档
,开发团队按接口文档进行开发操作
结构!!!
- 基本信息
- 资源路径(协议和域名在"系统信息中")
- 请求方法
- 接口描述
- 请求参数
- 请求头 : content-type描述请求体的数据类型
- 请求体:实现该接口所使用的数据及对应类型
- 返回数据
-
<