参考:JMeter性能测试-请求数据参数设置-自动增长变量:http://www.ithao123.cn/content-10071505.html
jmeter之配置元件:http://www.tuicool.com/articles/BjaeUn
使用Jmeter进行性能测试之前需要进行测试分析并构造测试数据。分析的时候可能会发现数据库中某些表的某些字段不允许重复(如交易流水号),这时候就需要在每次请求的时候使用不重复的请求参数或内容。
我暂时只想到以下方式来实现(我觉得可以下载源码做一些改动也能做到,但是暂时还没时间去分析过源码);
1、使用csv data config来做;
用excel打开csv文件,使用拖拽、复制粘贴等方式产生不重复的数据。
csv data config的使用可参考http://ydhome.blog.51cto.com/8948432/1860673
优点:容易操作,excel很容易构造有序数;
缺点:
(1)测试完了之后,在构造下一次测试数据的时候,需要重新查看上一次的最新测试数据,然后手动构造不同于上一次的测试数据。较为繁琐。例如上一次测试时,交易流水号的最新值为201610152359(假定流水号是唯一且是增长的有序数),那么下一次测试的时候,就要使用比201610152359更新的数据开始构造。且不同并发每次都要手动更新序号。
(2)
a.如果数据较大时,容易被excel修改为科学计数法;
b.excel中,数字格式才可以拖拽生成增长数据;
c.Jmeter按String类型来读取数据;
结果:要先使用数字格式拖拽生成有序数,然后再调整为文本格式,然后又要一个一个点击单元格,让excel的展示与实际数据一样,这样Jmeter才能读到我们想要的数据(下图左边的数据)。
2、使用Counter(计数器)来实现, 具体操作如下:
(1)添加计数器(counter)
(2)认识计数器
Allows the user to create a counter that can be referenced anywhere in the Thread Group. The counter config lets the user configure a starting point, a maximum, and the increment. The counter will loop from the start to the max, and then start over with the start, continuing on like that until the test is ended.
From version 2.1.2, the counter now uses a long to store the value, so the range is from -2^63 to 2^63-1.
设置模块界面如下:
在这里吐槽一下,如果Jmeter选择了中文语言的话,那么这个Start就被翻译成了“启动”,非常不准确。还是建议用英语面板。
这里稍微提一下:
1)maximum:若是持续压测建议最好不要设置最大值,;
2)Format属性,就是类似于格式匹配,如我这里设置了000,我要发送的是11,那么最终发送的数据会匹配成 011 这个格式,如下:
3)reference name(引用名称):即是变量名,在请求的参数中会加上${}来引用到这个变量;
4)Track Counter Independently for each User(每个用户分别使用独立的计数器),如果不勾选的话,所有线程公用一个counter,会出现重复;这是在线程组内的设置;
5)Reset counter on each Thread Group Iteration(在线程组迭代的时候重置计数器),这是在线程组间的设置;
(3)设置属性
我这里设置
counterName:OrderNo
start(起始值):11,从11开始计数;
increment:1,以1为步长进行计数增长;
Number format:000;
reference name:orderno,在http请求中的post请求数据中使用(${orderno})
(4)设置http请求,将刚刚设置的counter在请求中进行引用
(5)添加“察看结果树”,启动测试,检查是否设置成功;
如下图,我们可知已设置成功。
转载于:https://blog.51cto.com/ydhome/1862459