一、认识接口测试
接口测试
接口:系统之间数据交互的通道。
硬件接口
软件接口
接口测试:基于不同的输入参数,校验接口响应数据与预期数据是否一致。
为什么要学接口测试?
提前介入测试、尽早发现问题
中级测试工程师必备技能
接口测试学什么?
接口测试用例设计
工具实现接口测试
代码实现接口测试
二、项目介绍
项目介绍
项目名称:客达天下
项目类型:销售管理系统 (CRM)
项目特点:
前后端分离
功能通用性强
熟悉项目
项目角色:销售人员、销售经理、财务人员等
项目业务:线索管理、合同管理等
项目技术:
待测接口
需求:完成管理业务及相关单位模块接口测试。
合同管理业务 登录 添加课程 上传合同 新增合同 课程管理模块 添加课程 修改课程 查询课程 删除课程
接口测试流程
三、HTTP协议
URL
URL:是互联网上标准资源的地址,一般称为统一资源定位符。
组成:协议://hostname[:port]/path/ [?查询参数1 & 查询参数2]
示例:
HTTP协议
HTTP:超文本传输协议,基于请求与响应的应用层协议
作用:规定了客户端与服务器之间信息传递规范,是二者共同遵守的协议。
组成:
HTTP请求:定义请求数据格式
请求行、请求头、请求体
HTTP响应:定义响应数据格式
状态行、响应头、响应体
HTTP —请求行
位置:请求数据第一行
作用:说明需求方法、访问的资源、协议版本
常用请求方法:
GET:从服务器获取资源
POST:在服务器新建一个资源
PUT:在服务器更新资源
DELETE:从服务器删除资源
HTTP请求—请求头
位置:请求数据第二行到空白行之间
作用:通知服务器客户端请求信息
特点:请求头部由键值对组成,每行一对
Content-Type:请求体数据类型
text/html:HTML格式
image/jpeg:jpg图片格式
application/json:JSON数据格式
application/x-www-form-urlencoded:表单默认的提交数据格式
multipart/form-data:在表单中进行文件上传时使用
HTTP请求—请求体
位置:空白行之间的内容
作用:传输数据实体
注意:请求体常在POST、PUT方法中使用
常配合的请求头:Content-Type和Content-Length
请求报文中可以没有请求体数据
HTTP响应—状态行
位置:响应数据第一行
作用:描述服务器处理结果
内容:状态行由协议版本号、状态码、状态消息组成
状态码:三位数字组成,第一个数字定义响应类别
1XX:提示信息 2XX:成功 3XX:重定向 4XX:客户端错误 5XX:服务端错误
HTTP响应—常见的响应状态码
HTTP响应—响应头
位置:第二行开始到空白行之间
作用:描述客户端要使用的一些附加信息
特点:响应头由键值对组成,每行一对
HTTP响应—响应体
位置:响应数据空白行之后
作用:服务器返回的数据实体
特点:有图片、json、xml、html等多种类型
案例:
四、接口规范
接口规范
作用:让前端开发与后台接口开发人员更好的配合,提高工作效率
常见接口规范:
传统接口风格
RESTful接口风格
传统接口风格
示例:对用户进行操作的相关接口,包括增删改查
RESTful
RESTful:一种网络应用程序的设计风格和开发方式,提供了一组设计原则和约束条件。
示例:
特点:
- 请求 API 的 URL 用来定位资源
- 通过标准HTTP方法对资源进行增删改查操作
- 利用HTTP状态码返回状态信息
区别
Postman测试步骤
一、合同新增业务
二、找业务路径
三、解析接口文档
四、编写接口测试用例
总结
Postman使用
一、Postman介绍
介绍:Postman是一款接口调试工具
特点:支持 Mac、Windows 和 Linux
下载:
https://www.getpostman.com
二、登录接口调式
获取验证码
需求:使用postman访问验证码接口,并查看响应结果 地址: http://kdtx-test.itheima.net/api/captchaimage 实现步骤 1.设置请求方式 2.输入接口地址 3.点击发送请求 4.查看响应结果
登录
需求: 使用Postman访问验证码接口,并查看响应结果 说明: 地址:http://kdtx-test.itheima.net/api/login 方法:post 请求数据: 请求头:Content-Type:application/json 请求体:["username": "admin","password": "admin 123","code":"2"," uuid":"验证码接口返回结果中的数据值"] 实现步骤: 1.设置请求方式 2.输入接口地址 3.点击发送请求 4.查看响应结果
总结
三、自动关联数据
问题:每次登录之前都需要手动复制验证码数据
思路:
自动关联数据
环境创建与选择
案例:使用自动关联技术,实现登录成功
需求:
1.验证码接口:/api/captchaimage 2.登录接口:/api/login 登录接口请求体uuid字段 -> 验证码接口返回 uuid字段
分析:
1.验证码接口响应体中提取uuid var jsonData = pm.response.json(); 2.设置环境变量保存uuid pm.environment.set("var_name",value); 3.登录接口引用uuid 请求参数中引用: {{var_name}}
总结
接口调式
一、添加课程接口调试
二、上传合同接口调试
Postman调试合同上传接口
三、新增合同接口调试
添加合同接口调试
注意:
测试数据中的合同编号 contracNo 必须唯一。
查询合同列表接口调试
总结
Postman进阶
一、批量执行
Postman批量执行
作用:通过运行测试集的方式批量运行测试用例
步骤:
点击测试集中的 "Run" 按钮,批量运行测试用例
弹出 Collection Runner窗口,点击运行按钮
查看测试结果
二、登录接口测试
案例:完成 KDTX项目登录接口用例设计
需求: 已注册正确的用户名和密码,登录成功 用户名或密码错误,登录失败,提示 "用户名或密码错误" 需求: 按照接口测试思路进行测试点分析 从测试点转化为测试用例 使用Postman进行接口测试
提取测试点
设计测试用例
步骤:
点击测试集中的 "Add folder" 添加文件夹管理测试用例
点击文件夹上的 "Add Request" 添加请求实现测试用例
总结
三、Postman断言
Postman断言介绍
作用:让Postman工具代替人工自动判定预期结果和实际结果是否一致。
用法:
Postman断言—响应状态码断言
模块名称:Status code:Code is 200
模块内容:
// 判断响应状态码是否等于 200 pm.test("status code is 200", function() { pm.response.to.have.status(200); }); pm.test() 参数1:字符串-测试断言名称 参数2:回调函数-具体断言语句 pm.response.to.have.status(code:Number); // 判断是否包含指定的状态码
Postman断言—包含指定字符串断言
模块名称:Response body: Contains string
模块内容:
Postman断言—JSON断言
模块名称:Response body: JSON value check
模块内容:
总结
四、参数化
Postman参数化介绍
场景:测试脚本中仅测试数据不一样,使用参数化比提高脚本复用。
步骤:
测试数据保存在数据文件单独维护
引用数据文件实现脚本循环调用
Postman参数化实现
准备数据文件
引用数据文件数据
Postman参数化实现
选择数据文件:运行测试集时选择数据文件
总结
课程项目实践
一、课程添加
课程添加接口文档
1.提取测试点
2.设计测试用例
3.使用Postman进行接口测试
步骤:
点击测试集中的 "Add folder" 添加文件夹管理测试用例
点击文件夹上的 "Add Request" 添加请求实现测试用例
总结
二、查询课程列表
查询课程列表接口文档
提取测试点
设计测试用例
三、课程修改
课程修改接口文档
提取测试点
设计测试用例
四、课程删除
课程删除接口文档
提取测试点
设计测试用例