龙空技术网

干货|关于postman接口测试,你了解多少?

软件测试-Mike 379

前言:

此刻咱们对“python接口测试用例”都比较看重,你们都需要学习一些“python接口测试用例”的相关文章。那么小编同时在网络上汇集了一些关于“python接口测试用例””的相关资讯,希望同学们能喜欢,大家一起来了解一下吧!

一.关于接口的介绍

什么是接口:不同的系统和功能之间实现连接的口,可分为硬件接口和软件接口。

1.1接口的分类

硬件接口:如我们常见的USB接口,耳机接口等 (硬件接口 起到了数据传输的作用)。

USDB接口

软件接口:软件不同部分之间的交互接口,即我们常见的API接口(Application Programming Interface,简称API),也称为应用程序接口。例如:支付宝支付接口,微信支付接口(通俗讲:别人写好的代码,或者编译好的程序,提供给你使用,就叫作api 调用的时候需要鉴权码token,即鉴定是否有权限去调用该接口)。

人脸识别即通过调用API接口来实现的

再举个常见例子给大家介绍一下什么是API,比方说你在淘宝上下单付款之后,商家使用顺丰发货,然后你就可以在淘宝上实时查看顺丰的物流信息。那我们想一下,淘宝和顺丰作为两家独立的公司,为什么会在淘宝上可以实时查看顺丰的物流信息呢,这就用到了API,当查看自己快递信息时,淘宝平台利用了顺丰提供的API接口,可以实时调用物流信息呈现在自己的网站上。

1.2 软件接口的分类

内部接口:开发人员自己开发,对自身系统提供的接口,一般为了尽早介入测试,所以一般接口开发完,测试人员就可以进行内部的接口测试。

外部接口:公司外部提供的接口(提供给第三方使用)

例如:我们自己的开发系统调用调用某信,微信供我们调用的接口为外部接口。

2 .为什么需要接口?

因为可以通过接口这个途径,让内部的数据被外部调用或进行修改。比方说通过微信充值可以改变你卡里的余额。

3.为什么需要做接口测试?

1)现在很多系统前后端是分离的,因为前后端工作进度不一样,所以我们要针对首先出来的接口,以及需要调用其他公司的(银行等)一些接口进行接口测试及验证数据

2)另外,前端验证很容易被绕过,直接请求接口的信息,比如说身份证信息,涉及到金钱交易时。

3)为了尽早介入测试,尽早发现问题。

4.接口测试的重点

测试接口参数传递的正确性,接口功能的正确性,输出结果的正确性,及对各种异常情况容错能力和权限控制。

"接口测试的本质,就是接口的功能测试,是测试接口能否正常的交互数据,通过调用接口,输入一些数据,随后接口返回一些数据来验证接口返回数据的正确性。"

二.Postman简介

Postman 是谷歌开发的一款网页调试和接口测试工具,在我们做接口测试的时候,相当于一个客户端,模拟用户发送任何类型的 HTTP 请求,并将请求数据发送给服务端,从而获取服务端的响应结果,来验证响应结果是否和预期匹配。

1.postman安装

1)下载:

双击"Windows 64-bit"下载

2)安装 双击postman应用程序

双击启动安装

双击桌面上postman图标 进入到postman主界面

打开这样界面,表示下载成功

3)如何使用汉化版postman

下载postMan 汉化包(app.zip) 然后后我们打开postman的安装目录找到app-XXX(XXX为版本号)-resource文件夹,而后将app文件夹复制到此文件夹下即可,然后重启postman运行。(想要领取汉化版的小伙伴可以在评论区回复)

汉化版postman

4)界面主要功能介绍

postman主要功能介绍如上图

三.关于postman的使用

2.1先给大家介绍一下状态码的知识(通过状态码就能判断和分析服务器的运行状态)。

当用户在浏览网页的时候,浏览器会返回一个htttp状态码,主要是用来响应浏览器的请求。通常情况下,一般是3位数字,所有的状态码的首位数字就代表着是什么状态。

