功能测试从页面发起请求进行测试,接口测试可以借助工具或代码直接将数据发送到服务端进行测试。
功能测试和接口测试对应的时间
接口测试的流程
URL的组成
一、HTTP协议讲解
HTTP:超文本传输协议,基于请求与响应的应用层协议
作用:规定了客户端与服务器之间信息传递规范,是二者共同遵守的协议。
组成:
HTTP请求:定义请求数据格式:请求行、请求头、请求体
HTTP响应:定义响应数据格式:状态行、响应头、响应体
1.1、HTTP请求
1.1.1请求行
位置:请求数据第一行
作用:说明请求方法、访问的资源、协议版本
常用请求方法:
GET:从服务器获取资源
POST:在服务器新建一个资源
PUT:在服务器更新资源
DELETE:从服务器删除资源
1.1.2、请求头
位置:请求数据第二行到空白行之间
作用:通知服务器客户端请求信息
特点:请求头部由键值对组成,每行一对
Content-Type:**决定请求体数据类型 **
text/html:HTML格式
image/jpeg:jpg图片格式
application/json:JSON数据格式
application/x-www-form-urlencoded: 表单默认的提交数据格式
multipart/form-data:在表单中进行文件上传时使用
1.1.3、请求体
位置:空白行之后的内容
作用:传输数据实体
注意:请求体常在POST、PUT方法中使用
常配合的请求头: Content-Type和Content-Length
1.2、HTTP响应
1.2.1、状态行
位置”响应数据第一行
作用“描述服务器处理结果
内容”状态行由协议版本号、状态码、状态消息组成
状态码:三位数字组成,第一个数字定义响应类别
1XX:指示信息
2XX:成功
3XX:重定向
4XX:客户端错误
5XX:服务端错误
1.2.2、响应头
位置:第二行开始到空白行之间
作用:描述客户端端要使用的一些附加信息
特点:响应头由键值对组成,每行一对
1.2.3、响应体
位置:响应数据空白行之后
作用:服务器返回的数据实体
特点:有图片、json、xml、html等多种类型
二、接口规范
作用:让前端开发与后台接口开发人员更好的配合,提高工作效率
RESTful:一种网络应用程序的设计风格和开发方式,提供了一组设计原则和约束条件。
特点:请求API的URL用来定位资源;通过标准HTTP方法对资源进行增删改查操作;利用HTTP状态码返回状态信息。
RESTful和传统风格的区别
三、Postman实现单个接口测试
问题:拿到一个项目之后,我们是先测业务流程还是先测单模块(接口)?
答案:先测试业务流程,确保核心功能正常。
3.1、针对“合同新增业务”设计接口测试用例
如何测试业务接口?
根据业务流程图梳理业务路径;
设计测试用例覆盖每一条业务路径
3.1.1、业务流程梳理
业务流程图如下:
合同新增业务流程如下:
3.1.2、解析接口文档示例
为什么要进行接口文档解析?
熟悉接口信息,为设计接口用例准备
接口API文档:一般由后端开发编写、用来描述接口信息的文档
如何进行接口文档解析?
1、分析接口之间的依赖关系
2、分析接口请求(如:URL、请求方法、请求头、请求参数类型、请求参数等)
3、分析接口响应(如:响应状态码、响应数据等)
根据接口文档的信息即业务的执行流程,可以给出新增合同成功的测试用例。这七个接口就相当于完成新增合同业务的正向流程。
3.2、登录接口调式——获取验证码
1、需求:使用Postman访问验证码接口,并查看响应结果。
2、地址:http://kdtx-test.itheima.net/api/captchalmage
3、请求方法:Get
4、实现步骤:设置请求方式;输入接口地址;点击发送请求;查看响应结果。
如下图所示:
3.3、登录接口调试——登录
1、需求:使用Postman访问验证码接口,并查看响应结果。
2、地址: http://kdtx-test.itheima.net/api/login
3、请求方法:Post
4、请求数据:
请求头: Content-Type: application/json
请求体:{"username":"manager","password","123456","code","2","uuid":"验证码接口返回结果中的数据值"}
5、实现步骤:设置请求方式;输入接口地址;设置请求数据;点击发送请求;查看响应结果
如图所示:
3.4、如何使用Postman发送请求并查看响应结果
1、设置请求方法
2、设置URL
3、设置请求头
4、设置请求数据
5、点击Send发送请求
6、查看响应状态码
7、查看响应体数据
3.5、Postman自动关联
在3.2和3.3节中的操作,我们能发现以下问题,问题:每次登录之前都需要手动复制验证码数据(uuid)。
可以使用以下思路解决该问题
关于公共容器的实现,postman使用的是环境变量,如下所示:
切换到QA之后,就可以使用环境里面的数据
案例分析:
需求:
1、验证码接口: /api/captchalmage
2、登录接口: /api/login
3、登录接口请求体uuid字段---》验证码接口返回uuid字段
分析:
1、验证码接口响应体中提取uuid
2、设置环境变量保存uuid
3、登录接口引用uuid
实现:
第一步,在获取验证码接口输入以下代码,将uuid数据保存到环境变量
第二步,在登录接口获取uuid,直接在请求体中使用{{uuid}},即可引用环境变量中保存的uuid
总结
Postman自动关联解决了什么技术问题?
接口之间需要自动传递数据。Postman自动关联实现思路:
1、提取关联数据:var jsonData = pm.response.json()
2、保存关联数据:pm.environment.set("变量名", jsonData.属性)3、引用关联数据:{{变量名}}
3.6、课程添加接口调试
接口信息:
URL:http://kdtx-test.itheima.net/api/clues/course
方法:Post
请求数据:
请求头:{"Content-Type":"application/json","Authorization":"xxx"}
请求体:{"name":"测试开发提升课01","subject":"6","price":899,"applicablePerson":"2","info":"测试开发提升课01"}
如图所示:
设置请求方式,URL,请求体
添加课程接口需要登录接口响应的token值,因此需要通过Postman自动关联技术,将token值写入环境变量。
在请求头中引用token
3.7、上传合同接口调试
接口信息:
URL:http://kdtx-test.itheima.net/api/common/upload
方法:Post
请求数据:
请求头:{"Content-Type":"multipart/form-data","Authorization":"xxx"}
请求体:{"file":"合同文件"}
思考:如何提交multipart/form-data数据?(multipart/form-data:多消息体数据,可以有文字,可以有文件)
如图所示:
设置请求方式,URL,请求头,对于multipart/form-data格式在Postman中不需要手动设置,选对请求体中的位置即可。
在Body中选择 form-data
总结:
Postman如何提交multipart/form-data请求数据?
1、设置请求方法2、设置URL
3、设置请求头
4、设置请求数据:[body -> form-data -> file选择上传文件
5、点击Send发送请求
6、查看响应状态码
7、查看响应体数据
3.8、新增合同接口调试
接口信息:
地址:http://kdtx-test.itheima.net/api/contract
方法:Post
请求数据:
请求头:{"Content-Type":"application/json","Authorization":"xxx"}
请求体:{"name":"测试888","phone":"13612345678","contractNo":"HT10012003","subject":"6","courseld":" 99","channel":"0","activityId":77,"fileName":"xxx"}
设置请求方式,URL,请求头
fileName来自于合同上传接口的响应数据,因此需要通过Postman自动关联技术将fileName写入环境变量。
设置请求体数据:
3.9、查询合同列表接口调试
接口信息:
地址:http://kdtx-testitheima.net/api/contract/list
方法:Get
请求数据:
请求头:{"Authorization":"xxx"}
查询参数:"phone"="13612345678
思考:如何提交查询参数?
设置请求方式,URL,请求头
方式一:通过url中拼接查询参数
方式二:在Postman的Params中添加
总结:
Postman如何提交查询参数?
设置在URL中
设置在Params区域
3.10、Postman批量执行实现合同新增成功用例
作用:通过运行测试集的方式批量运行测试用例
步骤:
1、点击测试集中的“Run”按钮,批量运行测试用例;
2、弹出Collection Runner窗口,点击运行按钮;
3、给出测试结果。
四、针对登录接口进行详细测试
4.1、接口用例设计思路
单接口测试:
正向测试:1、必填参数,P2;2、全部参数,P2。
逆向测试:1、参数数据为空,P3;2、参数类型不符,P3;3.参数长度不符,P3;4.业务规则不符,P3。
4.2、项目登录接口用例设计
需求:
已注册正确的用户名和密码,登录成功
用户名或密码错误,登录失败,提示"用户名或密码错误"
要求:
1、按照接口测试思路进行测试点分析
2、从测试点转化为测试用例
3、使用Postman进行接口测试
4.2.1、提取测试点
4.2.2、设计测试用例
以登录成功,登录失败(用户名为空),登录失败(用户名不存在)
ID模块优先级用例名称接口名称前置条件请求url请求方法请求头请求参数类型请求参数预期结果KDTX-login-001登录P2登录成功登录1、获取验证码成功/api/loginPOST{"content-Type":"application/json"}json{
"username":"manager",
"password","123456",
"code","2",
"uuid":"a5762bc30ec74055a58dba2c63b01087"
}①响应状态码:200
②响应数据:
登录成功:{"msg":"操作成功","code":200,"token":
"xxxxxx"}KDTX-login-002登录P3登录失败(用户名为空)登录1、获取验证码成功/api/loginPOST{"content-Type":"application/json"}json{
"username":"",
"password","123456",
"code","2",
"uuid":"a5762bc30ec74055a58dba2c63b01087"
}①响应状态码:200
②响应数据:
用户名或密码错误:{“msg":"用户名或察码错误”,"code": 500}KDTX-login-003登录P3登录失败(未注册的用户名)登录1、获取验证码成功
2、用户名未注册/api/loginPOST{"content-Type":"application/json"}json{
"username":"manager_auto",
"password","123456",
"code","2",
"uuid":"a5762bc30ec74055a58dba2c63b01087"
}①响应状态码:200
②响应数据:
用户名或密码错误:{“msg":"用户名或察码错误”,"code": 500}
4.2.3、使用Postman进行接口测试
步骤:
1、点击测试集中的“Add folder”添加文件夹管理测试用例
2、点击文件夹上的“Add Request”添加请求实现测试用例
以登录成功示例
前置条件获取验证码成功,获取验证码接口放入登录文件夹
在登录接口中引用uuid2
比较预期结果与响应结果是否一致
总结
如何针对单个接口设计测试用例?
正向:必填参数、全部参数 逆向:空、类型错误、长度错误、规则不符
五、Postman断言
Postman断言:让Postman工具代替人工自动判定预期结果和实际结果是否一致。
用法:
5.1、 Postman断言一一响应状态码断言
模板名称:Status code: Code is 200
模板内容:
5.2、Postman断言--包含指定字符串断言
模板名称:Response body:Contains string
模板内容:
5.3、Postman断言——JSON数据断言
模板名称:Response body:JSON value check
模板内容:
5.4、案例测试
针对KDTX项目登录成功接口用例完成断言设置
需求及分析:
1、断言响应状态码为200
2、断言响应数据中包含'成功'
3、断言JSON数据中msg值为'操作成功'
postman设置:
总结:
1、断言的作用是什么?
让工具代替人工自动判断预期结果和实际结果是否一致2、Postman常见断言方式有哪些?
响应状态码断言包含字符串断言 JSON数据断言
六、Postman参数化
场景:测试脚本中仅测试数据不一样,使用参数化提高脚本复用。
步骤:
1、测试数据保存在数据文件单独维护;
2、引用数据文件实现脚本循环调用。
6.1、Postman参数化实现
准备数据文件
引用数据文件数据
选择数据文件:运行测试集时选择数据文件
6.2、针对KDTX项目登录接口参数化实现
1、把设计的测试用例的json数据写入文件
2、 修改请求体和断言
修改请求体
修改断言
运行时选择数据文件
总结:
1、参数化的作用是什么?
提高测试脚本复用性2、Postman如何实现参数化?
1、准备数据文件
2、引用数据文件请求参数中获取:{{变量名}} 代码中获取: data.变量名 3、批量执行测试用例
七、 针对课程添加接口进行详细测试
7.1、课程添加接口文档
7.2、设计测试用例
需求:
必填参数:
课程名称(不超过30个字符)
课程学科(1位数字,0-->java,1-->前端,6-->测试)
课程价格(1~5位数字)
适用人群(1位数字,1-->小白,2-->中级程序员)
非必填参数:
课程介绍(不超过200个字符)
要求:
1、按照接口测试思路进行测试点分析
2、从测试点转化为测试用例
3、使用Postman进行接口测试
正向测试:1、必填参数,P2;2、全部参数,P2。
逆向测试:1、参数数据为空,P3;2、参数类型不符,P3;3.参数长度不符,P3;4.业务规则不符,P3。
测试点:
根据测试点设计测试用例,参考第四节。
八、 针对查询课程列表接口进行详细测试
8.1、查询课程列表接口文档
8.2、设计测试用例
需求
支持课程名称、课程学科、课程价格、适用人群、课程介绍的单条件查询
支持课程名称、课程学科、课程价格、适用人群、课程介绍的组合条件查询
查询存在满足条件课程信息时,返回该课程信息
查询不存在满足条件课程信息时,返回空值
要求:
1、按照接口测试思路进行测试点分析
2、从测试点转化为测试用例
3、使用Postman进行接口测试
测试点分析:
九、 针对课程修改接口进行详细测试
9.1、课程修改接口文档
9.2、设计测试用例
需求:
课程ID (数字、必填)
要求:
1、按照接口测试思路进行测试点分析
2、从测试点转化为测试用例
3、使用Postman进行接口测试
测试点分析:
十、 针对课程删除接口进行详细测试
10.1、课程删除接口文档
10.2、设计测试用例
需求:
课程ID (数字、必填)
要求:
1、按照接口测试思路进行测试点分析
2、从测试点转化为测试用例
3、使用Postman进行接口测试
提取测试点:
版权归原作者 jinkkkkkkk 所有, 如有侵权,请联系我们删除。