当前位置:网站首页>软件测试 接口测试 Postman测试工具 接口测试的流程 执行接口测试 接口关联 环境变量和全局变量 内置动态参数以及自动有的动态参数
软件测试 接口测试 Postman测试工具 接口测试的流程 执行接口测试 接口关联 环境变量和全局变量 内置动态参数以及自动有的动态参数
2022-06-29 22:51:00 【十旬叶大叔】
文章目录
1 接口测试的简介和分类
接口测试是测试系统组件之间的一种测试。
分类:
测试外部接口:测试被测系统和外部系统之间的接口。一般只需要测试正向用例即可。
测试内部接口:
(1)内部接口只提供给系统使用。一般只需要测试正向用例即可。
(2)内部接口提供给外部系统使用。测试必须非常全面。
2 接口测试的流程以及用例的设计
1 拿到接口API文档(通过抓包工具获取),熟悉接口业务,接口地址,鉴权方式,入参,出参,错误码。
2 编写接口用例以及评审。
思路。正向用例,输入正常参数,接口能够成功返回数据。
反向用例有鉴权反向用例、参数反向用例、错误码覆盖和其他错误场景。
鉴权反向用例宝库鉴权码为空,鉴权码错误和鉴权码过期等等。
参数反向用例包括参数为空,参数类型异常,长度异常。
错误码覆盖根据业务而定。
其他错误场景包括接口黑名单,接口调用次数限制和分页场景。
3 使用接口测试用例工具Postman执行接口测试。
4 Postman+Newman+Jenkins实现持续集成,并且输出参数报告和发送邮件。
3 mall_cms_v2接口
测试的接口如下:
https://documenter.getpostman.com/view/12387168/TzzDKb12#7f0beb33-e365-420b-bbcf-67df9c87749e
name,password,token。
4 Postman界面介绍
Home主页
workpaces工作空间
collections集合,项目集合。
APIs api文档。
Environments 环境变量,全局变量。
Mock Servers 虚拟服务器。
Monitors 监听器。
Hoistory 历史记录。
5 Postman执行接口测试
5.1 请求页面模块
Parsam:get请求传参
authorization:鉴权
headers:请求头
Body:post请求传参,传参方式如下表:
| 方式 | 描述 |
|---|---|
| form-data | 可用键值对和文件传参数 |
| x-www-from-urlencoded | 只能以键值对方式传参数 |
| raw | json,text,xml,html,javascript |
| binary | 把文件以二进制的方式传参 |
具体位置如下图:
pre-request-script:请求之间的脚本
tests:请求之后的断言
cookies:用于管理Cookie信息
Postman 请求页面模块如下图:
5.2 响应页面模块
Body:接口返回的数据,传参的形式如下表:
| 方式 | 描述 |
|---|---|
| Pretty | 以json,html,xml等不同的格式查看返回的数据 |
| Raw | 以文本的方式查看返回的数据 |
| PreView | 以网页的方式查看返回的数据 |

Cookies:响应的Cookies信息。
Headers:响应头。
Test Results:断言的结果。
200 为状态码
OK 为状态信息
12.64s为响应时间
347.84kb为响应的字节数
响应页面模块如下图:
get请求和post请求的区别:
1 get请求是获取数据,post请求是提交数据。
2 本质区别是传参的方式不一样。
get请求在地址栏后面以?的方式传参,多个参数之间用&分隔。post请求是在body以表单的方式传参。
post请求例子,请求模块如下图:
响应模块如下图:
6 Postman的环境变量和全局变量
6.1 环境变量
第一,添加多个环境变量,如下图:
第二,在环境变量中设置变量以及变量值,变量为url,变量值为api.weixin.qq.com,如下图:
第三,在Collections切换环境变量,如下图:

