Postman接口测试
目录
一、什么是接口测试?
接口的定义(API)
接口是前后端的桥梁,前端即为我们看得见的页面,后端则为我们看不见的请求与操作,接口是数传输的通道
举例:在刷新、点击某个按钮时需要获取数据的时候
接口的分类
- 外部接口--第三放接口(他人提供的现成接口)
例如:支付时支付宝、微信支付为第三方厂商提供的接口
- 内部接口--当前项目开发人员写的接口
上层服务接口:该功能的上层模块接口 例如 登录---下单 此时登录为下单的上层接口
下层服务接口:该功能的下层模块接口 例如 登录---下单 此时下单为登录的下层接口
同级接口:同级接口模块 例如 搜索---下单 此时该两个服务没有先后级关系
接口测试
接口测试一般使用对应的工具,向接口发送对应的请求,判断数据响应的正确性。属于功能测试(黑灰盒),通过对输入与输出进行判断
工具:
- 手工测试:Postman【专注接口功能测试】\Jmeter【兼顾接口性能测试】
- 接口自动化测试:代码实现【Python+requests+pytest/unittest】
接口测试的好处
1.可以让测试更早的投入
可以在 在没有前端页面,前端还没完成或者前后端还未进行联调 的情况下,代替前端页面或者第三方使用者,来验证后端的接口实现是否符合接口规范
2.发现前端不能发现的问题
3.通过接口测试可以直接测试后端服务,让用户更近服务器的代码
4.前端随便变,接口测好了,后端不用变。更容易与自动化测试系统相结合
注:接口测试不一定早于界面测试等其他测试,因为接口测试一般会作为一个辅助的测试策略在其他阶段测试时使用,做为更快速的定位问题的一个手段
其余必备知识参看:
二、Postman 工具
安装:Download Postman | Get Started for Free
接口测试练习网站:
2.1 接口测试流程
同功能测试:需求评审、分析-->设计接口测试用例-->准备接口测试环境,工具-->执行测试用例,跟踪BUG-->总结测试报告
接口来源:
接口文档
自己抓取:WEB F12开发者工具
移动端 Fiddler 、 Charles
接口文档关注点:
- 接口地址:URL地址
- 接口的类型(请求方式):get或post
- 输入的参数
- 返回参数(结果)
- 错误参照码:错误说明
设计测试方向:
- 通过性测试:正确数据,接口正常 ---参数化方法
- 异常情况:错误数据,接口应当异常,伴有提示 ---参数化方法
- 参数组合情况:参数输入数据的不同组合 ---参数化方法
- 业务场景法:参照需求描述 ---关联性方法
2.2 接口测试用例
类似于功能测试用例的测试方法和思路
- 项目:项目名称
- 模块:模块名称
- 用例ID:用例编号
- 接口名称:所测试的接口名称
- 前置条件:测试需要的依赖条件
- 用例标题:验证说明
- 请求URL:接口地址
- 请求方式:GET/POST
- 请求数据:请求的参数取值
- 预期结果:预期结果
- 返回内容:实际返回的参数值
- 测试结果:是否通过
- 测试人员:
2.3 Postman接口测试过程
Postman接口请求过程

1.填写接口URL
2.设置HTTP方法
- GET
- POST
3.设置请求头
4.填写请求参数

- GET
postman会自动根据GET请求的URL填充GET请求参数
- POST
post请求的参数在Body中传递,有多种传值方式,需要根据请求头的Content-Type的值来决定
| Content-Type 取值 | Body 选择格式 | 入参值的格式 |
|---|---|---|
| application/x-www-form-urlencoded | x-www-form-urlencoded | 键值对 |
| multipart/form-data | form-data | 键值对,文件格式 |
| application/json | raw-json | json 格式 |
| application/xml | raw-xml | Xml 格式 |
| application/javascript | raw-javascript | js 格式 |
| text/plain | raw-text | 文本格式 |
| text/html | raw-html | html 格式 |
Postman接口响应验证

2.4 Postman设置断言
断言(Assertion)是非常关键的部分,它用于验证测试过程中的实际结果是否与预期结果一致,让程序代替人工自动的判断。如果实际结果和预期结果不相符,断言就会抛出 AssertionError 异常,从而表明测试用例执行失败,只有设置正确合适的断言才能获取正确的测试结果

