深度探索:在 Postman 中实现自动化测试的全面指南!

在当今的软件开发过程中,API(应用程序编程接口)的使用变得越来越普遍,API 允许不同系统之间进行通信和数据交换,从而实现复杂的功能和服务集成,为了确保 API 的可靠性和稳定性,自动化测试至关重要。[Postman] 作为一款功能强大的 API 开发和测试工具,在自动化测试领域扮演着重要的角色。

Postman 的主要功能

[Postman]是一款功能丰富的 API 开发和测试工具,集成了多种功能,包括:

  • 请求构建和发送:Postman 允许用户轻松地构建和发送 HTTP 请求,支持多种请求方法和参数。
  • 响应查看和分析:Postman 可以清晰地展示服务器的响应,包括响应状态、响应头和响应体。同时提供多种工具帮助用户分析响应数据。
  • 环境管理:Postman 支持环境管理,允许用户为不同的开发环境或测试环境配置不同的变量和设置。
  • 测试脚本编写:Postman 提供了直观的测试脚本编辑器,支持 JavaScript 脚本编写,方便用户对 API 进行自动化测试。
  • Mock Server:Postman 集成了 Mock Server 功能,允许用户模拟 API 响应,非常适合 API 开发和测试。

、Postman 自动化测试的基础知识

1.1 自动化测试简述

[自动化测试]是指使用工具或框架自动执行测试用例的过程。它通过模拟用户操作,自动发送请求、验证响应,并判断测试结果是否符合预期。自动化测试可以大大提高测试效率和覆盖率,并减少人为错误。

1.2 自动化测试重要性

自动化测试之所以重要,主要有以下几个原因:

  • 提高测试效率: 自动化测试可以自动执行重复性、繁琐的测试任务,节省测试人员的时间和精力。
  • 增强测试覆盖率: 自动化测试可以覆盖更多的测试用例,提高测试覆盖率,发现更多潜在的缺陷。
  • 提升测试可靠性: 自动化测试可以减少人为错误,提高测试的可靠性和稳定性。
  • 快速反馈: 自动化测试可以提供快速反馈,帮助开发人员和测试人员及时发现并修复缺陷。
  • 持续集成: 自动化测试可以与持续集成工具集成,实现持续集成和持续交付。

1.3 不同类型的自动化测试

自动化测试可以分为不同的类型,根据测试的粒度和范围,常见的类型包括:

  • 单元测试: 单元测试是对软件中最小的独立单元(如函数、方法)进行的测试。单元测试通常由开发人员编写,主要目的是验证代码的正确性。
  • 集成测试: 集成测试是对两个或多个软件单元组合在一起进行的测试。集成测试主要目的是验证不同单元之间的接口和交互是否正确。
  • 系统测试: 系统测试是对整个软件系统进行的测试。系统测试主要目的是验证软件系统是否满足需求和期望。

此外,自动化测试还可以分为以下几类:

  • 功能测试: 功能测试是验证软件系统是否按照预期的方式工作。
  • 性能测试: 性能测试是测量软件系统的性能指标,如响应时间、吞吐量等。
  • 安全性测试: 安全性测试是验证软件系统是否能够抵御安全攻击。
  • 兼容性测试: 兼容性测试是验证软件系统是否能够在不同的环境和平台上正常工作。

不同的自动化测试类型和类别适用于不同的测试场景和需求,测试人员需要根据实际情况选择合适的自动化测试类型和类别,以实现最佳的测试效果。

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:691998057【暗号:csdn999】

二、Postman 中创建自动化测试

2.1 创建新的请求

打开 [Postman]并创建一个新的工作区(Workspace),单击“请求”选项卡(Request)并选择要发送的请求类型(如 GET、POST、PUT 等),在“URL”字段中输入请求的 URL,在“Body”选项卡中选择请求正文的格式(如 JSON、XML、文本等),在“Headers”选项卡中添加必要的请求头,在“Params”选项卡中添加请求参数。

2.2 使用环境变量管理多个环境

