浅谈配置元件之随机变量

浅谈配置元件之随机变量

1.概述

为了增强测试的真实性和多样性,JMeter 提供了多种配置元件来生成动态数据,其中“随机变量”(Random Variable) 就是一种常用的配置元件,用于生成随机数值、字符串等,以模拟不同用户请求中的变化参数。

2.目的

随机变量配置元件的主要目的是在每个迭代或每次线程执行时生成不同的随机值,这对于避免因使用固定数据导致的测试结果偏差特别有用。例如,在进行登录测试时,可以利用随机变量生成不同的用户名或密码,使得每个请求看起来都像是来自不同的用户,从而更贴近实际应用环境。

3.使用步骤

添加随机变量

  1. 打开测试计划:首先,打开或创建一个新的 JMeter 测试计划。
  2. 添加线程组:右键点击测试计划,选择“添加” > “线程 (用户)” > “线程组”,为你的测试定义用户负载。
  3. 插入随机变量:右键点击线程组,选择“添加” > “配置元件” > “随机变量”。

配置随机变量

添加随机变量后,会出现配置界面,主要包括以下设置:
● 名称:树中显示的此元素的描述性名称,例如随机用户名。
● 变量名称:
● 输出格式:进行格式转换,例如,“000”将生成至少有3位数字的数字,或“USER_000”将生成USER_nnn形式的输出。如果未指定,默认情况下则生成对应的数字,如随机生成1-100,则如果随机生成了2,则显示为2,随机生成了86,则显示为86。
● 最小值:生成的随机数的最小值,long类型。
● 最大值:生成的随机数的最大值,long类型。。
● 随机种子:随机数生成器的种子。如果在“每线程”设置为true的情况下使用相同的种子值,则每个“线程”将获得与每个Random类相同的值。如果未设置种子,则将使用Random的默认构造函数
● 每线程(用户)?:如果为False,则生成器在线程组中的所有线程之间共享。如果为True,则每个线程都有自己的随机生成器。
随机种子知识点补充:

随机种子是一个用于生成随机数序列的初始值。在计算机编程中,由于计算机产生的随机数实际上是通过一个确定性的算法生成的,所以如果使用相同的随机数生成算法和相同的初始值,就会生成相同的随机数序列。这就是为什么在需要多次运行相同的随机数生成操作时,我们可以使用随机种子来确保每次生成的随机数序列都是相同的。
在大多数编程语言中,我们可以使用随机种子函数来设置随机种子的值。这个函数可以是一个整数,该整数作为初始值传递给随机数生成算法。通常,我们可以使用当前的系统时间作为种子,以确保每次运行程序时种子都是不同的。这样可以避免生成相同的随机数序列。
随机种子对于需要重现实验结果或需要保持随机性一致的情况非常有用。例如,在机器学习中,我们经常使用随机种子来确保每次运行训练算法时都能够得到相同的随机初始化参数,以便进行结果的比较和验证。
总之,随机种子是一个用于生成随机数序列的初始值,它可以用来控制随机性并重现实验结果。在编程中,我们可以使用随机种子函数来设置随机种子的值。

引用随机变量

配置好随机变量后,你可以在HTTP 请求、正则表达式提取器或其他需要动态数据的地方引用这个变量。引用方式为${variableName},比如${randomUser}。

4.实例应用

当前添加如下脚本:
在这里插入图片描述

  1. 线程组:线程数设置为2,Ramp-Up设置为1,循环次数设置为5。
  2. 随机变量:变量名称设置为user,输出格式设置为user_,最小值为1,最大值为100,随机种子设置为1。
  3. BeanShell取样器:设置如下代码:
log.info("${user}");

情况一:设置每线程(用户)为False

该种情况下,我们可以获得如下结果