常用断言设置方法
状态码断言
- Status code: Code is 200 判断当前接口的状态码是否为200
- Status code: Successful POST request 判断当前接口的状态码是否属于预期的结果之一,用于多个状态码的判定
- Status code: Code name has string 判断状态码描述是否包含字符串,比如是否包含 Created
响应正文的断言
- Response body: Contain string 判断当前接口响应体整体是否包含该字符串
- Response body: JSON value check 判断当前接口响应体的某个字段是否等于某个值 例如jsonData.data.username获取data下的username值 { } 用 .匹配 [ ] 用[ ]匹配
实用网站:JSON在线视图查看器(Online JSON Viewer)
- Response body: Is equal to a string 判断当前接口响应体整体所有数据是否等于某些值
- Response body: Convert XML body to a JSON Object 将XML转换成json格式
响应头的端头
- Response headers: Content-Type header check 判断当前接口响应头部中是否包含字段
响应时间的断言
- Response time is less than 200ms 判断当前接口响应时间是否小于指定的200ms
2.5 Postman测试集的使用和管理
测试集Collection
1.可以分项目、分模块的形式管理多个接口
2.可以对接口进行批量测试,多次测试
3.可以导出导入
4.可以设置前置脚本,后置断言、变量
2.6 Postman参数化
重复数据进行参数化,减少工作量
变量参数化
变量:相同的入参,不同的接口连续参数 【全局和局部】 {{variable}}作为变量的值
GET请求:Params
POST请求:Body

以接口地址 https://reqres.in/api/login为例
参数
{ "email": "eve.holt@reqres.in", "password": "cityslicka" }正确响应
{ "token": "QpwL5tke4Pnpja7X4" }
文本参数化
文本:相同的接口,不同的入参数据 多次测试
用于测试一个接口入参一样时,根据填写的数据不同,期望结果不同
以接口地址 https://reqres.in/api/login为例
参数
{ "email": "eve.holt@reqres.in", "password": "cityslicka" }正确响应
{ "token": "QpwL5tke4Pnpja7X4" }
进入Collection Runner 页面
1. 确定数据以及断言字段
2. 准备数据 json/csv格式

3. 对应的参数进行引用:{{变量名}}

4.设置断言
//1.拿到文档的数据,即预设的期望结果 data.变量
//2.拿到对应的响应数据然后比对设置断言
var jsonData = pm.response.json() //获取响应体参数值
pm.expect(jsonDara.msg).to.eql(data.msg)
5. 通过测试集去运行

