接口测试课程
课程目标
--- 能够根据接口API文档编写接口测试用例
--- 能够使用Postman工具进行接口测试,并能够对大量接口用例进行管理、对接口响应结果进行断言、处理多接口的依赖及生成测试报告
--- 能够使用Python+Requests封装的接口测试框架,实现接口对象封装、测试用例编写、测试数据管理及生成测试报告
课程大纲
接口测试基础
1. 接口
接口可分为:硬件接口和软件接口;我们这里只关注软件层面的接口。
接口:是指系统或组件之间的交互点,通过这些交互点可以实现数据的交互。(数据交互的通道)
1.1 接口的类型
接口测试分类有许多种,按照范围划分:系统之间的接口和程序内部的接口
1.1.1 系统之间的接口:多个内部系统之间的交互,内部系统与外部系统之间的交互
1.1.2 程序内部的接口:方法与方法之间,模块与模块之间的交互
2. 接口测试
接口测试:是对系统或组件之间的接口进行测试,主要是校验数据的交换、传递和控制管理过程,以及相互逻辑依赖关系。
2.1 接口测试原理
模拟客户端向服务器发送请求,服务器接收请求后进行相应的业务处理,并向客户端返回响应数据,检查响应数据是否符合预期。
2.2 接口测试的特点
2.2.1 测试可以提前介入,提早发现Bug,符合质量控制前移的理念
2.2.2 可以发现一些页面操作发现不了的问题
2.2.3 接口测试低成本高效益(底层的一个Bug能够引发上层8个左右Bug,接口测试可以实现自动化)
2.2.4 不同于传统的单元测试,接口测试是从用户的角度对系统进行全面的检测
2.3 接口测试的实现方式
2.3.1 使用接口测试工具来实现(比如:JMeter、Postman)
2.3.2 通过编写代码来实现(比如:Python + Requests)
3. 接口自动化测试
3.1 概念
接口自动化测试:是让程序或工具代替人工自动的完成对接口进行测试的一种过程。
HTTP协议
1. HTTP协议介绍
HTTP:(HyperText Transfer Protocol)超文本传输协议,是一个基于请求与响应模式的、应用层的协议,也是互联网上应用最为广泛的一种网络协议
1.1 HTTP协议的特点
1. 支持客户端/服务器模式
2. 简单快速
3. 灵活
4. 无连接
5. 无状态
2. URL
URL:(Uniform Resource Locator)统一资源定位符,是互联网上标准资源的地址。HTTP使用URL来建立连接和传输数据。
URL格式
http://www.itcast.cn:8080/news/index.html?uid=123&page=1
协议部分:“http”,常见的协议有HTTP,HTTPS、FTP等
域名部分:“www.itcast.cn”,也可以使用IP地址作为域名使用
端口部分:“8080”,端口可以省略,默认端口(HTTP:80,HTTPS:443,FTP:21)
资源路径部分:“/news/index.html”
查询参数部分:“uid=123&page=1”,可以允许有多个参数,多个之间用“&”作为分隔符
3. HTTP请求
http请求由三部分组成,分别是:请求行、请求头、请求体
请求行
请求行用来说明请求方法、要访问的资源以及所使用的协议版本常用请求方法:
GET:从服务器获取资源(一项或多项)
POST:在服务器新建一个资源
PUT:在服务器更新资源(客户端提供改变后的完整资源)
DELETE:从服务器删除资源
其他请求方法(了解):
HEAD:请求获取由Request-URI所标识的资源的响应消息报头
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT:保留将来使用
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求
请求头
请求头紧接着请求行,请求头部由键值对组成,每行一对。 请求头部通知服务器有关于客户端请求的信息,典型的请求头有:
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: 在表单中进行文件上传时使用
请求体
请求体不在GET方法中使用,经常在POST、PUT方法中使用
请求体的数据可以是:表单数据、文本、XML、JSON
与请求数据相关的最常使用的请求头是Content-Type和Content-Length
4. HTTP响应
HTTP响应也由三个部分组成,分别是:状态行、响应头、响应体
状态行
状态行由协议版本号、状态码、状态消息三部分组成
状态码有三位数字组成,第一个数字定义了响应的类别:
1xx:指示信息--表示请求已接收,继续处理
2xx:成功--表示请求已被成功接收、理解、接受
3xx:重定向--要完成请求必须进行更进一步的操作
4xx:客户端错误--请求有语法错误或请求无法实现
5xx:服务器端错误--服务器未能实现合法的请求
响应头
响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理响应数据
响应体
响应体就是响应的消息体,数据可以是普通文本、XML、JSON、HTML源码
接口规范
1. 传统接口风格
对用户进行操作的相关接口,包括增删改查
2. RESTful
2.1 定义
一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。
REST:即(Representational State Transfer)的缩写。词组的翻译是"表现层状态转化"。如果一个架构符合REST原则,就称它为RESTful架构。
2.2 RESTful接口风格
2.3 RESTful架构特点
1. 每一个URL代表一种资源;
2. 客户端和服务器之间,传递这种资源的某种表现层;
3. 客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化";
4. 接口之间传递的数据最常用格式为JSON。
常用的HTTP动词有下面四个:
GET:从服务器获取资源(一项或多项)
POST:在服务器新建一个资源
PUT:在服务器更新资源(客户端提供改变后的完整资源)
DELETE:从服务器删除资源
接口测试流程
1. 接口测试流程
1. 需求分析
主要依据需求文档
2. 接口文档解析
一般是由开发人员编写接口文档(API文档)
3. 设计测试用例
4. 执行测试
使用接口测试工具实现
通过编写代码实现
5. 接口缺陷管理与跟踪
6. 生成测试报告
7. 接口自动化持续集成(可选)
接口文档解析
1. 接口文档介绍
1.1 什么是接口文档?
接口文档:又称为API文档,一般是由开发人员所编写的,用来描述系统所提供接口信息的文档。 大家都根据这个接口文档进行开发,并需要一直维护和遵守。
1.2 为什么要写接口文档?
1. 能够让前端开发与后台开发人员更好的配合,提高工作效率。(有一个统一参考的文件)
2. 项目迭代或者项目人员更迭时,方便后期人员查看和维护
3. 方便测试人员进行接口测试
2. 接口文档内容
一个规范的接口文档,要包含以下信息:
1 基本信息
接口名称、请求方法、请求路径、接口描述
2 请求参数
请求头
请求体(包含具体的请求参数名称、参数类型、是否必须、示例、备注)
3 返回数据
不同情况的响应状态码
响应数据(包含具体的响应数据名称、类型、是否必须、默认值、示例、备注)
2.1 接口文档示例
3. 接口文档解析案例
查看人力资源管理系统的接口文档,解析以下接口:
1. 登录
2. 添加员工
3. 查询员工
4. 修改员工
5. 删除员工
接口用例设计
1. 接口测试的测试点
2. 接口用例设计的方法与思路
功能测试:验证接口功能是否按照接口文档实现(输入+处理+输出)
a. 单接口测试:
*正向功能:(通过性测试)
仅必填参数
全部参数
参数组合