网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
可以看出,我们共10条请求,【点赞】1条,【查看】9条。与我们最初设置的1:9的比例一致。
3、通过自定义随机变量+if控制器来实现
如上场景,我们可以通过Java脚本自定义一个min-max的随机数,然后用if控制器来控制发送哪个请求。
如上场景,点赞与查看是1:9,我们可以定义一个生成1-10的随机数,用if控制器来控制,if 随机数=1,则执行【点赞】请求,if随机数>1,则执行【查看】请求。
具体步骤如下:
①自定义随机变量
选择线程组→【添加】→【取样器】→【Java请求】 (因为要写Java脚本,所以需要先添加Java请求,在Java请求下添加取样器)
选择【Java请求】→【添加】→【前置处理器】→【BeanShell PreProcessor】→添加 设置自定义变量的脚本,生成随机数【randNo】
//.......自定义随机数的方法一........
import java.util.Random;
class JmeterUtil{
public static int getRandNo(int min,int max){
Random random = new Random();
int randNo = random.nextInt(max)%(max-min+1) + min;
return randNo;
}
}
int r = JmeterUtil.getRandNo(1,10);
vars.put("randNo",r.toString());
//.......自定义随机数的方法二........
vars.put("randNo","${_Random(1,10)}");
②为每个请求添加if控制器,来控制比例
右击【点赞】/【查看】请求→【插入上级】→【逻辑控制器】→【如果(If)控制器】→添加随机数【randNo】的判断
在这里要注意,这里只能填一个变量来作为判断条件,而不能直接填【${randNo}=1】,这样if控制器是无法解析的,所以,我们要内置jexl3函数来实现表达式的计算。
步骤如下:
点击【工具】→选择【函数助手对话框】→选择【jexl3】函数→将表达式填入函数参数的【值】那一列→点击【生成】→点击生成的函数即可复制→将复制的函数表达式粘贴在if的判断条件框里
这里是点赞的if控制器,点赞的比例是1,所以我们的判断条件为randNo==1。
【查看】请求的if控制器设置同上,只是判断表达式由【&{randNo}==1】改为【&{randNo}>1】
运行结果如下:
可以看出,比例基本一致,【点赞】请求有2个,【查看】请求有8个,随机数不是10个数一定是1-10都会出现,所以会出现这种2:8的现象,压测过程中请求较大,故比例偏差是微乎其微的,可忽略。
4、使用JMeter内置随机数+if控制语句来实现
具体步骤:
①右击线程组→【添加】→【配置元件】→【Random Variable】→设置变量名称、随机范围
为每个请求添加if控制器的方法同方法三中的步骤一样,连变量名都一样,原样操作即可。
三、各种方法的优缺点
1、对每个请求设置循环次数。
优点: 操作简单易于实现
缺点: 只能顺序执行,无法随机执行
2、通过switch controller来实现实现
优点:
可以随机执行
缺点:
如果接口较多,比例偏差较大,设置起来比较费劲,例如2:10:88,数组里是2个0,10个1,88个2。
因为每次都要读一遍BeanShell 取样器,严重影响性能,使结果偏离现实。
3、通过自定义随机变量+if控制器来实现
优点:
可拓展性高,可以根据需求用脚本实现,
缺点:
学习成本高,不适宜新手
性能低,没执行一次,都要先执行下这个Java脚本
4、使用JMeter内置随机数+if控制语句来实现
优点:
易上手,操作简单
性能高,因为用的是JMeter内置随机数,所以比方法3性能更高一些。
缺点:
可拓展性差,不能根据特殊需求控制随机变量的随机性,只能设置一个随机区间。
所以,根据经验,方法4是最适用大众的按比例压测的方法。
最后:
如果你平时有很多问题想要解决,你的测试职业规划也需要一点光亮,你也想跟着大家一起分享探讨,我给你推荐一个 「软件测试学习交流群:746506216」 你缺的知识这里有,你少的技能这里有,你要的大牛也在这里……
资源分享【这份资料必须领取~】
下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!**
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新