接口测试工具Postman使用实践

news2024/9/26 1:15:20

 

一、接口定义   

软件不同部分之间的交互接口。通常就是所谓的API――应用程序编程接口,其表现的形式是源代码。 —— [ 百度百科 ]
我们常说的接口一般指两种:
(1)API:应用程序编程接口。程序间的接口
(2)GUI:图形用户界面。人与程序的接口
这里我们所说的接口特指API接口。
API接口定义:对协议进行定义的引用类型。
好多公司开发人员分前后端,他们之间如何配合工作的,就是其中一方定义接口,另一方来调用接口,以实现预期功能。

二、接口的分类

(1)HTTP接口
(2)Webservice接口
(3)RESTful接口
WebService接口是走soap协议,请求报文和返回报文都是xml格式,通过SoapUI工具进行测试;
HTTP API接口走HTTP协议,通过路径来区分调用的方法,请求报文入参有多种形式,返回报文一般为json串,最常见的是get和post方法。

三、为何要进行接口测试

1、接口测试必要性

当今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,所以就要做接口测试。同时,接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。现在很多系统前后端架构是分离的,从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。

2、接口测试原理

模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端再接收应答的一个过程。

3、接口测试范围

接口的功能、性能、安全性。重点关注数据的交换,传递和控制管理过程,还包括处理的次数。
接口测试对象是接口,但随着系统复杂度越来越高,接口越来越多,完全覆盖是一件很困难的事情。通常情况下主要测试最外层的两类接口:数据进入系统的接口(调用外部系统的参数为本系统使用)、数据流出系统接口(验证系统处理后的数据是否正常)

四、接口文档示例

1、接口文档应该包括哪几部分?

    接口说明
    调用的url
    请求方法(get、post)
    请求参数,参数类型、请求参数说明
    返回参数说明
    返回示例

2、示例:



注:上图接口文档工具为ShowDoc

五、Postman工具简介

1、Sidebar侧边栏

Postman侧边栏允许你查找、管理请求和集合。侧边栏分为两个主要的选项卡,包括历史和集合选项卡。
可以拖动右边的边来调整侧边栏的宽度。侧边栏也可以隐藏到小屏幕(标题栏 view—>toggle side bar)。
(1)历史选项卡
通过Postman应用程序发送的每个请求都保存在侧边栏的History选项卡中。
(2)集合选项卡
在侧栏中创建和管理集合选项卡的集合。

2、Header toolbar


Postman的顶部工具栏包含以下选项:
(1)新建按钮——可以新建请求,集合,环境等
(2)运行按钮-打开集合运行页面
(3)导入按钮——导入Postman文件、文件夹、form link等
(4)新窗口图标-打开一个新的tab页、新的窗口、新的runner等
(5)构建器和团队库选项卡——在请求生成器和Team Library视图之间切换
(6)抓取API请求图标——使用postman抓取API请求
(7)同步状态图标——同步API请求图标
(8)用户下拉——管理集合链接和你的个人资料或登录/登出,你的Postman帐户
(9)开放API集合(点击打开一个网址)
(10)通知图标-接收通知或广播
(11)设置图标——管理Postman应用程序设置,并找到其他支持资源
(12)❤——分享按钮

3、Builder

Postman通过选项卡布局,用于在构建器中发送和管理API请求。上半部分是请求构建器,下半部分是响应查看器。
(1) Cookies——管理cookie模式是通过点击cookie链接访问的。该特性允许你管理与请求相关的cookie。
(2) Code——生成的代码片段模式通过保存按钮下面的最右边的Code链接。该特性允许你生成与请求相关的代码片段,该请求支持20多种语言(http、java、go等语言)

4、Console

Postman有两个控制台,可以帮助我们了解系统后台到底发生了什么。
(1)Postman Console——包含HTTP请求和响应的运行日志。来自脚本的日志消息(如在console. Log中)。这个功能只能在Postman的本地应用中使用。
(2)DevTools Console——可以在开发期间记录诊断信息。

