当前位置:   article > 正文

Postman实现接口自动化测试

Postman实现接口自动化测试

功能测试从页面发起请求进行测试,接口测试可以借助工具或代码直接将数据发送到服务端进行测试。

 功能测试和接口测试对应的时间

接口测试的流程

 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进行接口测试 

提取测试点:

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/957705
推荐阅读
相关标签
  

闽ICP备14008679号