可以用于Restful接口测试的测试工具非常多,常见的有soapUI、Jmeter、fiddler等都经常用来做接口测试。但是目前在接口测试人员中最流行,最常见还是本问向大家介绍的Postman。 本篇我们结合Github的API来向大家介绍Postman的基本用法

Postman 的安装

Postman最早的版本,以及很长一段时间都是以Chrome插件的形式存在的。以至很多人甚至认为postman就是google的官方工具插件,我们目前能看到的大量资料也都是基于chrome的插件形式来进行介绍的。

但是目前Postman其实已经推出了独立的本地App程序,并且官方已经宣布不再支持chrome的插件形式。虽然插件版本现在还能使用,可是毕竟相比Native版本,受限于chrome浏览器的功能,很多功能在插件版本中是欠缺的,比如cookie的内建支持,代理功能,控制台功能等等。所以此处就不再介绍插件版本的安装。

本地版本的安装,其实也非常简单。从官网根据自己操作系统的类型选择相应的版本下载即可。

这里还有一点要注意下,在postman的官网,我们最好注册一个账号,后续在使用postman的时候很多高级功能需要用这个账号登录后才可以使用。

安装完成,在桌面上出现Postman那个pose很帅的小人图标

,则安装完成。

Postman 主界面

打开Postman进入,首次会提示选择希望创建的任务类型。

这里有六种任务类型,我们再下面的实战中都会详细讲解,这里先简单说明一下:

  • Request 是Postman软件的基础和核心,也就是通过这个功能来创建request请求,完成接口测试的核心工作。

  • Collection 其实是个集合,我们可以认为是一批Request请求的集合,或者说测试集。它也是Postman一些进阶功能的基本单位

  • Environment,字面理解就是环境,其实可以认为是一些配置变量的集合,实际应用中可以起到通过不同配置区分不同测试环境的效果

    后面这三个都是Postman的高级功能

  • API documention,是通过我们调试通过的request来自动生成接口文档,便于团队的共享和接口的交付。

  • Mock server

    在我们进行接口测试或开发的时候,很多时候是需要模拟对端的接口服务器的,Mock server就起到的模拟服务器端的作用。

  • Monitor

    这是个监控功能,通过monitor我可以监控我的接口是不是正常。说白了,这其实就是个定时的接口执行功能。

以上大致了解下几种不同的任务类型,我们先关掉这个界面,我们再来看看主界面的功能区间

Banner 区域

首先是上面的菜单栏,对应功能区的各项功能,在菜单栏上都能找到对应的菜单。然后是下面的banner区域。

从左到右依次介绍:

  • NEW 会打开启动时的创建窗口,用于创建六种类型的任务。

  • Import 可以用于导入外部文件,外部文件可以是postman的Collection格式文件,数据文件,以及其他的API定义文件

  • Runner 会启动Collection runner,它是一个运行器,用于运行已经建立的测试任务。我们后面会有详细介绍

  • 添加按钮, 可以新建tab,或者多开一个postman程序,或者runer程序。

  • 中间 My WorkSpace 是选择使用的workspace,但这个需要账号登录,会同步云端的workspace设置。每个账号会有一个默认的workspace,workspace它是一个工作空间,大家可以理解成类似项目或者工程。

banner条右侧还有几个按钮:

  • -第一个是同步,也是在有账号的情况下,可以在多个电脑间同步workspace内的相关接口测试设计。

  • -第二个proxy,则类似前面介绍过的fiddler,提供代理抓取API功能。当然这个功能postman不像Fiddler那样丰富

  • -第三个按钮包括setting以及文档指南。 setting里是软件的本地配置

  • -第四个按钮是消息通知,很好理解,会显示一些提醒信息

  • 然后是postman的twitter,在墙后面就不要去看了

  • -最后是登录,可以用postman的账号的登录

Setting 设置

Postman 工具的使用属性和应用设置我们可以在Setting 中国进行设置。以下分别说明:

  • General

  • Themes

  • Shortcuts

工具快捷键

  • Data

工具数据导入导出

  • add-ons

Newman 插件下载方法

  • Sync

同步设置

  • certificates

本地证书设置

  • Proxy

本地网络代理设置

  • update

升级设置

  • about

