一、接口定义

软件不同部分之间的交互接口。通常就是所谓的API――应用程序编程接口,其表现的形式是源代码。 —— [ 百度百科 ]
我们常说的接口一般指两种:
(1)API:应用程序编程接口。程序间的接口
(2)GUI:图形用户界面。人与程序的接口
这里我们所说的接口特指API接口。
API接口定义:对协议进行定义的引用类型。
好多公司开发人员分前后端,他们之间如何配合工作的,就是其中一方定义接口,另一方来调用接口,以实现预期功能。

二、接口的分类

(1)HTTP接口
(2)Webservice接口
(3)RESTful接口
WebService接口是走soap协议,请求报文和返回报文都是xml格式,通过SoapUI工具进行测试;
HTTP API接口走HTTP协议,通过路径来区分调用的方法,请求报文入参有多种形式,返回报文一般为json串,最常见的是get和post方法。

三、为何要进行接口测试

1、接口测试必要性

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

2、接口测试原理

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

3、接口测试范围

接口的功能、性能、安全性。重点关注数据的交换,传递和控制管理过程,还包括处理的次数。
接口测试对象是接口,但随着系统复杂度越来越高,接口越来越多,完全覆盖是一件很困难的事情。通常情况下主要测试最外层的两类接口:数据进入系统的接口(调用外部系统的参数为本系统使用)、数据流出系统接口(验证系统处理后的数据是否正常)

四、接口文档示例

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

接口说明
    调用的url
    请求方法(get、post)
    请求参数,参数类型、请求参数说明
    返回参数说明
    返回示例

2、示例:

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

五、Postman工具简介

1、Sidebar侧边栏

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

2、Header toolbar


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

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

(2)POST:URI 传参

(3)POST:Form-data 传参

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

(5)POST:raw 传参

(6)POST:binary 传参

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

增加auth信息

    DigestAuth
    Hawk Auth
    OAuth1.0(verify signature)
(8)Headers——添加header

2、单一接口测试流程

示例API:https://developers.douban.com/wiki/?title=book_v2#get_book
豆瓣搜索图书API

步骤一:使用Postman工具发送该Get请求,如下图:
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按钮,将接口保存到一个集合(可以保存到一个现有集合中或者新建一个集合),如下图:
保存接口到集合

4、将集合保存到本地

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

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

(1)打开命令行窗口,运行如下命令:
D:\git-local>newman run MyCollection1.postman_collection.json -g globals.postman_globals1.json
(2)执行结果如下

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

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


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

7、假设开发修复了接口bug,接口响应时间减少了,我们需要回归测试。

(我们将断言响应小于200 ms,修改成1000 ms,让断言passe)

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

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

测试脚本如下:

参数化json文件内容如下

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

1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16

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


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

结果还不错,执行了3次,参数都是取自用例文件(json文件),断言也取自用例文件。
美中不足的是,第二个和第三个接口也跟着迭代了3次(这并不是我们期望的结果),这是因为集合运行器中的迭代次数是针对所有接口的设置。
(2)那如果,我们想第一个接口运行3遍,第二、三个接口只运行一遍,该如何做呢?Postman 给我们提供了一个内置方法,设置接口运行顺序postman.setNextRequest(”);

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

很好,第一次迭代,执行了3个接口;第二、三次迭代只执行了第一个接口。
---------------------
作者:Storm啊
来源:CSDN
原文:https://blog.csdn.net/duzilonglove/article/details/78645467

