首页 > 其他分享 >性能测试|电商业务性能测试(二): Jmeter 参数化功能实现注册登录的数据驱动

性能测试|电商业务性能测试(二): Jmeter 参数化功能实现注册登录的数据驱动

时间:2023-01-12 18:38:27浏览次数:50  
标签:CSV 测试 性能 端口 接口 Set 设置 电商 Config

1. 前置条件

此例使用的是 GitHub 上一个开源的电商项目 mall,需要的可以去 GitHub 上下载部署,有详细的部署教程:

2. 场景抽离

性能测试|电商业务性能测试(二): Jmeter 参数化功能实现注册登录的数据驱动_CSV

首先我们需要对测试的场景进行抽离,明确场景的接口、参数和比例。通过查看API文档,我们抽离除了如下注册的业务流程:

性能测试|电商业务性能测试(二): Jmeter 参数化功能实现注册登录的数据驱动_CSV_02


总结如下:

  • 业务流程 :验证码->注册->登录,
  • 接口比例 :这三个接口场景的比例为1:1:1关系
  • 数据传递 :获取的鉴权信息需保存后未后续的请求做数据支持

3. 实操演示

3.1 IP + 端口的数据驱动

在每一个接口请求中,都需要输入请求的ip和端口,这样费事费力。因此 ​​jmeter​​ 提供了 ​​CSV Data Set Config​​ 来将数据从外部文件读取, ​​HTTP Request Defaults​​ 设置请求默认值,这两种方法配合使用便可完成 ​​IP​​ + ​​端口​​ 的数据驱动

CSV Data Set Config从外部文件读取数据

1、如下图位置选择

性能测试|电商业务性能测试(二): Jmeter 参数化功能实现注册登录的数据驱动_Data_03

2、设置 ​​CSV Data Set Config​​ 首先创建好需要导入的数据文件,这里需要的是 IP 和端口:

性能测试|电商业务性能测试(二): Jmeter 参数化功能实现注册登录的数据驱动_Data_04

设置 ​​CSV Data Set Config​

性能测试|电商业务性能测试(二): Jmeter 参数化功能实现注册登录的数据驱动_HTTP_05

设置说明:

  • ​Filename​​ :填入你需要导入的文件地址
  • ​File encoding​​ :选择编码方式,特别是有中文的时候记得要选 ​​UTF-8​
  • ​Variable Names​​ :设置变量名,要和数据文件中的格式一一对应
  • ​Ignore first line​​ :是否忽视第一行,有时候我们数据文件的第一行可能是个说明 ​​title​​ ,并不是我们实际需要的数据,这个时候就可以在此选择 ​​true​​ ,将其忽略
  • ​Delimiter(use '\t' for tab)​​ :如果你的数据文件的数据之间使用 ​​tab​​ 进行分割的,这里就填\t用来说明是tab分割,如果是用逗号 ​​,​​ 分割的,那么就直接填入逗号 ​​,​​ 即可

HTTP Request Defaults设置请求默认值

1、选择 ​​HTTP Request Defaults​

性能测试|电商业务性能测试(二): Jmeter 参数化功能实现注册登录的数据驱动_Data_06

2、设置 ​​HTTP Request Defaults​​ 参数化

将请求的ip和端口进行参数化,格式是${参数};参数要与 ​​CSV Data Set Config​​ 中设置的保持一致,这样设置好以后,后面所有的请求都可以不用再填写ip和端口了

性能测试|电商业务性能测试(二): Jmeter 参数化功能实现注册登录的数据驱动_Data_07

3.2 前置处理器JSR223 PreProcessor

查看项目API文档,知道了获取验证码的接口需要传电话号码作为参数,而性能测试需要很多并发,所以电话号码肯定是通过参数传递进入,且不可重复;

性能测试|电商业务性能测试(二): Jmeter 参数化功能实现注册登录的数据驱动_Data_08


为了解决上述问题,我们可以引入前置处理器 ​​JSR223 PreProcessor​​ ,他可以在其中写入Java代码运行,这样就很方便造数据了:

性能测试|电商业务性能测试(二): Jmeter 参数化功能实现注册登录的数据驱动_CSV_09


