一、认识接口测试
接口测试
接口:系统之间数据交互的通道。
-
硬件接口
-
软件接口
接口测试:基于不同的输入参数,校验接口响应数据与预期数据是否一致。
为什么要学接口测试?
-
提前介入测试、尽早发现问题
-
中级测试工程师必备技能
接口测试学什么?
-
接口测试用例设计
-
工具实现接口测试
-
代码实现接口测试
二、项目介绍
项目介绍
-
项目名称:客达天下
-
项目类型:销售管理系统 (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响应---状态行
位置:响应数据第一行
作用:描述服务器处理结果
内容:状态行由协议版本号、状态码、状态消息组成
状态码:三位数字组成,第一个数字定义响应类别
python
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
下载:
二、登录接口调式
获取验证码
python
需求:使用postman访问验证码接口,并查看响应结果
地址:
http://kdtx-test.itheima.net/api/captchaimage
实现步骤
1.设置请求方式
2.输入接口地址
3.点击发送请求
4.查看响应结果
登录
python
需求:
使用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.查看响应结果
总结
三、自动关联数据
问题:每次登录之前都需要手动复制验证码数据
思路:
自动关联数据
环境创建与选择
案例:使用自动关联技术,实现登录成功
需求:
python
1.验证码接口:/api/captchaimage
2.登录接口:/api/login
登录接口请求体uuid字段 -> 验证码接口返回 uuid字段
分析:
python
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项目登录接口用例设计
python
需求:
已注册正确的用户名和密码,登录成功
用户名或密码错误,登录失败,提示 "用户名或密码错误"
需求:
按照接口测试思路进行测试点分析
从测试点转化为测试用例
使用Postman进行接口测试
提取测试点
设计测试用例
步骤:
-
点击测试集中的 "Add folder" 添加文件夹管理测试用例
-
点击文件夹上的 "Add Request" 添加请求实现测试用例
总结
三、Postman断言
Postman断言介绍
作用:让Postman工具代替人工自动判定预期结果和实际结果是否一致。
用法:
Postman断言---响应状态码断言
模块名称:Status code:Code is 200
模块内容:
python
// 判断响应状态码是否等于 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" 添加请求实现测试用例
总结
二、查询课程列表
查询课程列表接口文档
提取测试点
设计测试用例
三、课程修改
课程修改接口文档
提取测试点
设计测试用例
四、课程删除
课程删除接口文档
提取测试点
设计测试用例