jmeter 线程多次传递同一请求主体,JSR223预处理器用于每次生成随机请求主体

jjjwad0x  于 2023-02-04  发布在  其他
关注(0)|答案(1)|浏览(172)

我的测试有2个API请求。在第二个API请求主体中传递的参数每次都是唯一的。所以我使用JSR223预处理器和groovy来使用RandomUtils生成它。线程组设置为有3个线程,上升时间为15秒,并使用循环控制器,循环计数为10。第一个API在线程组中,第二个API在循环控制器中,因为它需要多次运行。但在测试执行期间,对于第二个API,一个线程多次使用相同的参数传递相同的请求主体。2因此测试失败。3这怎么可能呢?

mspsb9vt

mspsb9vt1#

如果没有看到Groovy代码,就不可能说出"这怎么可能"。
最常见的错误是在Groovy脚本中使用JMeter函数或变量。
JSR223测试元素有一个功能(编译)可以显著提高性能。要从该功能中获益:

  • 使用脚本文件而不是内联它们。如果ScriptEngine上有此功能,这将使JMeter编译它们并缓存它们。
  • 或者使用脚本文本并选中"如果可用,则缓存已编译脚本"属性。

使用此功能时,请确保脚本代码不直接在脚本代码中使用JMeter变量或JMeter函数调用,因为缓存只会缓存第一个替换。请使用脚本参数。
如果是这种情况,请重构代码以使用vars shorthand for JMeterVariables class instance而不是JMeter函数或变量语法,这样应该可以解决问题。

相关问题