0


【笔记】接口测试工具Postman入门教程

一、接口分类、流程、用例设计

1、接口分类

  • 外部接口:被测系统与外部其他系统之间的接口
  • 内部接口:被测系统内部各个子模块之间的接口
  • 测试接口重点:检查接口参数的正确性、接口功能的正确性、输出结果的正确性、以及对各种异常场景的容错处理和权限控制

2、接口测试的流程与用例设计

  1. 获取接口文档(找开发要接口文档或者自己抓包获取),熟悉接口业务、接口地址、鉴权方式、入参、出参、错误码、其他的特别的需求。
  2. 编写接口测试用例以及评审 1. 编写思路 1. 编写正向流程(输入正确的入参,接口返回正常)2. 编写异常流程 1. 鉴权反例(为空、错误、过期)2. 参数反例(必填、参数类型异常、参数长度异常、错误码覆盖)3. 其他场景(黑名单、调用次数限制、分页场景的测试)3. 使用接口测试工具Postman、Jmeter执行接口测试4. Postman+newman+jenkins+git实现持续集成

二、Postman接口测试工具

1、Postman安装和下载

  • 官网地址:
https://www.postman.com/download
  • token鉴权码 - csrf_token:一般情况下有效期是7到15天- access_token:一般情况下有效期是10分钟-2小时

三、Postman工具详解

1、界面展示

在这里插入图片描述

请求页签说明:

在这里插入图片描述

响应页签说明:

在这里插入图片描述

四、接口关联

1、接口关联的两种方法

  • 第一种方式:JSON提取器
// 打印
console.log(responseBody)// JSON 提取器:把返回的结果转化成JSON对象var jsdata =JSON.parse(responseBody)// 取值,并设置为全局变量
pm.globals.set("access_token", jsdata.access_token);
  • 第二种方式:正则表达式提取器
// 打印
console.log(responseBody)// 正则表达式提取器,match匹配,new RegExp新建正则表达式var data = responseBody.match(newRegExp('"access_token":"(.*?)"'));// 取值并设置为全局变量
pm.globals.set("access_token", data[1]);
  • 鉴权方式:签名sign
let salt ="xxx";let param = request.data;//post 参数let queryParam = pm.request.url.query.members;//get中的参数//将post和get合并,并且移除sign参数for(let i in queryParam){if(queryParam[i].key =="sign"){continue;}
    param[queryParam[i].key]= queryParam[i].value;}//时间戳参数
param.time =(newDate()).getTime().toString();
pm.environment.set("reqtime", param.time);//排序
param =objSort(param);//json,然后生成签名
jsonStr =JSON.stringify(param).toString();let sha1Str = CryptoJS.SHA1(salt+jsonStr).toString();let md5Str = CryptoJS.MD5(sha1Str).toString();

postman.setGlobalVariable("sign", md5Str);//排序方法functionobjSort(obj){let keys = Object.keys(obj).sort();let arr ={};for(let i in keys){
        arr[keys[i]]= obj[keys[i]];}return arr;}

五、全局变量和环境变量

  • 全局变量:可以在所有的接口请求里面使用,通过{{}}取值 - 作用:可以使用全局变量保存在所有接口都需要使用的变量
  • 环境变量:可以在当前环境的所有接口请求使用,通过{{}}取值 - 作用:可以保存多种环境,可以让接口在多种环境中测试- 如:开发环境、测试环境、生产环境、预发布环境
  • 环境变量设置:在这里插入图片描述

六、Postman内置动态参数和自定义动态参数

  • Postman内置动态参数:- {{$timestamp}}:自动生成当前时间的时间戳- {{$randomInt}}:生成0-1000的随机数- {{$guid}}:生成一个GUID长字符串随机数
  • 自定义动态参数- 自定义时间戳
// 获取系统当前时间var times = Date.now();// 把时间设置为全局变量
pm.globals.set("times",times)

七、接口业务闭环

  • 当接口中参数需要上一个接口的返回值来传参时,将参数设置为全局变量,后续用到这个变量时可以直接使用全局变量替换;替换格式为{{参数变量名}}

