美好的一天,伙计们! 我试图做的是在测试因持续时间限制而停止运行后为所有用户执行干净注销。 在我的情况下,当用户登录时,他获得唯一的会话ID参数,这使得无法使用来自不同选项卡/浏览器/位置的相同用户进行日志记录,因此我需要确保在测试完成后用户未被阻止。
假设我使用100个用户进行测试。
我的测试类似于:
当我使用一组常量循环时,它工作正常,但是当我使用持续时间运行测试时,例如600秒,测试在时间用完后停止在中间,我的用户被阻止,直到他们的会话超时到期。
我试图创建第二个线程,它也包含100个用户,只有一个注销HTTP采样器,传递并使用会话ID变量,如文章https://www.blazemeter.com/blog/knit-one-pearl-two-how-use-variables-different-thread-groups中所述,但似乎我的第二个线程只接收到一个会话ID值因此它基本上会退出 1位用户100次,但我需要注销 100位用户1次。
现在有人如何存储变量的多个值并在其他线程中以正确的顺序使用它们吗?
不是程序员,只是一个有额外责任的手动测试人员。 谢谢。
答案 0 :(得分:0)
JMeter变量每个线程的本地,JMeter属性整个JVM的全局所以如果您在线程组之间传递变量,请确保添加当前线程号作为生成属性的前缀(或后缀),如:
在第一个线程组中使用__setProperty()和__threadNum()函数组合定义特定于用户的属性:
${__setProperty(foo_${__threadNum},${YOUR_VARIABLE_HERE})}
在第二个线程组中使用__P()和__threadNum()函数组合获取特定于用户的属性:
${__P(foo_${__threadNum},)}
foo
替换为您选择的媒体资源名称YOUR_VARIABLE_HERE
替换为相关JMeter变量的名称演示:
请参阅Apache JMeter Functions - An Introduction以熟悉JMeter功能概念。