2024-06-04 20:18:03,517 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-1
2024-06-04 20:18:03,522 INFO o.a.j.u.BeanShellTestElement: user_86
2024-06-04 20:18:03,523 INFO o.a.j.u.BeanShellTestElement: user_89
2024-06-04 20:18:03,525 INFO o.a.j.u.BeanShellTestElement: user_48
2024-06-04 20:18:03,529 INFO o.a.j.u.BeanShellTestElement: user_14
2024-06-04 20:18:03,530 INFO o.a.j.u.BeanShellTestElement: user_55
2024-06-04 20:18:03,531 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2024-06-04 20:18:03,531 INFO o.a.j.t.JMeterThread: Thread is done: Thread Group 1-1
2024-06-04 20:18:03,532 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 2 : 线程组
2024-06-04 20:18:03,533 INFO o.a.j.t.JMeterThread: Thread finished: Thread Group 1-1
2024-06-04 20:18:03,534 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group 线程组.
2024-06-04 20:18:03,534 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2024-06-04 20:18:03,535 INFO o.a.j.t.ThreadGroup: Starting thread group... number=2 threads=1 ramp-up=1 delayedStart=false
2024-06-04 20:18:03,536 INFO o.a.j.t.ThreadGroup: Started thread group number 2
2024-06-04 20:18:03,537 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
2024-06-04 20:18:03,537 INFO o.a.j.t.JMeterThread: Thread started: 线程组 2-1
2024-06-04 20:18:03,538 INFO o.a.j.t.JMeterThread: Thread is done: 线程组 2-1
2024-06-04 20:18:03,539 INFO o.a.j.t.JMeterThread: Thread finished: 线程组 2-1
2024-06-04 20:18:04,025 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-2
2024-06-04 20:18:04,026 INFO o.a.j.u.BeanShellTestElement: user_5
2024-06-04 20:18:04,027 INFO o.a.j.u.BeanShellTestElement: user_35
2024-06-04 20:18:04,027 INFO o.a.j.u.BeanShellTestElement: user_7
2024-06-04 20:18:04,028 INFO o.a.j.u.BeanShellTestElement: user_79
2024-06-04 20:18:04,029 INFO o.a.j.u.BeanShellTestElement: user_49

可以得到如下结论:当False时,生成器在线程组中的所有线程之间共享,即随机结果出来的数据可以给线程1或者线程2使用。

情况二:设置每线程(用户)为True

该种情况下,我们可以获得如下结果:

024-06-04 20:19:38,782 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-1
2024-06-04 20:19:38,786 INFO o.a.j.t.JMeterThread: Thread started: 线程组 2-1
2024-06-04 20:19:38,786 INFO o.a.j.u.BeanShellTestElement: user_86
2024-06-04 20:19:38,786 INFO o.a.j.t.JMeterThread: Thread is done: 线程组 2-1
2024-06-04 20:19:38,788 INFO o.a.j.t.JMeterThread: Thread finished: 线程组 2-1
2024-06-04 20:19:38,788 INFO o.a.j.u.BeanShellTestElement: user_89
2024-06-04 20:19:38,790 INFO o.a.j.u.BeanShellTestElement: user_48
2024-06-04 20:19:38,791 INFO o.a.j.u.BeanShellTestElement: user_14
2024-06-04 20:19:38,791 INFO o.a.j.u.BeanShellTestElement: user_55
2024-06-04 20:19:38,792 INFO o.a.j.t.JMeterThread: Thread is done: Thread Group 1-1
2024-06-04 20:19:38,792 INFO o.a.j.t.JMeterThread: Thread finished: Thread Group 1-1
2024-06-04 20:19:39,274 INFO o.a.j.t.JMeterThread: Thread started: Thread Group 1-2
2024-06-04 20:19:39,275 INFO o.a.j.u.BeanShellTestElement: user_86
2024-06-04 20:19:39,278 INFO o.a.j.u.BeanShellTestElement: user_89
2024-06-04 20:19:39,279 INFO o.a.j.u.BeanShellTestElement: user_48
2024-06-04 20:19:39,281 INFO o.a.j.u.BeanShellTestElement: user_14
2024-06-04 20:19:39,282 INFO o.a.j.u.BeanShellTestElement: user_55

