当匹配计数设置为 -1 时,ForEachController 正在从正则表达式变量结果中选择重复的值,当使用超过 1 个用户执行时

问题描述

当匹配计数设置为 -1 时,Jmeter ForEach 控制器从正则表达式变量结果中挑选重复值。

ThreadGroup

--Req1
--Req2

---RegEx: with Match No. -1 (Debug Sampler shows match count: 40 )

---ForEach Controller

----Http req using ForEach controller's output variable

它为单个用户正确选择,当超过 1 个用户执行时,它选择重复值

请指导

解决方法

当然可以。

根据JMeter Documentation

属性与变量不同。 变量是线程的局部变量;属性对所有线程都是通用的,需要使用 __P 或 __property 函数引用。

所以每个线程(虚拟用户)执行 Req2,Regular Expression Extractor 返回 40 个变量。所以每个用户都有自己的一组 40 个变量,并使用 ForEach 控制器来迭代它们

如果您有多个用户并且需要每个用户拥有自己的变量或一组变量,您可以:

  1. 用 1 个线程在 setUp Thread Group 中的某处提取这 40 个变量

  2. 使用 JSR223 Post-Processor 和如下代码将 JMeter 变量转换为 JMeter 属性:

    1.upto(vars.get('myVar_matchNr') as int,{
        props.put('myVar_' + it,vars.get('myVar_' + it))
    })
    
    props.put('myVar_matchNr',vars.get('myVar_matchNr'))
    
  3. 就是这样,您应该能够在需要时使用 __P() function 访问第一个变量,例如 ${__P(myVar_1,)},第二个变量作为 ${__P(myVar_2,)} 等。

,

计数器是我请求中出现问题的原因,

Firebase CLI v9.9.0