另外在login接口返回值需要获取token,将获取的token存入指定文件中,以备后面的请求使用

性能测试|电商业务性能测试(二): Jmeter 参数化功能实现注册登录的数据驱动_Data_10


性能测试|电商业务性能测试(二): Jmeter 参数化功能实现注册登录的数据驱动_Data_11

3.3 返回值获取传递

JSON Extractor

在上述接口中,会返回验证码用于注册;同样的在登录接口中会返回token用于鉴权;那么就可以利用 ​​JSON Extractor​​ 来完成

1、添加 ​​JSON Extractor​

性能测试|电商业务性能测试(二): Jmeter 参数化功能实现注册登录的数据驱动_HTTP_12

2、设置变量名和json路径

性能测试|电商业务性能测试(二): Jmeter 参数化功能实现注册登录的数据驱动_CSV_13

3.4 结果调试

有时候想看下脚本对不对,可以利用 ​​Debug Sampler​​ 来进行调试

性能测试|电商业务性能测试(二): Jmeter 参数化功能实现注册登录的数据驱动_CSV_14


可以看到所有的变量值,最终完成脚本调试,顺利通过。

性能测试|电商业务性能测试(二): Jmeter 参数化功能实现注册登录的数据驱动_Data_15


标签:CSV,测试,性能,端口,接口,Set,设置,电商,Config
From: https://blog.51cto.com/u_15640304/6004561

相关文章

  • 性能测试|JMeter逻辑控制器(四)
    Jmeter逻辑控制器之循环控制器这篇文章介绍下循环控制器的使用。认识循环控制器按照之前的文章步骤,我们新建一个循环控制器,用于介绍循环控制器如下图:新增一个循环控制器......
  • 性能测试|JMeter逻辑控制器(五)
    Jmeter逻辑控制器之交替控制器快过年了,最近工作不是特别忙,最近自己在学习JMeter,并把学习过程分享到博客中,今天呢,学习交替控制器。认识交替控制器老规矩,先来认识一下交替......
  • 性能测试|JMeter逻辑控制器(六)
    Jmeter逻辑控制器之WhileControllerwhilecontroller用于控制采样器循环执行,直到条件为false时,退出循环认识WhileController保留项目,认识whilecontroller,我们就先创......
  • 性能测试|JMeter上传下载文件
    日常工作中,我们难免会遇到有些接口是要上传文件的,比如修改头像、上传证件,上传文档等等情况。### 抓取接口抓取接口的工具有很多,我们可以使用浏览器自带的开发者工具,也可以......
  • 性能测试|JMeter逻辑控制器(七)
    Jmeter逻辑控制器之IncludeController认识IncludeControllerIncludeController:译为包含控制器,用来添加TestFragment(测试片段)。具体是什么意思呢,我们先来了解下Te......
  • 性能测试|JMeter逻辑控制器(八)
    Jmeter逻辑控制器之RuntimeControllerRuntimeController是用来控制其子元件的执行时长,时长单位是秒。认识RuntimeController参数如下:名字:可以随便填写注释:可以随便......
  • 性能测试|JMeter逻辑控制器(二)
    认识ForEach控制器如下,创建一个ForEach控制器设置界面如下:输入变量前缀:要进行循环读取的变量前缀Startindexforloop(exclusive):循环开始,注意这里数值从0开始,也就是......
  • 性能测试|JMeter逻辑控制器(三)
    Jmeter逻辑控制器之事务控制器在做性能测试的时候,如果被测系统是需要登录的,登录成功后,系统默认加载其订单数据,因此在用户看来这是一个操作。所以为了模拟这个操作,我需要......
  • 怎么去提升服务器的性能
    怎么去提升服务器的性能服务器的资源是有限的,但由于这个资源是虚拟的,在使用时容易出现冗余,从而被浪费;有时候也会使用不当,使得服务器性能低下,和硬件配置不符。因此提高服务......
  • 性能测试|搭建性能监控平台
    1.为什么要搭建性能监控平台?1.1需求背景在用​​Jmeter​​获取性能测试结果的时候,​​Jmeter​​本身带有聚合报告如下图所示:这个报告有几个很明显的缺点:只能自己看,......