Postman 的环境变量功能允许你轻松地在不同的环境之间切换,而无需更改请求的 URL 或其他设置。

单击左侧边栏的“Environments”选项卡,单击“+”按钮以创建一个新的环境,在环境中填写环境变量名和变量值。

环境变量设置后,如果要在请求中使用环境变量,请使用以下语法:

{{environment_variable_name}}

例如,要在请求 URL 中使用名为“host”的环境变量,语法为:

{{host}}/api/v1/users

当你在不同的环境之间切换时,Postman 会自动替换环境变量的值,点击页面右上角可切换环境变量。

2.3 编写测试脚本

Postman 允许你使用 JavaScript 在 Tests tab 中编写测试脚本,测试脚本可以用来验证响应状态、响应时间、响应体等。比如我要在 [Postman]中将下面返回响应的 token 校验字段提取到环境变量中,我要怎么写脚本呢?

{
    "code": "0",
    "data": {
        "token": "fgub938t203t9ug0j2r9it2094942"
    },
    "message": "success"
}

要提取出上面的 token 校验字段到环境变量中,你可以在 Tests 中写入以下脚本。

var body = JSON.parse(pm.request.body.raw);

var token = body.token;

console.log("Token: " + token);

pm.environment.set("token", token);

一般接口的 token 是用来鉴权的,所以你需要将其存到环境变量中,然后在 Collections 中全局引用这个变量,这样其它接口在测试或者是自动化测试的时候就可以继承这个鉴权的 token 了。

有一点要注意,在集合中设置了鉴权的 token 后,在接口中需要选择“Inherit auth from parent”,也就是继承父级(继承自集合中设置的 token),不然不会生效的。

2.4 使用 Pre-request Scripts

Pre-request Scripts 允许你在发送请求之前执行一些脚本。这可以用来动态生成请求参数、设置请求头、修改请求正文等。比如你要在发送请求时在每个请求的请求头加上一些参数,你就可以在集合的 Pre-request Scripts 中编写 Javascript 脚本,这取决于你的需求,形如:

pm.request.headers.add({
    key: 'aaaaa',
    value: 'bbbbb'
});

2.5 运行测试和查看结果

当上述步骤完成后,也就是你根据你的业务需求,将接口、环境及环境变量、接口鉴权校验、请求头都设置完毕后,你可以试着点击“Send”按钮来调试一下,看看是否符合初步预期,如果符合,接下来就可以在 Postman 中运行自动化测试了。

提个醒,在编写任何自动化测试之前,都要首先确保单个接口能够调试成功,然后逐步往下联调集成,养成良好测试路径,才能事半功倍。

要在 Posmtan 中进行自动化测试,你可以点击集合名上的“。。。”,然后点击“Run collection”选项打开 Runner 页。

在 Runner 页,你可以选择需要测试的接口,然后选择循环次数、间隔时间,也可以上传 Data 文件,这个文件是需要测试的数据,设置完毕后点击“Run ”运行即可。

运行完成后,你可以在 Collection Runner 的结果窗口中查看每个请求的执行情况。这包括请求的响应时间、状态码、响应体等信息,这样,一个简单的自动化测试就完成了。

三、高级功能与最佳实践

3.1 Postman 自动化测试的进阶脚本编写

使用 Chai Assertion Library 增强测试能力

Chai Assertion Library 是一个功能强大的 JavaScript 断言库,可以帮助你编写更复杂、更具可读性的测试脚本。Postman 内置了 Chai Assertion Library,因此你可以直接在测试脚本中使用 Chai 的断言方法。

以下是一些 Chai 断言方法的示例:

  • pm.expect(actual).to.be.equal(expected);:断言实际值等于预期值。
  • pm.expect(actual).to.be.above(expected);:断言实际值大于预期值。
  • pm.expect(actual).to.be.below(expected);:断言实际值小于预期值。
  • pm.expect(actual).to.include(expected);:断言实际值包含预期值。
  • pm.expect(actual).to.have.lengthOf(expected);:断言实际值具有指定的长度。

