jmeter在做参数化的时候,大家经常用到的就是CSV数据文件设置,这样就会涉及到取值的问题。有同事问到了jmeter如何像loadrunner一样取值设置为unique once,我们先来看一下jmeter在不同场景下的取值效果。
首先做一下准备工作,我们创建一个CSV文件,里边放入1-30数据。打开jmeter使用CSV取值,添加调试取样器和察看结果树。
设置线程数3,循环10次,csv线程共享模式:所有现场,运行看一下效果:
可以看到取值的规律,线程1获取到了数据1-10,线程2获取到了11-20,线程3获取到了21-30,这种方式一般对于我们脚本中数据参数是可以的,顺序进行取值。
csv线程共享模式所有现场和当前线程组效果一致,因为脚本就涉及到一个线程组,再改设置成当前线程,再次运行看效果:
这次可以看到,跟刚才的不一样,循环只发生在当前线程,3个线程都是获取到了数据1-10, 不同场景不同设置,根据自己的需求灵活应用就行。
现在再来看一下Jmeter如何才能做到像Loadrunner一样,取值设置成unique once呢,那就得先了解下loadrunner设置成unique once以后是如何取值的,首先把我们刚才1-30的CSV数据给到loadrunner,设置好unique once,输出参数{no}:
接下来启动场景,也是设置3并发用户,循环10次,运行输出看效果:
可以看到,输出是10个数据1,10个数据2和10个数据3。虽然放入的是1-30的数据,但是取值只取到数据1-3,循环取值了10次。
这样的取值场景,就是涉及到唯一取值,一般就是系统对于登录用户的校验,不允许两个同时出现的场景,看完loadrunner的取值效果,还是刚才的数据再看下jmeter,其实就很简单了,脚本中涉及到唯一性的可以想到仅一次控制器,我们只需要把用于取值的csv数据文件设置放入到控制器当中,就是相当于同一个线程,取值一次,循环使用了10次,确保了所有线程的唯一取值。
运行看效果,就跟loadrunner一样了,1-3分别获取了10次,满足了测试需求。
相互学习,共同进步!