JMeter不遵循请求顺序,同时执行多个线程的脚本

JMeter does not follow request sequence, while executing script for multiple threads

我准备了一个JMeter脚本。

它有多个请求。我从响应中获取数据并将其用作下一个请求的参数。

  1. 请求 1:添加项目
  2. 请求 2:编辑项目 [从第一个请求的响应中获取的项目 ID]
  3. 请求 3:删除项目 [从第一个请求的响应中获取的项目 ID]

它在单线程下工作得很好。但是,当我 运行 多线程脚本时,它无法正常工作。

  1. 请求 1:添加项目(线程 1)
  2. 请求 2:编辑项目 [从第一个请求的响应中获取的项目 ID](线程 1)
  3. 请求 3:编辑项目 [从第一个请求的响应中获取的项目 ID](线程 2)
  4. 请求 4:删除项目 [从第一个请求的响应中获取的项目 ID](线程 1)
  5. 请求 5:删除项目 [从第一个请求的响应中获取的项目 ID](线程 2)
  6. 请求 6:添加项目(线程 2)

在请求 5 中,它尝试删除已删除的项目,因此失败了。这 运行 非常随机。

请帮忙。

它按预期工作。如果您使用不同的线程编辑和删除同一项目,第一个执行删除请求的线程将删除它,而其他线程将失败。

它应该是这样的:

  1. 请求 1:添加项目(线程 1)
  2. 请求 2:添加项目(线程 2)
  3. 请求 2:编辑项目 [从第一个请求的响应中获取的项目 ID](线程 1)
  4. 请求 3:编辑项目[从第二个请求的响应中获取的项目 ID](线程 2)

您可以使用 __threadNum() 函数作为后缀来唯一地寻址特定线程创建的项目的 ID。例如 ID_1 变量将保存项目的 ID,由第一个线程创建,ID_2 - 由第二个线程等创建。

您可以使用 __V() 函数使用动态线程号引用变量,例如:

${__V(ID_${__threadNum})}

有关上述和其他 JMeter 函数的更多信息,请参阅 Functions and Variables chapter of JMeter's User Manual and How to Use JMeter Functions 系列文章。