(转)接口测试工具Postman使用实践的更多相关文章

  1. 数据接口测试工具 Postman 介绍

    此文介绍好用的数据接口测试工具 Postman,能帮助您方便.快速.统一地管理项目中使用以及测试的数据接口. 1. Postman 简介 Postman 一款非常流行的 API 调试工具.其实,开发人 ...

  2. 接口测试工具postman/jmeter基本使用

    一.接口的分类: 最常用的两种接口webservice接口和http api接口:1.webservice接口走soap协议通过http传输,请求报文和返回报文都是XML格式,现在测试的时候都通过工具 ...

  3. 接口测试工具---postman下载地址

    接口测试工具---postman下载地址: https://app.getpostman.com/app/download/win64?_ga=2.3555895.622696496.15081214 ...

  4. 接口测试工具(Postman)

    给大家介绍一款HTTP接口测试工具 -- Postman ! 优点: 1. 支持参数名与参数值自定义,无论head还是body 2. 支持多种方法调用,包含get与post 3. 支持鉴权加密,包含b ...

  5. 服务端测试之接口测试工具——postman

    今天跟大家分享一个非常常见大家也非常熟悉的测试工具——postman. 1.安装postman postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件.打开chrome浏览器, ...

  6. 接口测试工具Postman接口测试图文教程

    Postman接口测试工具使用 一.前言     在前后端分离开发时,后端工作人员完成系统接口开发后,需要与前端人员对接,测试调试接口,验证接口的正确性可用性.而这要求前端开发进度和后端进度保持基本一 ...

  7. 接口测试工具——postman

    Postman 之前是作为Chrome 的一个插件,现在要下载应用才能使用. 以下是postman 的界面: 各个功能区的使用如下: 快捷区: 快捷区提供常用的操作入口,包括运行收藏夹的一组测试数据, ...

  8. 接口测试工具postman

    一. 安装 1. 免费官网链接:https://www.getpostman.com/postman,下载好后双击.exe程序安装即可 2. 注意事项:建议安装在非系统盘,即C盘以外的盘,路径最好用全 ...

  9. 关于接口测试工具postman与DHC介绍

    一.Postman背景介绍 用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具.今天给大家介 ...

随机推荐

  1. HTML系列:js和css多种方式实现隔行变色

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. Docker下打包FastDFS镜像以及上传遇到的问题

    官方地址:https://github.com/happyfish100/fastdfs 一.先下载个包,然后解压(自己找个目录下载即可) [root@localhost soft]# wget ht ...

  3. 洛谷--P1028 数的计算(递推)

    题意:链接:https://www.luogu.org/problem/P1028 先输入一个自然数n (n≤1000) , 然后对此自然数按照如下方法进行处理: 不作任何处理; 在它的左边加上一个自 ...

  4. me.chanjar.weixin.common.error.WxErrorException: {"errcode":40013,"errmsg":"invalid appid hint: [xxxxxxxxxx]"}

    错误解决思路: 1.看看appid和appsecret的配置信息是否正确 2.查看前后端通信的http或者https协议是否正确( http://xxxxxxx 写成https://xxxxxxx)

  5. python递归函数和河内塔问题

    关于递归函数: 函数内部调用自身的函数. 以n阶乘为例: f(n) = n ! = 1 x 2 x 3 x 4 x...x(n-1)x(n) = n x (n-1) ! def factorial(n ...

  6. 怎样遍历NodeList对象

    因为NodeList对象是一个类似数组的对象, 且它自带了一个 forEach() 方法, 因此可以使用 forEach() 遍历, 它的用法和 Array 里面的 forEach() 是完全一样的. ...

  7. Spring-Cloud之Hystrix熔断器-5

    一.在分布式系统中,服务与服务之间的依赖错综复杂,一种不可避免的情况就是某些服务会出现故障,导致依赖于它们的其他服务出现远程调度的线程阻塞 Hystrix是Netflix 公司开源的一个项目,它提供了 ...

  8. deppin Linux下安装docker

    首先楼主用的是deppin15.11 docker 简介:Docker作为一个软件集装箱化平台,可以让开发者构建应用程序时,将它与其依赖环境一起打包到一个容器中,然后很容易地发布和应用到任意平台中. ...

  9. Angular复习笔记5-指令

    Angular复习笔记5-指令 在Angular中,指令是一个重要的概念,它作用在特定的DOM元素上,可以扩展这个元素的功能,为元素增加新的行为.本质上,组件可以被理解为一种带有视图的指令.组件继承自 ...

  10. 2019 58同城java面试笔试题 (含面试题解析)

    本人3年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.58同城等公司offer,岗位是Java后端开发,最终选择去了58同城. 面试了很多家公司,感觉大部分公司考察的点 ...