前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >接口测试工具 Postman 使用实践

接口测试工具 Postman 使用实践

作者头像
IT小马哥
发布2022-04-02 17:02:03
1.4K0
发布2022-04-02 17:02:03
举报
文章被收录于专栏:Java TaleJava Tale

自动化测试

一、接口定义

软件不同部分之间的交互接口。通常就是所谓的 API――应用程序编程接口,其表现的形式是源代码。 —— [ 百度百科 ]

我们常说的接口一般指两种:

  1. API:应用程序编程接口。程序间的接口
  2. GUI:图形用户界面。人与程序的接口

这里我们所说的接口特指 API 接口。API 接口定义:对协议进行定义的引用类型。

好多公司开发人员分前后端,他们之间如何配合工作的,就是其中一方定义接口,另一方来调用接口,以实现预期功能。

二、接口的分类

1. 接口分类
  • HTTP 接口
  • Webservice 接口
  • RESTful 接口

WebService 接口是走 soap 协议,请求报文和返回报文都是 xml 格式,通过 SoapUI 工具进行测试;

HTTP API 接口走 HTTP 协议,通过路径来区分调用的方法,请求报文入参有多种形式,返回报文一般为 json 串,最常见的是 get 和 post 方法。

image-20220401211423619
image-20220401211423619

三、为何要进行接口测试

1. 接口测试必要性

当今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,所以就要做接口测试。

同时,接口测试相对容易实现自动化持续集成,且相对 UI 自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。

接口持续集成是为什么能低成本高收益的根源。现在很多系统前后端架构是分离的,从安全层面来说,只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。

前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。

2. 接口测试原理

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

3. 接口测试范围

接口的功能、性能、安全性。重点关注数据的交换,传递和控制管理过程,还包括处理的次数。

接口测试对象是接口,但随着系统复杂度越来越高,接口越来越多,完全覆盖是一件很困难的事情。

通常情况下主要测试最外层的两类接口:数据进入系统的接口(调用外部系统的参数为本系统使用)、数据流出系统接口(验证系统处理后的数据是否正常)

四、接口文档示例

1. 接口文档应该包括哪几部分?
  • 接口说明
  • 调用的 url
  • 请求方法(get、post)
  • 请求参数,参数类型、请求参数说明
  • 返回参数说明
  • 返回示例
截屏2022-04-01 下午9.16.58
截屏2022-04-01 下午9.16.58

2. 示例

截屏2022-04-01 下午9.17.55
截屏2022-04-01 下午9.17.55

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

五、Postman 工具简介

截屏2022-04-01 下午9.19.36
截屏2022-04-01 下午9.19.36
1. Sidebar 侧边栏

Postman 侧边栏允许你查找、管理请求和集合。侧边栏分为两个主要的选项卡,包括历史和集合选项卡。可以拖动右边的边来调整侧边栏的宽度。侧边栏也可以隐藏到小屏幕(标题栏 view—>toggle side bar)。

(1)历史选项卡

通过 Postman 应用程序发送的每个请求都保存在侧边栏的 History 选项卡中。

(2)集合选项卡

在侧栏中创建和管理集合选项卡的集合。

2. Header toolbar
Image
Image

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 等语言)
Image
Image
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”。

Image
Image

(2)POST:URI 传参

Image
Image

(3)POST:Form-data 传参

Image
Image

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

Image
Image

(5)POST:raw 传参

Image
Image

(6)POST:binary 传参

Image
Image

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

  • GET Basic Auth
Image
Image
  • 增加 auth 信息:
Image
Image
  • DigestAuth
  • Hawk Auth
  • OAuth1.0(verify signature)

(8)Headers——添加 header

Image
Image
2. 接下来,我们拿个开放 API 来演示下单一接口测试流程

示例 API:https://developers.douban.com/wiki/?title=book_v2#get_book

Image
Image

步骤一:使用 Postman 工具发送该 Get 请求,如下图。

Image
Image

步骤二:添加测试。

Image
Image

上图针对该 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 按钮,将接口保存到一个集合(可以保存到一个现有集合中或者新建一个集合),如下图:

Image
Image
3. 将集合保存到本地

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

Image
Image
4. 命令行通过 Newman 运行集合

(1)打开命令行窗口,运行如下命令:

D:\git-local>newman run MyCollection1.postman_collection.json -g globals.postman_globals1.json

(2)执行结果如下:

Image
Image

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

5. 通过 Jenkins 调用 Newman,执行接口测试
Image
Image

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

Image
Image
6. 假设开发修复了接口 bug

接口响应时间减少了,我们需要回归测试。(我们将断言响应小于 200 ms,修改成 1000 ms,让断言 passed)

Image
Image
7. 演示一个如何调用 data file 参数化用例

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

Image
Image

测试脚本如下:

Image
Image

参数化 json 文件内容如下:

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

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

Image
Image

结果还不错,执行了 3 次,参数都是取自用例文件(json 文件),断言也取自用例文件。

美中不足的是,第二个和第三个接口也跟着迭代了 3 次(这并不是我们期望的结果),这是因为集合运行器中的迭代次数是针对所有接口的设置。

(2)那如果,我们想第一个接口运行 3 遍,第二、三个接口只运行一遍,该如何做呢?Postman 给我们提供了一个内置方法,设置接口运行顺序postman.setNextRequest('');

Image
Image

注意:迭代次数从 0 开始。

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

Image
Image

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

本文由 小马哥 创作,采用 知识共享署名4.0 国际许可协议进行许可 本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名 最后编辑时间为: 2022/04/01 21:27

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、接口定义
  • 二、接口的分类
    • 1. 接口分类
    • 三、为何要进行接口测试
      • 1. 接口测试必要性
        • 2. 接口测试原理
          • 3. 接口测试范围
          • 四、接口文档示例
            • 1. 接口文档应该包括哪几部分?
            • 五、Postman 工具简介
              • 1. Sidebar 侧边栏
                • 2. Header toolbar
                  • 3. Builder
                    • 4. Console
                    • 六、借助 Postman 完成 HTTP 请求接口测试
                      • 1. 借助 Postman Echo 演示下各种请求的构建方法
                        • 2. 接下来,我们拿个开放 API 来演示下单一接口测试流程
                        • 七、Postman + Newman + Jenkins 实现接口自动化测试
                          • 1. 准备工作(具体步骤参考附件文档-作者提供)
                            • 2. 将接口保存到集合
                              • 3. 将集合保存到本地
                                • 4. 命令行通过 Newman 运行集合
                                  • 5. 通过 Jenkins 调用 Newman,执行接口测试
                                    • 6. 假设开发修复了接口 bug
                                      • 7. 演示一个如何调用 data file 参数化用例
                                      相关产品与服务
                                      持续集成
                                      CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
                                      领券
                                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档