这些 Chai 断言方法需要包裹在 pm.test() 中使用。在 Postman 中,pm.test() 是用来编写测试脚本的方法,你可以在其中编写你的测试逻辑,包括断言部分。因此,你应该将这些断言方法放在 pm.test() 中,以确保它们在测试中正确执行,并根据断言结果生成相应的测试结果,例如:

pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

pm.test("Status code is 200", function () {
    pm.expect("actual").to.be.equal("qq");
});

如何利用环境变量在多个请求间传递数据

Postman 的环境变量允许你在不同的请求之间传递数据。这可以用来共享一些公共的数据,例如:用户凭证、API 密钥、测试数据等。具体步骤已经在上文的 2.2 和 2.3 小节讲过,不再具体赘述。简单来讲就是在环境变量中设置变量及变量值,然后在 Collection 中通过{{}}引用环境变量即可。

3.2 CI/CD 集成

如何将 Postman 测试集成到 CI/CD 流程中

将 Postman 测试集成到 CI/CD 流程中可以帮助你实现持续集成和持续交付。这样,你可以在每次代码更改后自动运行 Postman 测试,并根据测试结果决定是否将更改部署到生产环境。

以下是一些将 Postman 测试集成到 CI/CD 流程中的步骤:

1.安装 Postman Newman

Postman Newman 是一个命令行工具,可以帮助你在 CI/CD 流程中运行 Postman 测试。要安装 Postman Newman,请按照以下步骤操作:

  • 在你的 CI/CD 服务器上安装 Node.js。
  • 使用以下命令安装 Postman Newman:
npm install -g newman

2.将 Postman 测试导出为 JSON 或 Collection 文件

要将 Postman 测试导出为 JSON 或 Collection 文件,请按照以下步骤操作:

  • 在 Postman 中打开要导出的测试文件。
  • 单击“导出”(Export)按钮。
  • 选择要导出的格式(JSON 或 Collection)。
  • 将导出的文件保存到你的 CI/CD 服务器上。

3.将 Postman Newman 集成到你的 CI/CD 工具中

你可以使用不同的 CI/CD 工具来集成 Postman Newman。以下是一些示例:

  • Jenkins:
pipeline {
  agent any

  stages {
    stage('Run Postman Tests') {
      steps {
        sh 'newman run /path/to/postman_collection.json'
      }
    }
  }
}
  • Travis CI:
language: node_js

script:
  - newman run /path/to/postman_collection.json
  • CircleCI:
version: 2.1

jobs:
  run_postman_tests:
    docker:
      - image: circleci/node:latest
    steps:
      - checkout
      - run:
          name: Run Postman Tests
          command: newman run /path/to/postman_collection.json

上面的流水线命令你可以在 Postman 中生成,还是在自动化测试的 Runner 页,在页面中点击“Automate runs via CLI”选项,然后点击下方的“Configure command”即可。

来到配置页,你可以选择相应的平台(比如 Jenkins、Gitlab)来生成对应的 Postman CLI 命令。

3.3 最佳实践和常见问题

测试用例组织技巧

  • 将测试用例组织成不同的集合(Collection),以便于管理和运行。
  • 使用 Postman 的文件夹功能来组织测试用例。
  • 为每个测试用例编写清晰的描述,以便于理解其目的。
  • 使用标签来标记测试用例,以便于过滤和搜索。

性能和效率优化建议

  • 避免在测试脚本中执行耗时的操作,例如数据库查询或文件读取。
  • 使用 Postman 的 Pre-request Scripts 来设置请求头和参数,而不是在每次请求中都重复设置。
  • 使用 Postman 的 Tests tab 来验证响应,而不是使用 console.log() 或其他方法。
  • 使用 Newman 来运行 Postman 测试,而不是使用 Postman GUI,可以提高性能。

常见的测试编写错误和解决方案
错误: 使用 pm.test() 来验证响应状态,但没有指定要验证的状态码。

解决方案: 使用 pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); 来验证响应状态码为 200。

错误: 使用 pm.expect() 来验证响应正文,但没有指定要验证的值。

