本周开始学习接口测试相关知识,首先对接口测试基础知识点做一个总结,方便后期查阅与复习。主要内容有:
目录
一、接口测试概念
(一)接口概念
接口是指系统或组件之间的交互点,通过这些交互点可以实现数据的交互(数据交互的通道)
接口可分为:硬件接口和软件接口,这里只关注软件层面的接口
(二)接口类型
- 系统之间的接口:多个内部系统之间的交互,内部系统和外部系统之间的交互
- 程序内部的接口:方法与方法之间,模块与模块之间的交互
(三)接口测试
接口测试:是对系统或组件之间的接口进行测试,主要是校验数据的交换、传递和控制管理过程,以及相互逻辑依赖关系。
1、接口测试原理
模拟客户向服务器发送请求,服务器返回响应数据后,检查响应数据是否符合预期。
2、接口测试的特点
- 测试可以提前介入
- 可以发现一些页面操作发现不了的问题
- 低成本高效益
- 从用户的角度进行全面的检测
3、接口测试的实现方式
- 接口测试工具:JMeter、Postman
- 代码:Python+Requests
二、接口自动化测试
让程序或工具代替人工自动完成对接口进行测试的一种过程。
(一)http协议的特点
- 支持客户端/服务器模式
- 简单快速
- 灵活
- 无连接
- 无状态
(二)http协议的组成
- 请求:
- 响应:
(三)URL
http://www.itcast.cn:8080/news/index.html?uid=123&page=1
- 协议:常见的http、https、ftp
- 域名:也可以是ip地址
- 端口:8080,端口默认(http:80,https:443,ftp:21)
- 资源路径
- 查询参数
(四)HTTP请求
http请求由三部分组成,请求行、请求头、请求体
1、请求行
- 用来说明请求方法、要访问的资源及所使用的协议版本
- 常用请求方法
- get:获取数据
- post:新建数据
- put:修改数据
- delete:删除数据
- 其他请求方法(了解):
- head
- trace
- connect
- options
2、请求头
请求头紧接着请求行,请求头部由键值对组成,每行一对。请求头部通知服务器有关于客户端请求的信息,典型的请求头有:
- User-Agent:产生请求的浏览器类型
- Accept:客户端可识别的内容类型列表
- Content-Type:请求体数据的类型,常见的类型有:
- text/html:HTML格式
- text/plain:纯文本格式
- image/jpeg:jpg图片格式
- application/json:JSON数据格式
- application/x-www-form-urlencoded:form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据格式)
- multipart/form-data:在表单中进行文件上传时使用
3、请求体
- 请求体不在GET方法中使用,经常在POST、PUT方法中使用
- 请求体的数据可以是:表单数据、文本、XML、JSON
- 与请求数据相关的最常使用的请求头是Content-Type和Content-Length
(五)HTTP响应
http相应由三个部分组成,状态行、响应头、响应体
1、状态行
- 协议版本号、状态码、状态消息
- 状态码相应级别:
- 1XX:请求已接收,继续处理
- 2XX:成功,请求已被成功接收、理解、接受
- 200:服务器成功返回用户请求的数据
- 201:新建或修改数据成功
- 3XX:重定向,要完成请求必须进行更进一步的操作
- 4XX:客户端错误
- 401:用户没有授权,令牌、用户名、密码错误
- 403:用户有授权,但是访问被禁止
- 404:页面不存在
- 5XX:服务器端错误
2、响应头
描述服务器的基本信息,以及数据的描述,通过这些数据的描述信息,可以通知客户端如何处理响应数据。
3、响应体
响应的消息体,数据可以是普通文本、XML、JSON、HTML源码
三、接口规范
(一)传统接口风格
(二)RESTful接口
1、定义
一种架构风格、设计风格,不是标准,只是提供了一组设计原则和约束条件。
翻译过来是:(资源)表现层状态转化。如果一个架构符合REST原则,就称为RESTful架构。
2、RESTful接口风格
请求方法与状态码的对应:
3、RESTful架构特点
- 每个URL代表一种资源
- 客户端和服务器之间,传递这种资源的某种表现层
- 表现层(Representation):把资源具体呈现出来的形式,叫做它的表现层(Representation)。比如,文本可以用 txt 格式表现,也可以用 HTML 格式、XML 格式、JSON 格式表现,甚至可以采用二进制格式。
- 客户端通过四个HTTP动词,对服务端资源进行操作,实现“表现层状态转化”
- 常用的HTTP动词
- get:获取资源
- post:新建资源
- put:更新资源
- delete:删除资源
- 每发出一个请求,就代表了客户端和服务器的一次交互过程。HTTP协议,是一个无状态协议,即所有的状态都保存在服务器端。因此,如果客户端想要操作服务器,必须通过某种手段,让服务器端发生“状态转化”(State Transfer)。而这种转化是建立在表现层之上的,所以就是 “表现层状态转化”。
- 常用的HTTP动词
- 接口之间传递的数据最常用格式为json
四、接口测试流程
- 需求分析
- 依据需求文档
- API接口文档解析
- 由开发人员编写接口文档(API文档)
- 设计测试用例
- 执行测试
- 使用接口测试工具
- 代码实现
- 缺陷跟踪与管理
- 生成测试报告
- 接口自动化持续集成(可选)