jmeter--参数化--详解

        这里是清安,上一章我们讲到了控制器,本章就来说道说道参数化,下一章,我们就直接跑一个实例,带你深入了解这些前面的基础。

        接口还是前一章的接口,这里就不重复写了。

        什么是参数化?

        参数化就是将某一些请求中的一些参数值替换为动态的请求,比如第一次请求的值是a,下一次迭代请求想变成b,这就是典型的参数化场景。其目的在于模块真实的用户请求。

文件参数化

        添加》》配置原件》》CSV DATA SET CONFIG,添加后如下图所示:

         如你所见:

        文件名:文件地址,最好不要中文

        编码:UTF-8,也可不选

        变量名:自己记好就行,如果两行数据就用英文字母隔开,如:user,pwd

        是否忽略首行:如果你的首行写了username或者其他的,就可以忽略,否则循环第一次拿到的就是你第一行的数据,会造成误差

        是否文件结束再次循环:如果选择TRUE则会一直循环,一半Flase

        其他的默认即可

         看看HTTP请求部分:

         图中红色部分是重点部分,前面的csv提取就是用到了这里。csv文件种我写了北京,上海,深圳等五个地方。我们跑起来看看。

        这里你需要知道的,循环控制器的好处:文件中写了五个地点,这里需要循环五次才行,否则只能输出一个地点的天气。

        这里很多人应该会遇见一个问题,就是CSV文件创建不出来,也就是乱码的现象。这里告诉你一个技巧,创建好一个空的excel文件,不写数据,将后缀改成CSV,用notepad++打开进行编写,将里面的乱码数据删掉,即使刚开始没有数据打开后也会有一堆乱码数据,格式转为utf-8进行内容输入就好。

        这里值得注意的是,文件读取如果数据量过于庞大,就不适合用于压测了,因为本身的读取就有一定的压力了,这样会导致压力分散,数据就不太符合了。

        其次就是路径需要更改,这也是其中的一个弊端。

数值函数参数

        这里可以用到一个比较偷懒,且便捷的工具。函数助手工具》》函数助手对话框

随机数

        随机函数:${__Rando(1000,9999,data)}

        该函数有3个参数,第一个参数表示最小的数字,第二个表示范围内最大数字,第三个为变量名称。通常用来表示本次迭代的值是多少。

        注意:
        如果后期使用该值直接填写rando的话又会重新产生一个随机数,那么只能填写这个变量名。

        我们先添加两个Java请求出来,以便于数值的输出:

         这里有个小技巧,就是在函数助手里面选中函数,然后先生成一次随机数,再出来就可以在这个位置直接粘贴上。

         这两者的产生的随机数是有可能重复的。这点是需要记住的。

        如果你想使用这个随机数,我们就可以用第三个值用来做变量,就如上我第三个值写的da,我们可以直接在Java请求2中取到值:

         结果图我就不摆出来了,这里告诉你用法,同样,这种方法适用于一些场景。

随机字符串

        ${__RandomString()}

        该函数有3个参数,第一个参数表示生成的随机字符串位数,第二个表示在哪些字母下生成,第三个表示变量名称,也可以不要变量名称。

        也是可以借助工具的:

         跟随机数用法类似,没用太大的区别,这里介绍介绍,了解一下。

 唯一值参数化

        实际压测中经常会有用到唯一值的情况,特别是对系统新增接口时,因为一些编号,订单等是唯一的,所以在大量压测下,唯一值特别重要,唯一值没做好,很有可能影响到脚本的失败。

        所以我们可以利用时间函数,时间永远是往前走的,取当前系统时间缀以达到我们的唯一值效果。
        1、${__time(,)} 生成的是一个13位的时间缀,在毫秒级别,然后再加上__Random()配合
        2、${__time(/1000,)}:该公式精确到秒级别, 10位数  1527822871,以秒的基础上可加上随机
        3、${__time(yyyyMMddHHmmss,)}    按照一定格式进行展示,年月日时分秒
        4、${__time(ddHHmmss,)}   按照一定格式进行展示,年月日时分秒

       第二种情况,在高并发的情况下不适用,因为1秒内可以产生庞大的数据,就比如1S执行一百个甚至更多的线程。这样第一种时间戳的情况就会产生大量的误差。

        达到唯一值有什么办法呢,精确到毫秒?精确到毫秒也是会产生一定的重复,因为计算机本身就是毫秒级别的。这里就可以用上毫秒+随机数。尽可能的减少误差的产生。

        怎么样进行时间转换呢,把后三位的随机数去掉,以及将毫秒换成秒,再去掉三个0

        另外的两种就不做具体的介绍了,自己尝试吧,本篇参数化介绍就到这了。

  • 15
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清安无别事

慢慢的积累一杯奶茶吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值