六、借助Postman完成HTTP请求接口测试

1、借助Postman Echo 演示下各种请求的构建方法

(1)Get 请求
https://postman-echo.com/get?foo1=bar1&foo2=bar2
HTTP GET请求方法是从服务器检索数据。数据由惟一URI(统一资源标识符)标识。GET请求可以使用“查询字符串参数”将参数传递给服务器。例如,在下列请求中,http://example.com/hi/there?hand=wave,参数“hand”的值等于“wave”。
 


(2)POST:URI 传参
 


(3)POST:Form-data 传参
 


(4)POST:x-www-form-urlencoded传参
 


(5)POST:raw 传参
 


(6)POST:binary 传参
 


(7)Authentication Method——权限认证方法
    GET Basic Auth



增加auth信息
 


    DigestAuth
    Hawk Auth
    OAuth1.0(verify signature)
(8)Headers——添加header

2、单一接口测试流程

示例API:https://developers.douban.com/wiki/?title=book_v2#get_book
豆瓣搜索图书API
 


步骤一:使用Postman工具发送该Get请求,如下图:
Postman发送请求
步骤二:添加测试
添加测试
 


上图针对该API添加了3个测试
(1)要求响应时间小于200ms
(2)要求status code等于200
(3)要求Response body中包含字符串“金庸”
注:当然你还可以增加更多的测试点

七、Postman + Newman + Jenkins 实现接口自动化测试

1、准备工作

(1)安装Newman 工具
    安装Node.js
    安装Newman
    查看Newman命令
(2)部署Jenkins

2、将接口保存到集合

点击Save按钮,将接口保存到一个集合(可以保存到一个现有集合中或者新建一个集合),如下图:
保存接口到集合

4、将集合保存到本地

将集合保存到本地,文件为.json格式,如下图:
集合保存到本地

5、命令行通过Newman 运行集合

(1)打开命令行窗口,运行如下命令:
D:\git-local>newman run MyCollection1.postman_collection.json -g globals.postman_globals1.json
(2)执行结果如下
 


可以看到,其中两条断言passed,一条断言failed,失败的原因是,我们期望接口响应时间小于200 ms,但是本次接口请求响应时间是270 ms。

6、通过Jenkins 调用Newman,执行接口测试


执行一次构建,构建失败(上面的断言失败,我们并未修复),查看构建失败原因。

7、假设开发修复了接口bug,接口响应时间减少了,我们需要回归测试。

(我们将断言响应小于200 ms,修改成1000 ms,让断言passe)

8、演示一个如何调用data file 参数化用例

我这里有一个集合,3个接口,第一个接口为登录接口,第二个接口为获取登录用户信息接口,第三个接口为修改密码接口
登录接口如下:
 


测试脚本如下:
 


参数化json文件内容如下

[{
  "loginName": "duzl",
  "password": "admin123",
  "verifyCode": "adf",
  "value": "/index"
}, {
  "loginName": "duzl",
  "password": "admin",
  "verifyCode": "adf",
  "value": "账号或密码错误"
}, {
  "loginName": "duzl",
  "password": "",
  "verifyCode": "adf",
  "value": "参数password不能为空"
}]

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16

[{ "loginName": "duzl", "password": "admin123", "verifyCode": "adf", "value": "/index"
}, { "loginName": "duzl", "password": "admin", "verifyCode": "adf", "value": "账号或密码错误"
}, { "loginName": "duzl", "password": "", "verifyCode": "adf", "value": "参数password不能为空"
}]


(1)好我们调用json文件,执行下集合,结果如下:
 


结果还不错,执行了3次,参数都是取自用例文件(json文件),断言也取自用例文件。
美中不足的是,第二个和第三个接口也跟着迭代了3次(这并不是我们期望的结果),这是因为集合运行器中的迭代次数是针对所有接口的设置。
(2)那如果,我们想第一个接口运行3遍,第二、三个接口只运行一遍,该如何做呢?Postman 给我们提供了一个内置方法,设置接口运行顺序postman.setNextRequest(”);
 


