前言
在之前的系列 中,我们从基础功能、脚本进阶和自动化实现几个方面向大家详细介绍了 Postman 工具在接口测试中使用的具体方法。而我们在工作中,除了这些通过本地工具实施的测试外,因为不同办公场所或团队协作的需要,还存在通过云端来统一管理接口用例以及依托云端来实现更多增值测试能力的需求。在本篇 Chat 中,我们就来学习 Postman 官方提供的 Cloud 高级功能服务。
Postman cloud 服务介绍
使用 Postman Cloud 服务,首先我们需要注册一个官方的账号
注册完成并登录以后,从官网主页面右上角的 dashboard 按钮即可进入 Cloud 云端管理页面。这里会显示自己的工作空间,除了自己的个人工作空间外,还可以创建用于团队共享的团队工作空间。
工作空间及云端功能总览
工作空间是 Postman Cloud 的一个管理单元,通过云端的工作空间同步,我们可以达到以下本地端无法实现的的一些优势:
-
可以便于个人工作通过不同的地点和设备进行组织、管理。比如在工作单位未完成的工作,回到家里也可以继续
-
便于团队合作,通过将相关元数据共享以及团队工作空间,团队成员之间可以共同维护同一套接口,并共享工作成果。
-
统一的工作空间,还使得团队能工作在同一维度下,避免不同团队成员工作进度、数据的不一致导致的理解和沟通差异。
-
工作空间的历史记录功能,能帮助记录和回溯接口操作记录,便于保存工作过程和结果。
下图是 Cloud 端进入工作空间后的界面,可以看到 Postman Cloud 云端能够提供的功能。默认显示当前空间中的 Collection 信息,其他的 Tab 页分别是接口操作历史、环境变量、监控任务、Mock 服务、API 集成能力、以及云空间相关的操作记录。
如下是 History 接口操作记录以及 Activity 工作空间操作记录:
账号体系及对应价格
在 Postman 官网注册账号后默认是免费账户,也可以升级到专业版或者企业版,目前对应的每月费用分别如下:
免费版本包含的功能如下,可以看到功能基本都支持,区别主要在使用次数上的区别,免费账户的在线文档调阅、 Mock 请求、API 调用、监控调用等都限制在每月 1000 次,还是能基本满足个人学习和基本的测试需要的。如果是比较大型的团队共用,最好还是升级到高级版本或选择其他替代方案。
本地端登录
在 Postman 工具端,我们也可以登录已注册的账号,登录后上方的 banner 即可显示登录后所在默认工作空间以及账户头像。
登录后,本地 App 端会和云端保存的信息自动进行同步,保持数据的一致性。下面我们就分别来看看 Postman cloud 提供的服务。
Postman Cloud 的在线接口文档
功能强大、格式优美的在线文档是 Postman Cloud 的一个重要服务。它具备如下一些主要的优点:
- 支持私有文档及公开文档
当注册 Postman 账号后,默认其实已经开启了在线文档功能。登录 web 端工作空间后,点击 Collection 进入后,即可看到当前 Collection 的在线文档已同步生成。如图:
上图是只有当前账号可以在工作空间中查看的私有文档。通过右上角的 Share 按钮还可以向其他工作空间或团队工作空间共享当前的文档。 而通过 Publish 按钮则可以将当前文档发布为公共文档让用户公开访问。
在Postman App 端,也可以使用 Collection 菜单中的 Publish Docs
按钮来进行公开文档的发布。发布后会生成一个公共的访问 URL,通过这个 URL 即可访问到这个文档。
- 文档自动生成
如上文所述,Postman 在线文档是自动生成的,省去了原来繁冗的文档编辑排版工作。它能够自动生成如下内容:
- 请求示例,包括请求方法、uri、消息内容、消息头、参数等
- 保存为 Example 的接口响应信息
- Collection、Folder、Request 上编写的 Description 描述。
- 自动化生成的多种主流语言的代码片段
如下图是 Collection 的描述信息编辑界面
- 支持 Markdown 语法
我们在编写 Description 时,是支持使用 Markdown 语法的,能进一步提升文档的阅读体验。如上面的图片就包含了 Markdown 中列表以及加粗的语法。
- 支持基于 ID 的文档内链接
我们还可以利用 Postman 为每一个请求、folder 生成的唯一 ID 在文档内进行交叉引用。当我们点击右侧文档右侧导航栏对应元素,URL 中即可显示该元素的唯一 ID,如图:
注:ID 信息我们也可以通过 Postman API 接口获取到。
- 支持自动生成主流语言代码片段
Postman 在线文档另一个非常赞的特性是支持多种主流语言的代码片段,方便我们在使用相应语言进行代码调试时使用。如图:
- 支持评论功能
在团队空间等私有文档中,我们还可以使用评论功能,通过对接口进行标注来和团队成员进行沟通和进行信息的确认。
Postman 在线文档使用限制
Postman Cloud 会限制私有文档和公开文档的被浏览次数。免费账号会分别有每月 1000 次的免费浏览限额。对于个人使用和学习还是勉强够用。如果是团队协作使用肯定是捉襟见肘,建议还是选择付费账号或者 Swagger 这样的开源免费替代方案。
当前使用量可以在个人账号的 Resource Usage
页面查看:
Postman 的 Mock Server 介绍
Postman Cloud 的另一个高级功能是提供了 Mock Server 的支持。
在接口开发以及接口测试工作中,特别是多个团队并行研发的软件产品,比如前端、后端、APP 这些不同的团队共同来开发产品,经常出现的情况就是很多时候需要依赖其他团队的开发进度,比如 APP 要依赖后端接口来进行调试,或者依赖一些第三方团队提供的接口。如果接口还不具备联调条件,那么为了保证开发进度,按照一定的约定,进行接口的模拟就成为必然选择。
Mock Server 就是提供这种服务的功能模块。在 Postman 中,我们可以将一些响应保存为Example,然后就可以根据这些 example 来方便地创建 Mock 服务脱离原始接口进行消息的响应模拟。
如图是 Postman App 中保存的一个响应 Example,针对同一个接口请求,我们可以将不同的响应结果保存对为多个不同的 example。
创建 Mock Server
在 Postman 中创建 Mock Server 有如下几种方式:
- Postman App 中通过 New 按钮创建
- 在打开 Postman App 时自动弹出的 launch window 中也可创建
- 在 Collection 菜单中创建
- 通过 Postman API 创建
这里以通过 Collection 菜单创建为例,选中 Mock Collection
:
根据 Collection 信息设置 Mock Server:
创建成功,会生成一个在线的 Mock Servr 的访问 URL,本例中即 https://b0fadee4-7560-4b14-a201-599985ce4f0f.mock.pstmn.io
如此我们就完成了当前 Collection 的 Mock 服务创建。这里 Postman 会默认生成一个和当前 Collection 同名的 Environment 环境,在这个环境中默认添加了 url 变量,取值即刚才的 Mock 服务地址。
Mock Server 的使用
完成 Mock 服务的创建以后,我们就可以通过之前生成的 Mock 服务地址来模拟接口的响应了。如图就是访问 Mock 服务已保存的接口,返回的是之前保存的响应 Example 内容。
Mock Server 的匹配算法
看到这里,大家一定会产生一个疑问,Mock Server 是如何根据请求来确定需要响应的内容的?特别是针对同一个请求,我们保存了多个 Example 的情况,模拟的时候响应的是哪一个呢? 这就要向大家来介绍一下 Mock Server 的响应匹配算法了。
如下图,是 Mock Server 用来进行响应匹配的算法顺序
-
首先会根据需要响应的内容格式来筛选响应,比如是 json 格式还是 xml 格式 (根据请求的格式定义)
-
会根据请求的 HTTP 方法来匹配,会剔除不匹配请求 HTTP 方法的响应
-
根据请求的URL路径来匹配。优先匹配严格一致的路径,然后再匹配多层的带
/
的路径,再然后匹配忽略大小写以及 id 信息的路径,如果都没有匹配的情况下则返回没有找到对应的响应。 -
可以通过在请求消息头中携带指定 header 值来确认响应消息。 Postman 支持在消息头中携带
x-mock-response-name
、x-mock-response-id
、x-mock-response-code
,分别可以指定响应的名称(保存的 example 名称)、响应 Example 的 ID(唯一 ID,可通过 API 查询得到)、响应状态码。 -
在剩余的响应中按保存顺序倒序排列,选择最高阈值的进行响应。
如图是创建 Repo 的 Mock 服务,存在多个响应的 Example。 这里匹配了请求方法和请求路径:
下图则是在请求中包含了指定的 Header,x-mock-response-code
, 指定返回状态码为 422 的响应。
可以看到,通过 Postman 的 Mock Server 服务,我们可以在脱离原接口环境的情况下,模拟接口的响应,来完成我们业务调测的需要。 目前免费账号每月通过 Mock Server 提供的调用次数限额为 1000 次
Postman 的监控功能
下面再介绍 Postman Cloud 提供的监控服务。
对于互联网应用,我们的业务是否能够正确的提供服务,是否会因为服务异常或者网络问题导致业务中断?
在和外部团队协作的过程中,如果对方的接口出现变化,我们如何能够及时地获知避免大量的无用功?
因为这些问题的存在,自然对接口进行监控的重要性就显而易见了。Postman 对于接口的监控功能,其实简单来说就是在 Cloud 端提供的一个接口测试任务的定时执行并记录、通知结果的功能。大家也许会说,通过 Jenkins 这样的 CI 集成工具定时调度不是也可以吗?
确实通过 CI 调度也能达到这样的效果,但是通过 Cloud 监控,还可以提供不同访问区域的选择以及针对监控结果的趋势可视化呈现分析等增值能力。
如下图是在 Postman App 的 Collection 菜单中选择新建监控:
下图是在 Postman web 工作空间中创建监控:
下图是创建好的监控以及监控结果界面:
除了通过在 App 和 在 Cloud web 端创建监控外,我们还可以通过 Postman API 来创建监控。
另外需要跟大家说明的是,Postman 的监控功能有以下几个限制需要了解:
-
因为是在云端进行执行的监控,所以监控对象接口需要可以通过互联网访问,对于在内网开发的接口,需要暴露公网访问接口。
-
Postman 目前没有文件存储功能,所以不支持在接口请求中附加文件。
-
同上,也不支持使用 data file 提供 data 变量。
-
接口的执行记录不会记录请求和响应的消息体。
-
目前免费账号的 monitor 接口执行次数限额为每月 1000 次。
Postman 的开放 API
我们除了通过Postman App 以及 cloud 端的 web 界面来进行 Collection、Environment、Mock Server、Monitor 等的创建和管理外,Postman Cloud 也提供了自身的 API 接口,方便使用者从自研的工具或脚本中来调用,更加方便地对 Postman 提供的相关服务进行调度和管理。
Postman 的 API 是通过云端的 Integration 来提供的。(对于专业版以上的账号,还可使用其他一些集成的第三方工具)
获取鉴权码
要使用 Postman API,首先需要需要生成调用的鉴权码。从上图界面进入,选择 Get API Key
:
生成以后,可以在 Existing API Keys
中查看当前的 Key 值:
Postman API 对于鉴权码的使用, 有两种方式:
-
是通过在请求消息的 header 中 增加一个
X-Api-Key
的消息头来携带这个 key 值进行鉴权 -
通过在请求 url 中携带查询参数
apikey
来携带,如:
|
|
如果不携带鉴权码,则接口会返回如下报错:
|
|
访问频率限制
和大部分 Restful API 服务类似, 为防止 DDOS 攻击,Postman API 对于接口的访问频次也进行了限制,每分钟访问不超过 60 次,在响应消息中可以通过 X-RateLimit-Limit
、X-RateLimit-Remaining
、X-RateLimit-Reset
等几个自定义消息头来获知此限制以及剩余次数、重置时间。如下面获取所有 Collection 的接口:
调用实例
下面再来看几个 Postman API 的调用实例:
- 获取 Collection 信息
在上一张频率限制的图片上,我们访问的获取当前账号下所有 Collection 的接口,响应如:
|
|
通过给定相关接口的 id,我们就可以获取单个 Collection 的详细信息,对应的接口:
|
|
比如这里可以利用 Postman 的 Pre-Script,先获取到指定名称如 PostmanAPI 的 Collection 的 id,再将 id 赋值给环境变量 {{collectionID}}, 代码如下:
|
|
如图
- 获取 Environment 信息
类似的,我们也可以这样来获取单个的 environment 信息:
pre-Script 代码如下;
|
|
调用截图:
- 运行指定 monitor
我们也可以通过接口来立刻执行指定的 Monitor,接口返回执行结果如图:
除了上面的几个例子,关于Postman API 支持的详细接口说明可以参见 官方接口说明文档,同样,目前针对免费账号的接口调用次数限制也是 1000 次。
结语
以上就是对 Postman Cloud 提供的高级功能的介绍。可以看到,通过 Postman Cloud 我们可以借助云端的服务资源完成一些本地 App 不易实现的增值功能,更加方便在团队内进行共享和协作,增强便利性的同时加速我们接口开发或测试进度。Postman 的免费版对于这些增值的服务也是完全支持的,但使用额度上会有一定限制。而这些增值服务,我们其实也可以通过一些开源工具来自行实现,后续有机会再向大家分享。
本系列关于 Postman 工具的系统介绍到此就结束了。欢迎大家在读者圈或者加入微信群继续共同交流测试技术、分享行业动态,共同成长!