状态码首位数字决定了不同的响应状态,有如下:

2 表示成功4 表示请求错误5 表示服务器错误

常用HTTP状态码使用场景,小白直接看 200、400、401、403、404、500 就可以了

200(成功):请求已成功,请求所希望的响应头或数据体将随此响应返回

400(错误请求):服务器不理解请求的语法

401(未授权):请求要求身份验证。对于需要登录的网页,服务器可能返回此响应

403(禁止):服务器拒绝请求

404(未找到):服务器找不到请求的网页

500(服务器内部错误):服务器遇到错误,无法完成请求

2.2获取access_token】为例 创建GET请求和POST的请求如下:

创建collection集合--创建请求----设置HTTP GET请求,并在HTTP请求中输入请求方法,请求URL地址及请求参数

其次创建HTTP POST请求,前一个HTTP请求的响应结果值 是第二个HTTP请求的参数值。

GET和POST是HTTP于服务器交互的方式,常见的请求方法有GET和POST两种,两者区别如下:

1.GET请求用来获取数据,POST请求用来发送数据。

2.GET是把请求的数据放在了URL地址里(如上图所示)格式为:GET+url 地址 ? +传输数据,参数之间用&隔开。get请求没有请求体,如下图所示

请求body为空

而POST把 "数据"放在了HTTP请求体中 如下图所示。

get 请求数据在请求体中

3.GET的参数安全性比较差(因为在url地址中易获取)而GET 的参数安全性高 在body体中

4.GET的URL 在长度上会有限制,而POST没有。即get的参数长度受限,而post的参数长度不受限。

5.GET请求可以直接访问浏览器,而POST请求不能直接使用浏览器访问 ,如下图所示!

GET请求可以直接访问浏览器

而POST请求不能直接使用浏览器访问

2.3为什么要设置环境变量和全局变量

在平时接口测试过程中涉及开发环境,测试环境及生产环境,每种环境对应的IP地址不同,所以在接口测试期间,需要经常修改API地址,这样效率比较低。而且有时候需要调用上一个接口的返回值,手动修改参数也比较慢。

两者区别 :环境变量就是全局变量,而全局变量可以在任何接口里面访问的变量。

获取环境变量和全局变量的值 通过:{{变量名}}

2.4 关于postman的接口关联

postman接口关联思路如下

1.获取上一个接口的返回值

2.将返回值设置成环境变量或者全局变量

3.设置下一个接口的参数形式

接口关联2种方式

1.使用JSON提取器实现

var result=JSON.parse(responseBody); //返回响应结果,提取token值

pm.globals.set("access_token",result.access_token);//把token设置成环境变量供下个接口用

补充一下:什么是JSON格式

数组 格式:{ "key": value} 示例: {"key1":100}字符串格式:格式:{ "key": "value"} 示例: {"key1": "张三"}数组 格式:格式:{ "key" : [value]} 示例:{"key" : [000, 111111]}对象 格式:格式:{ "key": {value}} 示例: {"key” : {"1": "亚索"}}

具体步骤如下:

首先,在GET请求中-Tests中录入代码,获取access_token的值 并把它设置为全局变量 ,Tests模块是后置模式,可以对响应结果进行处理。此时我们可以通过给变量赋值的形式把响应结果保存到变量中。

通过上图所示 "快速查看"来检查是否成功获取access_token的值

其次,在post请求参数中引用access_token的值,格式为{{access_token}}

前面将access_token的值保存到了环境变量中,所以在该请求中,只需要通过参数引用即可

2.使用正则表达式实现【关联步骤同上】

1)使用正则表达式提取token值 //正则表达式提取器 match 匹配

var value=responseBody.match(new RegExp('"access_token":"(.+?)",'))

console.log(value[1])

pm.globals.set("access_token", value[1]);

2)在第二个接口中使用{[1]}方式取值:{{access_token}}