工具"关于...“等版本信息

左侧边栏

- filter筛选栏,筛选显示不同的消息

- history是操作消息记录清单

- collection如前面介绍,显示请求集合

底边状态栏

- 最左面,显示和关闭左侧边栏

- 然后是搜索功能,这个容易理解

- 第三个是控制台,可以在这里看到消息相互的详细信息

- 用户指南

- 调整功能区显示样式

- 快捷键清单参考

- 帮助相关的连接

主功能区

主要包括上下两部分,上面是request区,下面是response区。也可以分成左右显示。

  • Request区域

request部分默认开启了一个选项卡,可以新开多个选项卡便于同时编辑。

默认使用的是GET方法,这也是使用最多的HTTP方法,下拉可以选择其他的方法,常用的还有哪些? POST、PUT、Delete等。

URL部分输入请求的地址。比如我们输入GithubAPI的根地址。

param是参数管理界面,在这里我们可以添加参数(有key-value,块编辑模式)。

Send发送请求,小箭头下send and download,会在发送以后把响应消息导出成json保存。旁边的save,保存功能,其实是把这个request作为一个case保存到collection里。

鉴权部分,虽然request编辑器已经足够强大可以处理鉴权消息,但是很多时候鉴权是个使用频率很高的功能,所以Postman单独把鉴权部分抽取出来,并且封装了目前的绝大部分鉴权方式

  • 继承,默认鉴权方式

  • 不鉴权

  • bearer token鉴权,一般也叫Json web token,其实就是发送一个json格式的token令牌,服务端会针对token进行解密验证

  • Basic Auth基础验证,提供用户名密码验证,postman 会自动生成authorization,常用鉴权方式

  • digest auth,摘要式认证

    在基本身份认证上面扩展了安全性,服务器为每一个连接生成一个唯一的随机数,客户端用这个随机数对密码进行MD5加密,然后返回服务器,服务器也用这个随机数对密码进行加密,然后和客户端传送过来的加密数据进行比较,如果一致就返回结果。

    它是一个二次验证的过程,会有两次认证交互消息

    客户端请求资源->服务器返回认证标示->客户端发送认证信息->服务器查验认证

  • Oauth,一般用于第三方认证,有1,2两个版本,需要提供的信息不太一样。也是常用的鉴权方式

  • Hawk 认证,是另一种认证方案,采用的叫消息码认证算法,和Digest认证类似,它也是需要二次交互的

  • AWS签名认证,是针对亚马逊的AWS公有云用户签名的认证方式

  • NTLM 是微软的局域网管理认证协议

大家有个基本了解即可,一般比较常用的就是basic以及OAuth2了。

header就是消息头管理,可以定义头部信息。

Body,请求消息体。一般Post、put、patch等会更新内容的请求才会携带消息体,

旁边pre-script,是指在请求发送前,可以做一些预处理的工作,类似junit等单元测试框架中的setup方法,支持js脚本语法

Test则是在响应以后,对响应进行校验或其他处理的,类似junit框架中的teardown方法,同样支持js脚本语法

cookie管理postman本地cookie信息

code是一个方便程序员的功能,可以自动将接口请求转化成相关语言编码,可以看到支持的语言非常丰富,基本涵盖了各种主流编程语言。

  • Response区域

响应消息右上角是状态码,悬停可以看到详细解释。另外是响应时间(从发出请求到返回客户端接收的时间),以及消息大小(含消息头和消息体)。

响应body部分,即消息体。包括以下几个按钮

  • - pretty,可以根据表现类型进行格式化显示,默认json,如果是其他格式类型,可以选择对应形式进行格式化。

  • - Raw 则是未格式化的形式

  • - preview 则是预览,就是在浏览器里渲染后呈现的样子,比如返回的是html就很直观。

- 旁边是自动换行按钮。

右边是拷贝到剪切板和查询按钮(正则,大小写敏感、全词匹配)

其他的几个tab:

  • - cookie:响应消息的cookie信息

  • - header:响应消息的header头部信息

  • - Test Results:在请求中添加test Script后,这里会显示测试脚本的校验结果

Postman中完成Github鉴权

从Github API文档中,我们可以看到Github API支持多种鉴权方式

  • Basic authentication

