• 0
  • 0
分享
  • JMeter 随机数生成技巧:Random 和 UUID 算法
  • Liam 2023-10-18 15:51:32 字数 1151 阅读 3404 收藏 0


在压力测试中,经常需要生成随机值来模拟用户行为。JMeter 提供了多种方式来生成随机值,本文来具体介绍一下。


随机数函数


JMeter 提供了多个用于生成随机数的函数,其中最常用的是__Random函数。该函数可以生成一个指定范围内的随机整数或浮点数。语法如下:


${__Random(min,max)}


其中,min 和 max 是生成随机数的范围,可以是整数或浮点数。例如,${__Random(1,100)} 会生成一个 1 到 100 之间的随机整数。以下是随机手机号最后 3 位数字的例子:


11111.png


查看传过去的数据:


22222.png


也可以用 BeanShell 来实现。添加前置处理器: BeanShell PreProcessor。


33333.png


生成代码:

import java.util.Random;
Random rand = new Random();
int num = rand.nextInt(900) + 100;
vars.put("random", String.valueOf(num));


然后在 body 中引用变量 random:${random}。


UUID 函数


UUID 用来生成一个随机 ID。UUID 和 Random 函数的区别是:Random 生成随机数,是可能会重复的。UUID 是一定不会重复的。语法如下:

${__UUID()}


随机字符串函数


JMeter 还提供了__RandomString函数,可以生成指定长度的随机字符串。该函数有多个参数,可以指定生成字符串的长度、字符集和前缀等。语法如下:

${__RandomString(length,charsToUse,prefix)}


其中,length是生成字符串的长度,charsToUse是可用字符集合,prefix是字符串的前缀。


例如,${__RandomString(10,abcdefghijklmnopqrstuvwxyz,TEST)}会生成一个以“TEST”为前缀、长度为 10、由小写字母组成的随机字符串。


随机变量函数


除了使用内置函数生成随机数外,JMeter 还支持使用随机变量生成随机数。随机变量可以通过 CSV 数据文件、用户定义的变量等方式进行定义。语法如下:

${__V(myVar_${__Random(1,5)})}


其中,myVar_是变量名的前缀,__Random(1,5)会生成一个 1 到 5 之间的随机整数,最终生成的随机变量名如myVar_3。


使用随机变量可以更加灵活地控制生成的随机数。


总结


JMeter 提供了多种方式来生成随机数,可以根据不同的需求选择合适的方法。在测试过程中,合理使用随机数可以提高测试的真实性和可信度。

知识扩展:




  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   据沃尔特·艾萨克森(WalterIsaacson)的新传记《埃隆·马斯克》(ElonMusk)一书透露,早在2015年,特斯拉CEO埃隆·马斯克(ElonMusk)就曾在试驾时多次因自动驾驶辅助技术Autopilot而险些丧命,导致其对工程师大发雷霆。  传记中关于自动驾驶辅助技术的章节中,作者揭露了马斯克亲身经历的一个事件:在405号州际公路上有一个弯道,由于路面的车道线已经褪色,Autopilot无法识别,导致汽车转向并“几乎撞上”迎面而来的车辆。  每当发生这种情况,马斯克都会“愤怒地”冲进特斯拉的办公室,对他的工程师大发雷霆,他反复要求工程师改进程序:“做点什么来正确地编程这个东西...
            0 0 1264
            分享
          • 这是时常被问到的问题,尤其是UI自动化的运行,过程非常耗时,所以,所以多线程不失为一种首先想到的解决方案。多线程是针对的测试用例,所以和selenium没有直接关系,我们要关心的是单元测试框架。unittest首先,应该说明的是unittest本身是不支持多线程的。当然,如果你学过Python的threading模块,也未必不行。不过我在stackoverflow 找了半天,大多是介绍unittest 测试多线程模块,并非是unittest本身如何多线程运行用例。“我如何学习葵花宝典” 和 “我如何验证 张三 学会了葵花宝典”是两回事,而我显然要解决的问题是前者。又重新百度,结果就找了答案。核...
            0 0 2173
            分享
          •   前言  一个高效的团队离不开leader和组员之间,组员和组员之间的通力合作。而合作的基础便是彼此之间的商讨与协调,意见的统一,进而在达成共识的前提下行动。那么如何才能和组员达成共识呢? 和组员之间的沟通必不可少。  做好沟通前的准备  孔子说:"言未及之而言,谓之躁;言及之而不言,谓之隐;未见颜色而言,谓之瞽(gǔ)。"意思是说:话还没说到那儿,你就出来发表意见了,这叫草率;话已经说到这了,你本来应该自然而然地往下说,可你却吞吞吐吐,遮遮掩掩,这叫有话不说;不看别人的脸色,上来就说话,叫做盲目。可见沟通并不是简简单单的只是表达想说的话。做好前期准备至关重要。  沟通地...
            0 0 2791
            分享
          • 软件测试职业发展方向,大体上可以分为管理路线、技术路线、管理+技术路线。软件测试,是技术主导的职业;不管选择哪条发展路线,都是需要一定的技术沉淀,只是相对来说,管理路线对技术方面要求不高而已。那么我们就先挑重头的技术路线展开讨论。一般来说,一个普通的测试工程师刚入行,3个月左右熟悉企业的工作流程和模式,那么今后的工作内容趋于平稳。然而社会是残酷的!如果单单停留在测试工程师的阶段,若干年后,相信你再也竞争不过那个时候的应届毕业生,当你的工作技能和职业素质趋于与那些朝气蓬勃的年轻人相当时,企业会毫不留情的选择他们,而release你,因为你的成本消耗要比他们高,这是大实话!然而现实又是公平的!因为...
            15 15 1282
            分享
      • 51testing软件测试圈微信