八、Postman常规断言、动态参数断言、全局断言

  • 一般会有两个断言- 状态断言:断言返回的状态码为200- 业务断言:断言其中最核心的业务关键字在这里插入图片描述
  • Status Code :Code is 200 断言返回的状态码为200
  • Response body:Contains string 断言返回的body中包含有一个字符串
  • Response body:JSON value check 检查json中的其中的一个值
  • Response body:is equal a string 断言返回的body等于一个字符串
  • Response headers:断言响应头包含Content-Type
  • Response time is less than 200ms 断言请求的时间小于200ms
// 状态断言
pm.test("断言返回的状态码为200",function(){
    pm.response.to.have.status(200);});// 业务断言
pm.test("Body matches string",function(){
    pm.expect(pm.response.text()).to.include("access_token");});
  • 自定义动态参数的断言方式1. 在tests页签里面是不能通过{{}}方式去的全局变量的,而只能通过以下方式获取 1. pm.globals.get(“全局变量名”)2. globals[“全局变量名”]3. globals.全局变量名
  • 全局断言- 设置全局断言一般应用于全部接口都需要的断言,如状态断言

九、Postman批量执行测试用例

  • 批量执行测试用例如下:

在这里插入图片描述
在这里插入图片描述

  • 关于文件上传接口在批量运行时报错的解决方法:- 修改设置在这里插入图片描述- 将上传的文件复制到postman的目录下

十、Postman数据驱动

  • 将数据保存在CSV或者JSON文件中,准备运行时导入;
  • 将请求的参数全部替换成CSV或者JSON文件中内容,如{{appID}}

注意:

  • 判断只有返回结果中包含了access_token时才提取
if(responseBody.search("access_token")!=-1){// 正则表达式提取器,match匹配,new RegExp新建正则表达式var data = responseBody.match(newRegExp('"access_token":"(.*?)"'));// 取值并设置为全局变量
    pm.globals.set("access_token", data[1]);}
  • 特别注意: - 在断言里面取数据文件里面的值如下:data.变量名
// 取数据文件中的断言
pm.test("Body matches string",function(){
    pm.expect(pm.response.text()).to.include(data.value);});

十一、Postman Cookie鉴权

1、什么是Cookie

cookie就是一小段文本信息,客户端第一次请求服务器时生成

2、cookie鉴权的原理

  • 当客户端第一次请求服务器时,服务器会生成cookie。然后在第一个返回时在响应头的Set-Cookie里面把所有的Cookie传输给客户端,并且在客户端保存。
  • 当客户端第2-n次请求服务器时,那么在请求头的Cookie就会带上所有的Cookie来实现鉴权

3、Cookie鉴权实战

  • Postman会自动将Cookie进行保存,我们不需要额外的处理

十二、Mock Server服务器

1、Mock介绍

使用场景:前后端分离,后端的接口没有完成时,前端已经完成,但是前端的业务流程依赖于后端的接口,需要测试自己去Mock接口。

2、Mock使用

  • 在界面的Mock Server中新建一个mock接口

在这里插入图片描述

  • 完成配置后自动生成访问链接

在这里插入图片描述

十三、加密和解密

  • MD5加密
// Postman的Md5加密var username_md5 = CryptoJS.MD5("admin").toString().toUpperCase();var password_md5 = CryptoJS.MD5("123").toString().toUpperCase();
console.log(username_md5)
console.log(password_md5)// 设置成全局变量
pm.globals.set("username_md5", username_md5);
pm.globals.set("password_md5", password_md5);

十四、Postman+newman

1.导出接口测试项目中的:测试用例、全局变量、环境变量、数据文件

2.使用命令执行测试

newman run "/filepath/testcase.json" -e "/filepath/environment.json" -g "/filepath/globals.json" -r cli,html,json,junit --reporter-html-export '/filepath/report.html'
  • Newman run
  • -e 环境变量
  • -g 全局变量
  • -r cli,html,json,junit --reporter-html-export ‘/filepath/report.html’ 生成报告

本文转载自: https://blog.csdn.net/mxhappy/article/details/125108120
版权归原作者 张hai碧_Mx 所有, 如有侵权,请联系我们删除。

“【笔记】接口测试工具Postman入门教程”的评论:

还没有评论