接口测试工具Postman使用实践

栏目: 编程工具 · 发布时间: 5年前

内容简介:本篇文章内容包括:接口的定义:接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以将内部操作分离出外部沟通方法,使其能在修改内部逻辑时而不影响外界其他实体与其交互的方式。在软件测试中,我们常说的接口一般指两种:(1)GUI接口(Graphical User Interface):图形用户界面,人与程序的接口 ;(2) API接口(Application Programma Interface):应用程序编程接口或程序间的接口。本书中提到的接口特指API接口。

本篇文章内容包括:

    • 接口的定义
    • 接口的分类
    • 为何要进行接口测试
    • 接口文档示例
    • 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.示例:

接口测试工具Postman使用实践 接口测试工具Postman使用实践

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

五、Postman工具简介

接口测试工具Postman使用实践

1.Sidebar侧边栏

Postman侧边栏允许你查找、管理请求和集合。侧边栏分为两个主要的选项卡,包括历史和集合选项卡。

可以拖动右边的边来调整侧边栏的宽度。侧边栏也可以隐藏到小屏幕(标题栏 view—>toggle side bar)。

(1)历史选项卡

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

(2)集合选项卡

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

2.Header toolbar

接口测试工具Postman使用实践

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

接口测试工具Postman使用实践

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

接口测试工具Postman使用实践

(2)POST:URI 传参

接口测试工具Postman使用实践

(3)POST:Form-data 传参

接口测试工具Postman使用实践

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

接口测试工具Postman使用实践

(5)POST:raw 传参

接口测试工具Postman使用实践

(6)POST:binary 传参

接口测试工具Postman使用实践

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

    • GET Basic Auth

      接口测试工具Postman使用实践

增加auth信息

接口测试工具Postman使用实践
    • DigestAuth
    • Hawk Auth
    • OAuth1.0(verify signature)

(8)Headers——添加header

接口测试工具Postman使用实践

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

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

接口测试工具Postman使用实践

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

接口测试工具Postman使用实践

步骤二:添加测试

接口测试工具Postman使用实践

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

接口测试工具Postman使用实践

4.将集合保存到本地

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

接口测试工具Postman使用实践

5.命令行通过Newman 运行集合

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

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

(2)执行结果如下

接口测试工具Postman使用实践

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

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

接口测试工具Postman使用实践

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

接口测试工具Postman使用实践

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

接口测试工具Postman使用实践

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

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

登录接口如下:

接口测试工具Postman使用实践

测试脚本如下:

接口测试工具Postman使用实践

参数化json文件内容如下

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

接口测试工具Postman使用实践

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

接口测试工具Postman使用实践

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

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

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

接口测试工具Postman使用实践

注意:迭代次数从0开始

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

接口测试工具Postman使用实践

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


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Data Structures and Algorithms in Python

Data Structures and Algorithms in Python

Michael T. Goodrich、Roberto Tamassia、Michael H. Goldwasser / John Wiley & Sons / 2013-7-5 / GBP 121.23

Based on the authors' market leading data structures books in Java and C++, this book offers a comprehensive, definitive introduction to data structures in Python by authoritative authors. Data Struct......一起来看看 《Data Structures and Algorithms in Python》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具