解决方案: 使用 pm.expect(pm.response.text()).to.equal("Hello, world!"); 来验证响应正文为 "Hello, world!"。

错误: 使用 pm.send() 来发送请求,但没有指定请求方法。

解决方案: 使用 pm.get(), pm.post(), pm.put(), pm.delete() 或其他方法来发送请求,并指定请求方法。

错误: 使用 pm.environment.get() 来获取环境变量,但没有指定要获取的环境变量的名称。

解决方案: 使用 pm.environment.get("API_KEY") 来获取名为 "API_KEY" 的环境变量。

总结

[Postman]具有多种功能,包括请求构建和发送、响应查看和分析、环境管理、测试脚本编写以及 Mock Server 功能。Postman 的自动化测试功能通过模拟用户操作,自动发送请求、验证响应,并判断测试结果是否符合预期,提高了测试效率和覆盖率,减少了人为错误。

在 [Postman]中创建自动化测试的步骤包括创建新的请求、使用环境变量管理多个环境、编写测试脚本、使用 Pre-request Scripts、以及运行测试和查看结果。进阶的功能包括利用 Chai Assertion Library 增强测试能力、使用环境变量在多个请求间传递数据,以及将 Postman 测试集成到 CI/CD 流程中。最佳实践包括测试用例组织技巧、性能和效率优化建议,以及常见的测试编写错误和解决方案。

下面是配套资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

最后: 可以在公众号:自动化测试老司机 ! 免费领取一份216页软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试等。

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何利用RunnerGo简化性能测试流程

在软件开发过程中,测试是一个重要的环节,需要投入大量时间和精力来确保应用程序或网站的质量和稳定性。但是,随着应用程序变得更加复杂和庞大,传统的测试工具在面对比较繁琐的项目时非常费时费力。这时,一些自动化测试…

量子计算+运营优化!IonQ 和 德国DESY 合作提升机场登机口调度效率