注意:迭代次数从0开始
当迭代次数!==0时,就停止本次迭代(意思就是,第一次迭代全运行,第二次迭代开始就不执行第二、三个接口了),好,再次运行集合,看看结果
 


很好,第一次迭代,执行了3个接口;第二、三次迭代只执行了第一个接口。

                                                                                                                  


如果你想学习自动化测试,那么下面这套视频应该会帮到你很多 

如何逼自己1个月学完自动化测试,学完即就业,小白也能信手拈来,拿走不谢,允许白嫖....

最后我这里给你们分享一下我所积累和整理的一些文档和学习资料,有需要直接领取就可以了

以上内容,对于软件测试的朋友来说应该是最全面最完整的备战仓库了,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1026594.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker与Kubernetes集成以实现云原生应用程序:云原生在线教育平台

文章目录 项目概述项目架构项目步骤项目收益 🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏:云计算 ✨文章内容:云原生在线教育平台 🤝希望作者的文…

【Zabbix】Zabbix结合WxPusher推送告警消息

WxPusher简单介绍 什么是WxPusher WxPusher (微信推送服务)是一个使用微信公众号作为通道的,实时信息推送平台,你可以通过调用API的方式,把信息推送到微信上,无需安装额外的软件,即可做到信息实时通知。 你可以使用W…

【Spring Cloud系列】Feign详解与实战

Feign详解与实战 文章目录 Feign详解与实战一、概述二、什么是Feign三、Feign特性四、Feign简单使用3.1 Feign使用步骤3.2 Feign具体使用1. 引入依赖2. 启动类上添加注解3.编写FeignClient接口 五、使用Feign发起http请求5.1 Maven导入Feign配置,并集成Jackson5.2 F…

如何理解功率谱/能量谱密度?它与自相关函数的关系?

目录 1. 自相关函数: 2.功率谱密度 /能量谱密度 什么是 能量信号? 什么是 功率信号? 什么是 能量谱密度? 什么是 功率谱密度? 3.自相关函数 与 能量谱密度/功率谱密度 的关系? 4.周期性的功率信号的 功…

安卓ROM定制 修改必备常识-----初步了解system系统分区文件夹的基本含义 【二】

安卓修改rom 固件 修改GSI 移植rom 必备常识 lib--**so文件基本解析 一起来了解system目录相应文件的用途吧。(rom版本不同里面的app也会不一样) 简单打开img格式后缀文件 给大家说下最简单的方法提取img里面的文件,对于后缀img格式的文件可…

实现过滤词汇高亮

js实现过滤词汇高亮 场景代码 场景 前端实现查询后,将过滤后数据中的搜索词展现为高亮。 代码 思路:利用 正则表达式 对过滤词添加类名,然后使用 v-html 渲染在表格中。 // 复制json数组copyObjectDataList(arr) {let list [];_.each(arr…

(2021|PMLR,DALL·E,自回归,Transformer)零样本文本到图像生成

Zero-Shot Text-to-Image Generation 公众号:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料) 目录 0. 摘要 1. 简介 2. 方法 2.1. 第一阶段:学习视觉码本 2.2. 第二阶段&#xff1a…

23种设计模式汇总详解

设计原则 中文名称英文名称含义解释单一职责原则Single Responsibility Principle(SRP)任何一个软件模块都应该只对某一类行为者负责一个类只干一件事,实现类要单一开闭原则Open-Close Principle(OCP)软件实体(类、模块、函数等)应该是可以扩…

vmware NAT模式配置方式

VMware在NAT模式下宿主机与多台虚拟机互相访问,可连接外网 虚拟机的网络连接类型的选择,网络连接类型一共有桥接、NAT、仅主机和不联网四种。 桥接:选择桥接模式的话虚拟机和宿主机在网络上就是平级的关系,相当于连接在同一交换机…

飞行动力学 - 第30节-滚转收敛模态机理及飞行品质 之 基础点摘要