2.7 接口的关联性
接口的关联性是指下一个接口的入参,来源于上一个接口。接口关联性注重将对应请求后的数据设置为变量保存给下一个接口。 例如注册--登录--加入购物车--下单这个下单流程中每个接口都需要上一个接口的参数
该业务流程可简单表示为:
1.请求对应的登录接口 获取对应的响应数据(token值)
// 获取登录请求响应后的token
var jsonData = pm.response.json()
var token = jsonData.data.token
// 设置对应的变量【get:获取;set:设置;clear:清除】
pm.collectionVariables.set("token", token);
2.请求加入购物车接口 传递上述操作获取的token值
3.请求购物车列表接口获取商品参数信息,请求下单接口,传递上述操作获取的参数值
//获取购物车列表接口请求响应后的商品id
var jsonData = pm.response.json()
var cart_id = `jsonData.data.data[1].id
// 设置对应的变量【get:获取;set:设置;clear:清除】
pm.collectionVariables.set("cart_id", cart_id)
在参照接口文档的基础上填补相关操作即可实现业务流程的跑通
三、Postman测试报告
环境配置
- 安装nodejs
官网下载地址:http://nodejs.cn/download/
跟随默认安装程序即可
- 安装newman
命令行窗口输入npm install -g newman进行安装
使用newman -v查看安装是否成功
- 安装HTML报告
命令行窗口输入npm install -g newman-reporter-html
报告生成
使用NewMan命令
1.导出接口测试集合
在collection测试集选项菜单中选择Export,导出为.json格式的文件
2.使用NewMan执行Collection
使用NewMan执行Collection测试集导出的.json文件。
通过NewMan命令行运行测试集,命令行中输入newman run 导出的json文件名即可
执行结果:
- 第一部分:测试集名称和执行请求的列表,绿色对勾表示断言通过,红色文件表示断言失败。

- 第二部分:测试集执行结果总结

- iterations:迭代次数,总共执行了多少次。
- requests:请求个数,总共发送了多少条请求。
- test-scripts:请求后置脚本个数。
- prerequest-scripts:请求前置脚本个数。
- assertions:断言个数。
- total run duration:总运行时间。
- total data received:接收到的总数据大小。
- average response time:平均响应时间。
第三部分:失败断言的列表,以及断言失败的详情。

使用NewMan --reporter-html命令
参数:
-r 表示生成测试报告的文件类型,可以有多个,中间用逗号隔开即可
1.导出接口测试集合
在collection测试集选项菜单中选择Export,导出为.json格式的文件
2.使用HTML命令执行Collection
通过NewMan命令行运行测试集,命令行中输入newman run 文件路径 -r html --reporter-html
该命令会在当前执行的cmd窗口路径下新建newman文件夹存放生成的html格式的测试报告
导出到指定路径:
newman run <文件路径> -r html --reporter-html--export <报告导出路径>
但是这种方法执行测试集是不带有该测试集的环境变量(变量参数化)和参数文件(文本参数化)信息的,因此需要进行环境变量和参数文件的单独的导出,并使用NewMan运行
引入环境变量
1.导出接口测试集合
在collection测试集选项菜单中选择Export,导出为.json格式的文件
2.导出环境变量
在环境变量编辑面板中,导出环境变量

3.newman命令执行测试集合并附加环境变量文件 -e <file>
引入参数化文件
1.导出接口测试集合
在collection测试集选项菜单中选择Export,导出为.json格式的文件
2.导出环境变量
在环境变量编辑面板中,导出环境变量
3.获取参数文件源地址
4.newman命令执行测试集合,附加环境变量文件 并附加文本参数化文件并指定迭代次数 -d <路径> -n 次数
更多设置命令:Newman 命令选项 | Postman 官方帮助文档中文版
-e 等同于 --environment 跟环境变量文件
-g 等同于 --globals 跟全局变量文件
-n 等同于--iteration-count 设置迭代次数
-d 等同于 --iteration-data 跟用于迭代的数据源文件(文本参数化)
-r 等同于 --reporters 跟报告格式结果 如cli , html json
cli 直接打印在命令行窗口 ,newman 默认方式
html html文件 配合--reporter-html--export
json json文件 配合--reporter-json--export
面试常见问题
1.请介绍你熟知的接口测试工具?该接口测试工具有什么特点?
Postman 、Jmeter
Postman 界面简洁直观,可以创建测试集运行接口请求,并自动生成报告
2.HTTP接口传递数据最常用的方式
GET、POST、DELETE、HEAD
| HEAD | 类似于 GET 请求,但返回的响应中没有具体内容,仅用于获取报头信息。 |
| DELETE | 请求服务器删除指定页面。 |
3.以下单词含义
WWW:万维网
URL:统一资源定位符
URI:统一资源标识符
HTTP:超文本传输协议
HTTPS:安全超文本传输协议
HTML:超文本标记语言
TCP:传输控制协议 IP网际协议
OSI:开放式系统互联参考模型
4.HTTP和HTTPS的区别
HTTP:明文传输 80端口 无状态无连接
HTTPS:密文传输,需在http基础上申请CA证书 443端口
5.HTTP协议的特点
6.get和post请求的区别
GET:参数在URL中
POST:参数在请求体中
7.在接口测试中怎么知道请求成功还是失败
a. 状态码
b. 查看对应的响应数据,结合接口文档确定是否正确
8.常见的响应状态码及含义
200 202 400 404 500
| 200(成功) | 服务器已成功处理了请求。通常,这表示服务器提供了请求的网页 |
| 202(已接受) | 服务器接受请求,但未处理 |
| 400(错误请求) | 服务器不理解请求的语法 |
| 404(未找到) | 服务器找不到请求的网页 |
| 500(服务器内部错误) | 服务器遇到错误,无法完成请求 |
9.请说出3-4中常见协议和服务以及对应的端口
常见的端口及其对应协议的汇总,按端口号从小到大排列-CSDN博客
10.针对URL讲一下URL组成

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐




所有评论(0)