[英]how to send unique data for each thread in jmeter
我正在使用jmeter测试我的REST API是否有10000个匹配项,为此,每个http匹配项都会在DB中存储一些数据。 我已遵循以下测试计划
我正在并行运行10个线程,每个线程的启动时间为20秒,并循环1000个以达到相同的效果。
但是这里的问题是我的线程没有获取唯一的数据集。 而我的后端HTTP URL期望每个http点击都具有唯一的字符串。
现在,我尝试了以下方法。
具有10000个唯一值的单个CSV数据集配置,并且线程组中的所有线程都读取相同的数据。
为每个线程设置不同的CSV数据,并使用filename {{__ threadNum} .csv
我使用jmeter _RandomString方法在运行时为每个http点击生成随机字符串,在http帖子正文中,我像
{“ tenantName”:“ $ { __RandomString (15,abcdefghijklmnofqrst1234567#@#%^&*,)}”}
现在,以上方法都不适合我。 在某个时间点后运行测试计划时,2个线程试图使用相同的数据并访问我的HTTP url。 我从http响应中收到冲突错误。 我的错误计数一直在增加。
现在,我真的不明白这两个尝试如何使用相同的数据访问http吗?
有人可以解释一下这个问题,并帮助我设置正确的测试计划配置。
编辑:
所有线程的CSV数据集配置:
HTTP请求:
使用CSV数据集添加测试计划:
除了Ubik和DmitrT的所有建议之外,我还将CSV配置元素放在线程组之外。 让我知道。
CSV方法还可以,但是如何配置csv数据集并将其放入计划中?
确保将“在EOF上回收”设置为false,以确保没有数据被重用。
你能证明这个吗?
您还可以显示HTTP请求内容吗?
编辑2015年9月1日:
ib fileName路径字段也用\\或/替换\\
如果您需要发送可以是随机的唯一数据,我相信__UUID()函数可以提供帮助。
每次被调用时,它都会生成随机的独占GUID结构,这似乎正是您要寻找的。
有关此和更多JMeter函数的说明和演示,请参阅如何使用JMeter函数帖子系列。
尽管对于这个问题我来不及了,但我认为有人可能会觉得有用。
希望能帮助到你。
用户定义的变量元素也有相同的问题。 在其中,我创建了一个UUID并将其分配给变量。 我期望每个线程生成不同的UUID,但事实并非如此。
解决方案(对我有用)添加一个Beanshell Sampler。 在其中,使用UUID生成唯一值,然后使用put方法将值存储在“ vars”中。 每个线程将执行代码并具有自己的唯一值。
示例:为每个要使用的线程生成并存储唯一的accountId
String uniqueId = "${__UUID()}";
vars.put("accountId", uniqueId);
我希望这有帮助!
将csv数据集配置放在线程组之外并保持共享模式为“ ALL THREADS”的最简单方法,它将解决您的目的。 即使在多个线程组的情况下,您也可以在共享模式下使用此csv数据,并且每个线程都会自动选择唯一的数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.