接口测试工具Postman使用实践

举报
孔皮皮 发表于 2019/09/02 20:34:59 2019/09/02
【摘要】 接口测试工具Postman使用实践本篇文章内容包括:接口的定义接口的分类为何要进行接口测试接口文档示例Postman工具简介借助Postman完成HTTP请求接口测试Postman + Newman + Jenkins 实现接口自动化测试一、接口定义接口的定义:接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以将内部操作分离出外部沟通方法,使其能在修改内部逻辑时而不影响外界其...

接口测试工具Postman使用实践

本篇文章内容包括:

  • 接口的定义

  • 接口的分类

  • 为何要进行接口测试

  • 接口文档示例

  • Postman工具简介

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

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


一、接口定义

接口的定义:接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以将内部操作分离出外部沟通方法,使其能在修改内部逻辑时而不影响外界其他实体与其交互的方式。 在软件测试中,我们常说的接口一般指两种:(1)GUI接口(Graphical User Interface):图形用户界面,人与程序的接口 ;(2) API接口(Application Programma Interface):应用程序编程接口或程序间的接口。本书中提到的接口特指API接口。 API接口定义:应用程序接口是一组定义、程序及协议的集合,通过 API 接口实现计算机软件之间的相互通信。API 的一个主要功能是提供通用功能集。程序员通过使用 API 函数开发应用程序,从而可以避免编写无用程序,以减轻编程任务。很多公司将开发岗位分为前端工程师、后端工程师,他们之间是如何配合工作的呢?一般来说,双方会协商接口的定义方式,然后其中一方定义接口(一般由后端定义接口的团队较多),另一方来调用接口,以实现预期功能。

二、接口的分类

依据所遵循协议的不同,我们将常见接口简单分为以下3类: (1)HTTP接口:基于HTTP协议开发的接口。这个并不能排除没有使用其他的协议。 (2)WebService接口:Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。简单来说,假如要从第三方网站或服务器上获取资源或信息,一般来说,对方不会直接将数据库共享给你,他只能给你提供一个方法来获取数据,通过引用该接口就能达到同步数据的目的。 (3)RESTful接口:简称 REST,是描述了一个架构样式的网络系统,其核心是面向资源,REST专门针对网络应用设计和开发方式,以降低开发的复杂性,提高系统的可伸缩性。
基于B/S架构的软件系统接口大多数为HTTP接口,因此,本书将重点介绍HTTP接口测试方法。要测试HTTP接口,让我们先来了解一下HTTP协议、HTTP请求和响应的相关知识。

三、为何要进行接口测试

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

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

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

接口测试对象是接口,但随着系统复杂度越来越高,接口越来越多,完全覆盖是一件很困难的事情。通常情况下主要测试最外层的两类接口:数据进入系统的接口(调用外部系统的参数为本系统使用)、数据流出系统接口(验证系统处理后的数据是否正常)

四、接口文档示例

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

  • 接口说明

  • 调用的url

  • 请求方法(get、post)

  • 请求参数,参数类型、请求参数说明

  • 返回参数说明

  • 返回示例

2.示例:

pic_001.png

pic_002.png

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

五、Postman工具简介

pic_003.png

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

2.Header toolbar

pic_004.png

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

pic_005.png

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”。

pic_006.png

(2)POST:URI 传参

pic_007.png

(3)POST:Form-data 传参

pic_008.png

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

pic_009.png

(5)POST:raw 传参

pic_010.png

(6)POST:binary 传参

pic_011.png

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

  • GET Basic Auth

pic_012.png

增加auth信息

pic_013.png

  • DigestAuth

  • Hawk Auth

  • OAuth1.0(verify signature)

(8)Headers——添加header

pic_014.png

2.接下来,我们拿个开放API来演示下单一接口测试流程 示例API:https://developers.douban.com/wiki/?title=book_v2#get_book

pic_015.png

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

pic_016.png

步骤二:添加测试

pic_017.png

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

pic_018.png

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

pic_019.png

5.命令行通过Newman 运行集合 (1)打开命令行窗口,运行如下命令: D:\git-local>newman run MyCollection1.postman_collection.json -g globals.postman_globals1.json

(2)执行结果如下

pic_020.png

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

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

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

pic_022.png

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

pic_023.png

8.演示一个如何调用data file 参数化用例 我这里有一个集合,3个接口,第一个接口为登录接口,第二个接口为获取登录用户信息接口,第三个接口为修改密码接口 登录接口如下:

pic_024.png

测试脚本如下:

pic_025.png

参数化json文件内容如下

pic_026.png

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

pic_027.png

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

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

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

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

pic_029.png

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



本文转载自异步社区。

原文链接:https://www.epubit.com/articleDetails?id=N48efe99a-278f-46ed-ad30-60712c695c30

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。