可以得到如下结论:当True时,则每个线程都有自己的随机生成器,即每个线程都有随机结果。
综合情况一和情况二,我们也可以看到,如果我们的随机种子没有变化的时候,我们随机出来的第一个、第二个…以此类推的值都是一样的,比如此次实例中,第一个数随机值是:86,第二个数随机值是:89…

5.总结

随机变量配置元件是JMeter中实现测试数据多样性和真实性的强大工具。通过灵活运用随机变量,测试人员能够设计出更加贴近现实、有效评估系统性能的测试场景。掌握其使用方法对于提升测试覆盖率和准确性至关重要。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/678835.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Mac】Downie 4 for Mac(视频download工具)兼容14系统软件介绍及安装教程

前言 Downie 每周都会更新一个版本适配视频网站,如果遇到视频download不了的情况,请搜索最新版本https://mac.shuiche.cc/search/downie。 注意:Downie Mac特别版不能升级,在设置中找到更新一列,把自动更新和自动downl…

蓝牙网关和WiFi网关的对比

蓝牙网关和WiFi网关都是无线通信技术中的重要组件,它们各自具有不同的特点和应用场景。以下是蓝牙网关和WiFi网关的一些对比: 蓝牙网关 作用: - 蓝牙网关可以无线连接各种设备,如门锁、灯、电视等,并能与购物者、旅…

java海滨学院班级回忆录源码(springboot)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的海滨学院班级回忆录。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 海滨学院班级回忆录的…

Struts2 系列漏洞 - S2-001

一、前言 Struts2 是较早出现实现 MVC 思想的 java 框架。struts2 在 jsp 文件中使用 ognl 表达式来取出值栈中的数据。 struts 标签与 ognl 表达式的关系类似于 jstl 标签与 el 表达式的关系。[故在 jsp 文件中需引入 struts 标签库] # 二、概述 S2-001 漏洞由于在其解析 j…

Arduino ESP8266模块TFT液晶屏

ESP8266模块 模块实物图: 模块引脚定义: 工作模式选择: FlashBoot启动模式: GPIO15接GND UART固件下载模式: GPIO15接GND, GPIO0接GND 调试串口: URXD/UTXD 可用来下载固件和调试信息输出 模块使能&…

安装源码moveit遇到的问题

文章目录 问题1、 在操作 rosdep update 时报超时错误问题2、E: 仓库 “http://mirrors.ustc.edu.cn/ros/ubuntu focal Release” 没有 Release 文件问题3、卸载ompl问题4、安装moveit 问题1、 在操作 rosdep update 时报超时错误 出现 访问 https://raw.githubusercontent.com…

【官方文档解读】torch.jit.script 的使用,并附上官方文档中的示例代码

由 OpenMMLab 的部署教程 所述,对于模型中存在有控制条件的(如 if,for 等),需要用 torch.jit.script 而非采样默认的 torch.jit.trace 方法。本文则详细介绍了下官方文档中对 torch.jit.script 的解释和示例代码。 to…

SemiDrive X9H 平台 QT 静态编译

一、 前言 芯驰 X9H 芯片,搭载多个操作系统协同运行,系统实现了仪表、空调、中控、副驾多媒体的四屏驱动控制,在人车智能交互上可以通过显示屏、屏幕触摸控制、语音控制、物理按键控制、车身协议的完美融合,使汽车更智能。让车主…

“论软件系统建模方法”必过范文,突击2024软考高项论文

论文部分 摘要 2023年03月,我参与了某艺术品公司线上拍卖管理平台的研发。该项目的目标是建立一个互联网在线拍卖平台,用户可以通过手机或PC浏览器进入拍卖平台,对喜欢的拍品进行参拍出价。平台提供了在线支付、在线出价、保证金管理、拍品…

通信技术信号源硬件实验