飞行动力学 - 第30节-滚转收敛模态机理及飞行品质 之 基础点摘要 1. 典型横航向响应2. 滚转收敛模态机理3. 滚转收敛模态近似4. 滚转收敛品质要求5. 参考资料 1. 典型横航向响应 2. 滚转收敛模态机理 3. 滚转收敛模态近似 横航向扰动之后首先体现的是重阻尼的滚转收敛模态 飞…

易点易动固定资产管理系统:解锁全面管理固定资产的多重功能优势

在现代企业中,固定资产管理是一项至关重要的任务。单单依靠表格来管理固定资产已经无法满足大多数企业的需要。因此,企业通常需要一款专业的固定资产管理系统进行固定资产的日常管理。易点易动固定资产管理系统以其多项强大功能,成为企业实现…

著名书法家傅成洪受邀出席香港第八届“一带一路”高峰论坛

香港第八届“一带一路”高峰论坛于9月13日至14日在香港隆重举行,吸引了来自海内外的6000多名嘉宾,共同回顾“一带一路”倡议的历程,并展望未来的投资和商贸机遇。这一庆祝活动恰逢“一带一路”倡议的10周年,主题定为“携手十载 共…

使用Kalibr工具线对相机+IMU离线标定

传感器标定的准确后面做算法才会更准确,所以对Kalibr进行学习。 一、Kalibr编译 1、下载kalibr包 GitHub下载地址 2、 解压后放到/catkin_ws/src文件夹下 重新命令文件夹为kalibr 3、 安装依赖库 sudo apt-get install python-setuptools python-rosinstall…

datax和datax-web编译安装和使用

DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、OTS、ODPS 等各种异构数据源之间高效的数据同步功能。 目前支持的数据源如下: 与sqoop的对比: 1. 编译 1.1编译datax idea打开datax项目,…

观察级水下机器人使用系列之七机械手臂

本期是观察级水下机器人使用系列的最后一期,主要讲ROV所使用的机械臂。机械臂正式名称为5功能电动机械,型号为BE-500,由法国公司Ocean Innovation System设计的,可代替人工进行水下作业,完成海底样品采集、打捞、设备定…

9月20日作业

时钟代码&#xff1a; widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QPainter> #include <QPaintEvent> #include <QTime> #include <QTimer> #include <QDebug>QT_BEGIN_NAMESPACE namespace Ui { class W…

【Hash表】第一个不重复字符-力扣 387

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kuan 的首页,持续学…

应用平台 - OPPO敏感权限

那天在OPPO平台更新app时&#xff0c;发现平台权限升级&#xff0c;新增了敏感权限校验&#xff0c;而且还是必填项… Google 从 Android6.0 开始就对权限做了分类适配&#xff0c;粗浅来看将权限分为了普通权限、危险权限&#xff08;运行时权限、敏感权限&#xff09;&#x…

干洗店小程序,洗鞋店小程序,互联网洗鞋店,企业干洗方案,干洗行业小程序,上门取衣小程序,预约干洗小程序,校园干洗店小程序,工厂干洗店小程序,干洗店小程序开发;

干洗店小程序,洗鞋店小程序&#xff0c;互联网洗鞋店&#xff0c;企业干洗方案,干洗行业小程序,上门取衣小程序,预约干洗小程序,校园干洗店小程序,工厂干洗店小程序,干洗店小程序开发,微信干洗店小程序&#xff1b; 一、核心功能介绍 1.(支持上门取送、送货到店、寄存网点、智能…

LLM微调(一)| 单GPU使用QLoRA微调Llama 2.0实战

最近LLaMA 2在LLaMA1 的基础上做了很多优化&#xff0c;比如上下文从2048扩展到4096&#xff0c;使用了Grouped-Query Attention&#xff08;GQA&#xff09;共享多头注意力的key 和value矩阵&#xff0c;具体可以参考&#xff1a; 关于LLaMA 2 的细节&#xff0c;可以参考如下…