6.2 环境变量和全局变量的区别
环境变量:环境变量就是全局变量
全局变量:全局变量是能够在任何接口里面访问的变量
获取环境变量和全局变量的值通过:{ {变量名}}
7 接口关联
7.1 使用json提取器实现接口关联
以152.136.185.210:4000/login为例子
请求之后的断言
第一步,查看响应之后的结果,如下代码:
console.log(responseBody);
第二步,将获取的access_token的值的格式转换为对象的数据,结果存储在result变量中,如下代码:
var result = JSON.parse(responseBody)
第三步,将access_token设置为全局变量,如下代码:
pm.globals.set("token", "result.token");
综上,在请求模块中的Tests子模块中输入以下代码:
//查看响应之后的结果
console.log(responseBody);
//把返回的字符串格式的数据转换成对象的数据
var result = JSON.parse(responseBody)
//把token的中的值设置为全局变量
pm.globals.set("token", "result.token");
运行结果如下图:
查看全局变量是否添加了token,如下图:
上述两张图片的token一致,则证明成功添加了token全局变量!
即其他接口都是直接使用token,使用格式{ {token}},实现了与接口相关联。
7.2 使用正则表达式提取器实现接口关联
//使用正则表达式提取器实现接口关联,math匹配。
var result = responseBody.match(new RegExp('"access_token":"(.*?)"'));
//获取鉴权码
console.log(result[1])
//将鉴权码设置为全局变量
pm.globals.set("access_token", result[1]);
分析上述代码:
responseBady返回结果,math方法将结果与token匹配,从而获token,再将token设置为全局变量。
在Console框运行结果如下图:
在全局变量页面中也可以查看token值,如下图:
8 Postman内置动态参数以及自动有的动态参数
8.1 内置动态参数
postman内置动态参数写在请求模块的Body子模块中的row点上,以json形式传入,内置动态参数如下:
{
{
$timestamp}} 生成当前时间的时间戳
{
{
$randomInt}} 生成0-1000之间的随机数
{
{
$guid}} 生成随机GUID字符串
8.2 自定义动态参数
自定义动态参数一般写在请求页面的Pre-request Script中,如下代码:
//手动获得时间戳
var times = Date.now()
//设置为全局变量
pm.globals.set("times", times);
使用times全局变量变量格式如下:
{
{
times}}
注:
(1)业务闭环的实现。遵从创建、修改、查询和修改的顺序。
(2)上传文件,如下图所示:
9 Postman断言
9.1 常用的6种断言
| 断言 | 描述 |
|---|---|
| Status code: Code is 200 | 判断状态码是否为200 |
| Response boby: Contains string | 判断响应内容是否包含string字符串 |
| Response boby: JSON value check | 判断响应内容的json是否为对应的值 |
| Response boby: Is equal to string | 判断响应内容是否等于string字符串 |
| Response headers: Content-Type header check | 判断响应头是否包含Content-Type header |
| Response time is less than 200ms | 判断响应时间是否少于200ms |
9.2 动态参数的断言方式
一般情况下,我们都会把动态参数设置成全局变量,即在断言中需要调用全局变量,方法如下:
其一,使用Postman中自带的获取全局变量的方法,如下:
pm.globals.get("variable_key");
其二,使用列表取值的方式,如下:
globals["variable_key"]
其三,使用对象引用的方式,如下:
globals.variable_key
9.3 全局断言
在项目选择Edit,如下图:
在Tests模块下设置全局断言,即每一个接口都会进行该全局断言。一般地,我们将状态码断言设置为全局断言,如下图:
10 Postman批量运行测试用例
添加进runner中
若测试用例中有上传文件,则需要在设置中进行调整,首先找到设置界面,如下图:
选择settings。
然后,允许Postman读取外部文件,如下图:
最后,将需要上传的文件放在D:\Users\DELL\Postaman\files目录中。
边栏推荐
- mysql备份数据库linux
- error: C2665: “QMessageBox::critical”: 4 个重载中没有一个可以转换所有参数类型
- STM32 basic knowledge points
- Steady! The best posture for thousands of microservices to access Zadig (helm chart)
- Laravel creates its own facade extension geoip to obtain country, region and city information according to IP
- MySQL lock common knowledge points & summary of interview questions
- Optional类的高级使用
- C指针进阶1-->字符指针,数组指针,指针与数组传参,函数指针
- Is it safe to open a stock account? Shanghai stock account opening.
- 利用kubernetes中的leader选举机制来完成自己的HA应用
猜你喜欢

Vs cannot locate program input point to DLL

Detailed description of gaussdb (DWS) complex and diverse resource load management methods

触摸按键与按键控制对应的LED状态翻转

Online text digit recognition list summation tool

众昂矿业:萤石助力氟产业锂电建设发展
详细聊聊MySQL中auto_increment有什么作用

写论文工具:LaTex在线网站

5 - 1 Analyse de vulnérabilité du système

Deep parsing of kubernetes controller runtime

constexpr 函数
随机推荐
MySQL backup database Linux
PROJECT #1 - BUFFER POOL [CMU 15-445645]笔记
模板函数与特化函数实现高效dynamicCast
数据库-玩转数据-Pgsql 使用UUID做主键
啃下大骨头——排序(一)
NRM explanation
Constexpr function
The development of grpc
Day9 - user registration and login
Use the leader election mechanism in kubernetes to complete your own ha application
Mysql database: use the show profile command to analyze performance
Design of Distributed Message Oriented Middleware
How to use filters in jfinal to monitor Druid for SQL execution?
80-Redis详解
Go zero micro Service Practice Series (VII. How to optimize such a high demand)
Qdomdocument and qdomnode are used in QT to read XML
Does rapid software delivery really need to be at the cost of security?
Problem solving metauniverse, multi communication scheme in online games
动态代理的实现原理
sql刷题595. 大的国家