接口
概念
- 接口就是:系统与系统之间,组件与组件之间,系统与组件之间进行数据交互的通道。【服务器与客户端之间的数据交互】
接口的类型
-
按协议划分:http,tcp,ip
-
按语言划分:c++,java,php
-
系统之间的接口:比如服务器之间有用户系统,订单系统,商品系统,各个系统之间再进行交互的接口。
-
程序之间的接口:方法与方法之间,模块与模块之间,函数与函数之间的接口
接口测试
概念
是对系统和组件之间的接口进行测试,主要校验传递的数据正确性和逻辑依赖关系的正确性。
原理
- 接口测试,主要针对的测试目标是—服务器
- 怎么测?
- 模拟客户端向服务器发送请求
- 用什么测?
- 工具:fiddler,postman,jemeter
- 代码:python+unittest框架+Requests框架
- 测什么?
- 测服务器针对客户端,回复的响应数据是否与预期结果是否一致!
特点
- 测试提前介入
- 发现界面操作发现不了的问题
- 接口测试低成本高收益
- 接口测试是在用户的角度进行测试
实现方式
- 工具:fiddler,postman,jemeter
- 代码:python+unittest框架+Requests框架
什么是自动化接口测试
- 让工具或者程序模拟客户端发送请求给服务器,借助断言自动判断预期结果和实际结果是否一致
HTTP协议
协议:就是规则。要求通信的双方必须要严格遵守!
HTTP协议简介
超文本传输协议,【超出文本以外的传输】互联网上最为广泛的一种网络协议,基于请求与响应的应用层协议。
IP的作用类似于身份证号,在网络环境中唯一标识一台主机。
HTTP协议的特点
- 支持客户端服务器模式
- 简单快捷
- 灵活
- 无连接
- 无状态
URL 格式
URL的作用是唯一找到数据资源,HTTP使用URL来建立连接和传输数据
http://www.itcast.cn:8080/news/index.html?uid=123&page=1
-
协议部分:“http",常见的协议有http,https,ftp等
-
域名部分(IP):”www.itcast.cn“,也可以使用IP地址作为域名使用。
-
端口部分(port):”8080“,端口可以忽略,默认端口(HTTP:80,HTTPS:443,FTP:21)
-
资源路径部分:”/news/index.html“
-
查询参数部分:”uid=123&page=1“,可以允许有多个参数,多个之间用&作为分隔符
HTTP请求
- 客户端(app,浏览器),发送请求给服务器时,使用的协议----http请求协议
- 规定发送给服务器的数据传输的语法格式
整体格式
-
请求行:http请求的第一行:请求方法(空格)URL(空格)协议版本
-
请求头:语法格式:key:values【键值对】
- User-Agent:描述请求发送端的浏览器类型
- Content-Type:描述请求体的数据类型!
-
空行:代表http请求头结束,请求体开始
-
请求体:请求发送携带的数据,数据类型:Content—type
- post和put有请求体
- get和delete没有请求体
fiddler抓包验证
请求行
- 请求方法是重点【类似于数据库的增删改查】(大小写无所谓)
- post:增加【登录,注册】
- delete:删除
- put:修改
- get:查询
请求头
- 语法格式:k:v
- User-Agent:产生请求的浏览器类型
- Content-Type:请求体数据的类型
- application/json:JSON数据格式
- application/x-www-form-urlencoded:form表单数据
请求体
- 数据值的组织形式受上面的Content-type决定
- GET,DELETE没有请求体
- POST,PUT有请求体
HTTP响应
服务器端针对客户端发送的数据进行响应回复,回发数据–HTTP响应。
规定回发给客户端的数据组织格式。
整体格式
-
响应行(状态行):协议版本(空格)状态码(空格)状态描述
-
响应头:语法格式:K:v
- content-type:描述的是响应体中的数据类型
-
空行:响应头结束,响应体开始
-
响应体(绝大多数不为空)【请求成功:回发数据,请求失败:回发错误信息)
- 数据类型受Content-type值影响
状态行
-
状态码:
- 1xx:代表指示信息,表请求已经被接受,等待继续处理
- 2xx:代表请求成功被处理,接受。常见:200,201
- 3xx:重定向:待访问的资源,需要重新指定路径访问
- 4xx:代表客户端错误,常见404【请求文件不存在】,403【请求文件存在,但是拒绝访问,没有访问的权限】
- 5xx:服务器端错误
-
状态码描述:一般与状态码唯一对应。200—ok,404----file not found
响应头
- 语法格式:k:v
- Content-Type:响应体数据的类型
- Coontent-length:响应体的大小,可以不写,但是要写,必须要准确
响应体
- 回发给客户端的消息内容。常见html网页,xml,json文件
传统风格接口
只需要post和get就可以了,URL不唯一,同一个操作可以对应不同的URL。
RESTful风格接口
RESTful接口特点
- 每一种URL代表一种资源
- 客户端和服务器之间,传递这种资源的某种表现层
- 表现层:数据的不同表现形式(如:图片,文字表现用一个数据对象)
- 客户通过四个http动词,对服务器端资源进行操作,实现“表现层状态转化”
- 传递之间常用格式为JSON
接口测试流程
1.需求分析【产品写需求文档】
- 主要依据需求文档
2.接口文档解析
- 一般有开发人员编写接口文档(API文档)
3.设计接口测试用例
4.执行测试
- 使用接口测试工具实现
- 通过编写代码实现
5.接口缺陷管理与跟踪
6.生成测试报告
7.接口自动化持续集成(可选)
接口文档
什么是接口文档
由开发人员编写,描述接口信息的文档,开发团队按接口文档进行开发工作,并要一直维护遵守。
作用
- 能够让前端和后端人员更好的配合,提高工作效率。
- 项目迭代和项目人员更换时,方便后期人员查看和维护
- 方便测试人员进行接口测试
展现形式
- word
- excel
结构
-
基本信息
- 资源路径(协议和域名在“系统信息”中)
- 请求方法
- 接口描述
-
请求参数
-
请求头
- content-type(描述请求体的数据类型)
-
请求体
- 实现该接口使用的数据及对应类型
-
-
返回数据
- 成功:状态码200
- 失败:错误码(自定义状态码)
- 码值
- 描述信息
接口文档解析
-
接口文档的解析本质:从接口文档中,找出http请求的数据信息请求方法
- 主要包含:请求行
- 请求头
- 请求体
- 响应状态码和描述
-
以登录接口为例
- 请求方法:POST
- URL:把基本信息的path加在系统信息的系统路径后面。
- 请求头:content-type:application/json
- 请求体:{”mobile“:“”,“password”:“”}
- 错误码
- 10000:操作成功
- 20001:用户名或密码错误
- 99999:抱歉,系统繁忙,请稍后重试
- 错误码