内容来源:量子前哨(ID:Qforepost) 编辑丨慕一 编译/排版丨 沛贤 深度好文:1200字丨8分钟阅读 3月14日,量子计算公司IonQ宣布了与德国电子同步加速器(DESY,德国的大型粒子物理学研…

出现nginx error 问题

报错: Something has triggered an error on your website. This is the default error page for nginx that is distributed with Fedora. It is located /usr/share/nginx/html/50x.html You should customize this error page for your own site or edit the er…

PLC网关在工业自动化领域的作用及如何选择-天拓四方

一、PLC网关在工业自动化领域的重要性和作用 PLC网关在工业自动化领域的重要性和作用不言而喻。作为工业自动化系统的重要组成部分,PLC网关起到了关键的桥梁作用,实现了PLC与其他设备、系统之间的数据传输和通信。 首先,PLC网关的重要性体现…

nodeJs 学习

常用快捷键 二、fs模块 回调函数为空,则表示写入成功! 练习 const fs require(fs); fs.readFile(../files/成绩.txt, utf-8, (err, dataStr) > {if (err) {console.log(读取失败);return err;}console.log(读取成功);const arr dataStr.split( )co…

SpringBoot整合WebService

WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互。 其实WebService并不是什么神秘的东西&…

MISC:常见编码

一、字符编码 1.ASCII码 使用指定7位或8位二进制数组合表示128-256种可能。 常⻅考点:解题过程中给出十进制或十六进制的连续数值。 进制转换工具: ASCII text,Hex,Binary,Decimal,Base64 converter (rapidtables.com) 2.Base64编码 ASCII编码以8个比特…

鸿蒙Harmony应用开发—ArkTS(@Prop装饰器:父子单向同步)

Prop装饰的变量可以和父组件建立单向的同步关系。Prop装饰的变量是可变的,但是变化不会同步回其父组件。 说明: 从API version 9开始,该装饰器支持在ArkTS卡片中使用。 概述 Prop装饰的变量和父组件建立单向的同步关系: Prop变量…

马斯克的 Grok-1 开源,3140亿参数目前最大开源模型,最佳实践教程来啦

近几天开源社区最大的热点,莫过于埃隆马斯克信守承诺的最大开源模型Grok-1。 Grok-1 是一款 314B 大型专家混合 (Mixture of Expert,MoE) Transformer,作为基础模型,基于大量文本数据进行训练,没有针对任何具体任务进…

计算机二级Python题目3

题目来源:计算机二级Python半个月抱佛脚大法(内呈上真题版) - 知乎 目录 1. 基础题 1.1 基础题1 1.2 基础题2 1.3 基础题3 2. turtle绘图题 3. 大题 3.1 大题1 3.2 大题2 1. 基础题 1.1 基础题1 a,b,ceval(input()) ls[] for i in …

Base系列

1.计数系统 base,这个词在数学中表示基数,即计数系统中用于表示数字的不同符号的数量。 例: 二进制计数系统中只有两个符号表示数字,即0和1,故二进制系统可以用Base2表示。 十进制计数系统中仅使用十个符号表示数字,即…

二、阅读器的开发(初始)-- 2、阅读器开发

1、epubjs核心工作原理 1.1 epubjs的核心工作原理解析 epub电子书,会通过epubjs去实例化一个Book对象,Book对象会对电子书进行解析。Book对象可以通过renderTo方法去生成一个Rendition对象,Rendition主要负责电子书的渲染,通过R…

QT gridlayout 循环设置组件,表格也通用 已解决

在需求中。经常遇到,表格 展示需求。 几乎都是json格式的。 // 列表配置文件QJsonArray listJsonArray getCfgJsonData("details_tab_table_config.json");if (listJsonArray.isEmpty()){return;}ui->gridWidget->setMaximumSize(QSize(310, 180)…

Matlab在高光谱遥感中的作用:从数据处理到决策支持

光谱和图像是人们观察世界的两种方式,高光谱遥感通过“图谱合一”的技术创新将两者结合起来,大大提高了人们对客观世界的认知能力,本来在宽波段遥感中不可探测的物质,在高光谱遥感中能被探测。以高光谱遥感为核心,构建…

【机器学习300问】44、P-R曲线是如何权衡精确率和召回率的?

关于精确率和召回率的基础概念我已经写了两篇文章,如果友友还不知道这两个评估指标是什么,可以先移步去看看这两篇文章: 【机器学习300问】25、常见的模型评估指标有哪些?http://t.csdnimg.cn/JtuUO 总结一下这两个概念&a…

进度图画法

exce表格进度图画法,体现在条形图以及“格子”的空间的填充两种办法。 1.excel表格画进度图 备注:表格照着就是可以了,主要是画直线的办法 在形状的下拉菜单中选择直线,按住shift(可以画直线) 画直线后&a…

一站式App流量统计,Xinstall助您洞悉用户行为

在如今的移动互联网时代,App的推广和运营对于开发者来说至关重要。然而,想要精准掌握App的流量情况,却并不是一件容易的事情。这时,一款强大的App流量统计工具就显得尤为重要。而Xinstall,正是这样一款能够帮助开发者轻…

收集数据的二维码怎么做?创建表单活码的制作方法

通过二维码来收集用户信息是现在经常被使用的一种方式,通过扫码二维码展现表单,用户根据问题填写自己的想法或者信息,有效的简化用户操作的流程,也能够提升管理者获取信息的速度,能够快速针对用户数据做分析。 那么表…

PLC常用通信协议应用

PLC通信协议 ModbusModbus协议介绍Modbus协议的应用Modbus通信模式 Modbus RTU通讯Modbus RTU报文映射寄存器常见功能码数据类型Modbus CRC校验计算Modbus RTU举例(读位)Modbus RTU举例(读字) Modbus TCP协议应用TCP数据帧Modbus …

从0到1:企业官网小程序开发笔记(一)

可行性研究 企业公司官网小程序 ,旨在为企业建立一个在线的官方网站,并提供公司的信息、产品、服务和联系方式等。它扩展了传统企业官网的功能,使用户能够通过微信小程序的便利性和互动性,方便用户随时随地获取企业信息&#xff…