很多测试人员都做过接口测试,但是聊到接口还是会不太清楚。
网络协议:但凡要做接口测试,一定要懂网络协议。目前市场主流的网络协议HTTP1.1,Dubbo2,HTTP2.O(相对较少)
HTTP1.1网络协议:
- 搞懂打开浏览器访问一个URL会经历的步骤有哪些?(也就是搞懂了HTTP网络协议的基本交互流程)
- 解析URL,将域名解析为IP地址
- 与IP地址进行通信,建立TCP连接通道
- 从本地将请求发送至IP地址的服务端
- 服务端基于数据请求,进行对应的响应生成
- 将响应进行原路返回到用户端
- 基于前端进行数据的解析与渲染,生成可以被直接浏览的内容
- 关闭TCP连接通道
- 请求如何发送?
- 请求的结构:
- 请求行
- 请求头
- 请求体
- 请求发送的目标:
- 目标通过URL来进行区分
- URL全称统一资源定位符,作用就是用来区分不同的内容
- 请求方法:
- 每一个接口的请求方法都是固定的,只能通过定义好的请求方法来进行数据的发送
- 常见请求方法:GET/POST
- 所有接口本身所支持的请求方法都在接口定义的时候就已经定义好了。
- 请求数据:
- 请求的参数
- 请求规范:
- 都是在请求头中进行定义
- 请求额外数据的附加:
- 一般附加在请求头中
- 附加的数据一般都是cookie数据
- 请求的结构:
- 响应是如何生成与返回的?
- 响应的结构:
- 响应行
- 响应头
- 响应体
- 响应的状态码:三位数的一个数据
- 1xx 表示请求已接收,响应正在处理中
- 2xx 表示请求接收,响应已返回,一切正常(只是表示发送请求成本,生成响应成功。但是响应结果是否符合业务的预期结果,无法确定)
- 3xx 表示重定向,请求的目标地址转义到另一个地址
- 4xx 表示请求出现问题,404表示请求的地址不存在。400表示请求的参数有问题
- 5xx 表示服务器内部异常,500的状态码就很大概率是系统出现BUG
- 响应的cookie保存策略:
- 所有响应在生成的时候,会在响应头中定义到set-cookie字段
- 响应规范:
- 都是响应头中进行定义
- 响应文本:(一般要做业务层级的断言,都是基于响应文本来实现)
- 业务层级的接口响应结果。
- 响应的结构:
接口测试逻辑
所有的接口测试,都遵循一个公式:
- 准备测试数据
- 要清晰地知道接口的请求数据包含有哪些内容?
- 要清晰地知道这些数据从哪里获取?
- 模拟请求
- 要实现接口测试,必须从模拟请求开始
- 要清晰地知道请求的数据以什么样的形态进行下发(请求方法、请求数据格式、请求数据类型等相关的信息)
- 要清晰地知道请求的url
- 判断响应结果
- 要获取到对应的响应结果(可以是响应文本,可以是响应头,一切以业务来进行决定)
- 要有明确的判断对象(要知道什么内容才是你的判断点)
接口测试不需要等前后端联调结束,在后端开发完成的时候就可以介入接口测试了。虽然接口测试就是简单的三个步骤,但是,会需要因为情况而进行一些额外的拓展。包括但不限于Mock、数据库的数据关联等一系列内容。
相关详细讲解可以参考:接口定义+Http网络协议原理解析+Requests库+工具的接口测试……