JMeter的。如何将线程中每个用户生成的变量传递给第二个线程用户?

时间:2018-01-05 07:38:01

标签: jmeter

美好的一天,伙计们! 我试图做的是在测试因持续时间限制而停止运行后为所有用户执行干净注销。 在我的情况下,当用户登录时,他获得唯一的会话ID参数,这使得无法使用来自不同选项卡/浏览器/位置的相同用户进行日志记录,因此我需要确保在测试完成后用户未被阻止。

假设我使用100个用户进行测试。

我的测试类似于:

  • 登录(获取会话ID)
  • 做东西
  • 做东西
  • 退出(终止会话)

当我使用一组常量循环时,它工作正常,但是当我使用持续时间运行测试时,例如600秒,测试在时间用完后停止在中间,我的用户被阻止,直到他们的会话超时到期。

我试图创建第二个线程,它也包含100个用户,只有一个注销HTTP采样器,传递并使用会话ID变量,如文章https://www.blazemeter.com/blog/knit-one-pearl-two-how-use-variables-different-thread-groups中所述,但似乎我的第二个线程只接收到一个会话ID值因此它基本上会退出 1位用户100次,但我需要注销 100位用户1次

现在有人如何存储变量的多个值并在其他线程中以正确的顺序使用它们吗?

不是程序员,只是一个有额外责任的手动测试人员。 谢谢。

1 个答案:

答案 0 :(得分:0)

JMeter变量每个线程的本地,JMeter属性整个JVM的全局所以如果您在线程组之间传递变量,请确保添加当前线程号作为生成属性的前缀(或后缀),如:

  1. 在第一个线程组中使用__setProperty()__threadNum()函数组合定义特定于用户的属性:

    ${__setProperty(foo_${__threadNum},${YOUR_VARIABLE_HERE})}
    
  2. 在第二个线程组中使用__P()__threadNum()函数组合获取特定于用户的属性:

    ${__P(foo_${__threadNum},)}
    
    • foo替换为您选择的媒体资源名称
    • YOUR_VARIABLE_HERE替换为相关JMeter变量的名称
  3. 演示:

    JMeter User Specific Properties

    请参阅Apache JMeter Functions - An Introduction以熟悉JMeter功能概念。