定义 1.RZ码(归零码) RZ编码也成为归零码,归零码的特性就是在一个周期内,用二进制传输数据位,在数据位脉冲结束后,需要维持一段时间的低电平。 2.NRZ码(不归零编码) NRZ编码也成为…

AVL树的介绍与实现

前言 我们上一期介绍了二叉搜索树并做了实现,本期我们来继续学习另一个更优的树即AVL树! 本期内容介绍 什么是AVL树? AVL树的实现 AVL树的性能分析 在正式的介绍AVL树之前,我们先来回忆一下二叉搜索树的特点:左子树的…

nnUNet保姆级使用教程!从环境配置到训练与推理(新手必看)

文章目录 写在前面nnUNet是什么?一、配置虚拟环境二、安装nnUNet框架1.安装nnUNet这一步我遇到的两个问题: 2.安装隐藏层hiddenlayer(可选) 三、数据集准备nnUNet对于你要训练的数据是有严格要求的,这第一点就体现在我…

pushowl | 运用分销裂变模式实现业绩快速增长

一、公司简介 PushOwl公司是一家专注于为电子商务商店提供在线营销工具的印度初创企业。以下是对PushOwl公司的详细介绍: 基本信息: 所属公司:Creatorbox Softwares Private Limited 成立日期:2018年 所属地:印度 …

103.网络游戏逆向分析与漏洞攻防-ui界面的设计-加速功能的开关设计

免责声明:内容仅供学习参考,请合法利用知识,禁止进行违法犯罪活动! 如果看不懂、不知道现在做的什么,那就跟着做完看效果,代码看不懂是正常的,只要会抄就行,抄着抄着就能懂了 内容…

RDMA (1)

RDMA是什么 Remote Direct Memory Access(RDMA)是用来给有高速需求的应用释放网络消耗的。 RDMA在网络的两个应用之间进行低延迟,高吞吐的内存对内存的直接数据通信。 InfiniBand需要部署独立的协议。 RoCE(RDMA over Converged Ethernet),也是由InfiniBand Trade Associat…

【吊打面试官系列】Java高并发篇 - Java 线程数过多会造成什么异常?

大家好,我是锋哥。今天分享关于 【Java 线程数过多会造成什么异常?】面试题,希望对大家有帮助; Java 线程数过多会造成什么异常? 1、线程的生命周期开销非常高 1000道 互联网大厂Java工程师 精选面试题-Java资源分享…

postman教程-12-保存请求至Collections

领取资料,咨询答疑,请➕wei: June__Go 上一小节我们学习了Postman管理环境的方法,本小节我们讲解一下Postman保存请求至Collections集合的方法。 1、创建Collection 在保存Request请求之前,先创建一个Collection(集合)&#…

【网络编程开发】1.网络结构 2.IP地址与端口号 3.字节序

网络编程开发 两台计算机要互相传送文件需解决很多问题: 必须有一条传送数据的通路。发起方必须激活通路。要告诉网络如何识别接收方。发起方要清楚对方是否已开机,且与网络连接正常。发起方要清楚对方是否准备好接收和存储文件。若文件格式不兼容&…

藏品名称:龙凤呈祥摆件

藏品名称:龙凤呈祥摆件 规格:重约 14.3Kg 藏品类别:杂项 此器身布满繁缠纹饰。器表为一轮红日出于东方,照耀辽阔江海。红日旁边有两点黄金凸显其尊贵。一神龙首尾相接有祥云伴随,大山脚下栖息着一只凤凰与神龙遥相呼应。龙身和龙尾交接处有花和花蕊,花开富贵象征着吉祥。整个…

Esxi的安装问题处理: Failed to verify signatures of the following vib(s)

前言 在安装esxi的时候报错 如下图: 自己在安装过程中遇到点问题 Failed to verify signatures of the following vib(s) 一番查找,只要在bios里面关闭 Security boot 就可以解决 Prepping an ESXi 6.7 host for Secure Boot – Mike Foley