2.5关于postman的参数化

什么是参数化?

参数化本质上就是不写死接口数据,而是把数据存放在变量内。

为什么要做参数化?

业务功能的需要,如果写死数据在脚本内,每一次运行脚本,都要手动修改数据,而且有时候测试时需要用到大量的数据,通过手动修改不可能实现。

案例:比如注册接口,注册一个账户后就不能重复注册了,为了可以重复执行这个接口,我们可以把这个接口的请求参数改成一个可变化的值,这样每次注册时,参数随机生成 就能注册成功了。

postman参数化的三种方式如下:

1.动态函数实现参数化

先给大家举2个常用的变量:{{$timestamp}} 表示生成当前时间的时间戳

{{randomInt}}表示生成随机数0-1000

步骤:

在请求参数中输入: {{$}} 当鼠标停留在美元$符合后时,自动出现随机变量 引用即可,记得在英文状态下 双引号内" "。

如图所示:在参数双引号内添加:变量

如图,响应的结果中加上了随机参数

2.文档参数化

批量导入参数 进行测试 ,postman支持json文档,txt文档,csv文档。

具体步骤:以csv文档为例

1.准备参数化文件

2.设置请求参数的变量(注意:变量名要和txt文档中的变量名一致)

3.导入测试文件运行集合即可(注意:运行之间注意文件格式是否匹配,即可以提前预览查看是否有乱码情况)

案例:以某电商平台登录接口为例

1)输入导入数据以.csv格式保存

2)变量名要和txt文档中的变量名一致,输入完记得先保存

3)注意文件选择正确的文件格式,以及提前预览一下内容 是否有出现乱码情况,如果有乱码情况 重新保存 csv文件,并设置为:utf-8即可

4)如下图批量测试用例运行成功,可在响应正文中参考输入参数是否正确(未设置断言

3.全局变量

全局变量是将这个变量设置成整个程序的都可以用,不用去区分环境设置。注意:当环境变量和全局变量 设置同一个变量时,优先使用环境变量。没有环境变量时,才优先使用全局变量

具体步骤

1.打开Postman,点击右上角的环境快速查看按钮

2.选择Global,设置全局变量

3.输入你要设置的变量名和变量,点击Save,进行保存

4.引用全局变量,引用的方法为:{{变量名}}

引用{{ip}}成功

2.6关于postman的断言

1)什么是断言:断言就是验证实际结果和预期结果是否一致,如果一致则用例通过,否则用例失败。从而判断是否是一个bug。

2)完整的接口测试:请求--响应正文--断言

3)断言的常见方法如下

Status code:Code is 200 检查返回的状态码是否为200

response body:contains string验证响应数据是否包含了某一字符串

response body:is equal to a string验证响应数据是否等于某一个字符串

response body:json value check校验返回结果中某个字段是否等于某个值

tests中添加断言

案例1:获取接口统一鉴权码 access_token,业务关键词:鉴权码 所以可以使用

response body:contains string验证响应数据是否包含了某一字符串

(其他函数使用方法一致,不再赘述)

断言结果与实际结果一致

四.postman和Jmeter的区别

1.断言方面Postman用函数断言, Jmeter用元件进行断言。

2.创建HTTP请求方面Postman请求的请求URL是一个整体,Jmeter分成了4个部分(协议、主机、端口、路径)。

3.请求头方面Postman可以在请求中直接填写请求头信息, Jmeter需要通过添加http信息头管理器来添加请求头。

4.支持的接口类型Jmeter的功能更强大,可以测试各种类型的接口,不支持的也可以通过网上或自己编写的插件进行扩展 postman常用来测试Rest接口。

5.执行方面Postman:可以通过newman实现批量执行和保存结果Jmeter:可以通过ant实现批量执行和保存结果。

各位小伙伴 如果觉得有错误的地方 可以在评论区回复,咱们一起讨论,关注我 一起学习软件测试,一起进步[耶]

标签: #python接口测试用例