curl -u "username" https://api.github.com

这是基本鉴权方式

  • OAuth2 token (sent in a header)

curl -H "Authorization: token OAUTH-TOKEN" https://api.github.com

也支持通过在Header中携带Oauth2的token进行鉴权。在github用户设置中可以生成这个token。

个人设置 > Settings > Developer settings > Personal access tokens

生成后会获得一个token字串

  • OAuth2 token (sent as a parameter)

curl https://api.github.com/?access_token=OAUTH-TOKEN

或者通过在URL中携带token参数鉴权。

Postman中,可以在Collection中设置鉴权

在具体的请求消息中,可以选择Inherit auth from parent,即继承上一层的鉴权。发送请求后,可以看到已经在header中携带了鉴权的token信息

根据[Github API的定义](https://developer.github.com/v3/#rate-limiting),对于请求有访问限制,即未鉴权的请求限制访问为每分钟60次,对于已鉴权的请求访问每分钟5000次。

我们从响应消息的消息头中可以看到这个设置,如:

X-RateLimit-Limit →5000X-RateLimit-Remaining →4999X-RateLimit-Reset →1546528838

Postman实现基本HTTP方法

现在我们再来看如何在Postman中实现常用的HTTP方法。还是以GithubAPI为例:

  • GET方法 - 获取Repo信息

这里是获取Github上Repo信息的API,这里有两个路径参数,owner代表用户账号,repo指需要获取的repo信息。 如图是在postman中设置路径参数的方法。

  • POST方法 - 创建Repo

创建Repo的示例(https://developer.github.com/v3/repos/#create)

POST /user/repos

这里是一个创建hello world的Repo的请求消息体示例

{  "name": "Hello-World",  "description": "This is your first repository",  "homepage": "https://github.com",  "private": false,  "has_issues": true,  "has_projects": true,  "has_wiki": true}

这里name是必填字段,其他是repo的属性设置。 在Postman中如图在Postman中如图提交,返回状态码201 created,即可创建一个Hello world的Repo

在Github中,可以看到账号下新增了一个hello world的repo,并且包含有已设置的issue、projects、wiki这几个栏目

  • PATCH方法 - 修改Repo

GitHub可以通过PATCH方法来对Repo进行修改.PATCH方法和PUT方法都是update的修改方法,但PATCH方法更多用在部分修改的场景下,PUT方法则更多是整体替换。

PATCH /repos/:owner/:repo

比如上例中hello world这个repo修改Repo中的部分信息,可以去除projects和wiki这两个栏目 消息体:

{  "name": "Hello-World",   "description": "This is your first repository",  "homepage": "https://github.com",   "has_projects": false,  "has_wiki": false}

Postman中如图:

回到Github,可以看到Repo中对应的栏目已经不见了

  • PUT方法 - 设置或替换Topic

Topic是Github上Repo的搜索关键字,便于用户进行repo查询。

PUT /repos/:owner/:repo/topics

Github API设置topic的api是使用put方法提交一个topic数组,如

{  "names": [    "restapi",    "atom",    "chengxiaqiucao"  ]}

这时在Postman中提交,会发现有如下报错:

这是因为Github API要求设置topic时,需要在header中设置accept字段,取值:

application/vnd.github.mercy-preview+json

正确设置后,则可以看到设置成功,返回200 OK

大家可能会发现一个小bug,当设置的topic存在大写字符时,会出现格式报错。比如大家参照官方示例设置"API"这样的topic,会发现设置不成功。大家可以尝试一下。

  • DELETE方法 - 删除Repo

Github API中,使用delete方法可以删除repo

DELETE /repos/:owner/:repo

删除成功后,返回204. 此时再查询账号,应该发现Hello-World这个repo已经被删除了

结语

至此,我们通过Github API中几个实际的例子,学习了如何通过Postman来完成一些基本的HTTP方法的请求发送和响应查看,通过查看结果状态码或响应内容来判断结果正确性。

当然Postman的功能远不止于此,API接口测试中也还有很多复杂的场景需要特别处理。 欢迎大家继续关注本系列

举报/反馈

秋草观测台

277获赞 147粉丝
资深测试人,历史,古文,美食爱好者
科技领域爱好者
关注
0
0
收藏
分享