【问题标题】:How do I use a counter in jMeter that increments each time it is invoked?如何在 jMeter 中使用每次调用时递增的计数器?
【发布时间】:2015-11-26 00:36:01
【问题描述】:

基本上,我希望在负载测试中有一个特定于用户的计数器(每个用户都有自己的计数器,初始化为 1),但在整个测试执行过程中每次调用它时都会递增。

换句话说,我希望我的计数器出现以下行为:

请求 1:

<item position="${POSITION_CTR}"... >      //Counter is 1
<item position="${POSITION_CTR}"... >      //Counter is 2 despite same request

请求 2:

<item position="${POSITION_CTR}"... >      //Counter is 3

请求 3:

<item position="${POSITION_CTR}"... >      //Counter is 4

我尝试使用 __counter(TRUE, POSITION_CTR) 函数。不幸的是,无论我调用多少次,这都会导致值为“1”。我考虑使用 BeanShell Post 处理器在每次请求后以编程方式递增计数器值,但随后使用计数器两次(应该是唯一的)的请求将具有相同的计数器值。

我也尝试使用计数器(配置元素),但似乎与 __counter() 存在相同的问题。任何建议将不胜感激。

【问题讨论】:

    标签: jmeter


    【解决方案1】:

    您可以尝试在“BeanShell PostProcessor”中使用 __setProperty() 来增加值。但要小心,它会反映到测试计划中的所有线程。

    例如,在 BeanShell PostProcessor 中使用如下:

    __setProperty("counter", "${__javaScript(${__property(counter)} + 1}
    

    您也可以尝试使用 var.put,如下所示:

    vars.put("counter", "${__javaScript(${counter} + 1}
    

    【讨论】:

    • 感谢您的回复。根据 jMeter 文档:属性与变量不同。变量是线程本地的;属性对所有线程都是通用的,需要使用 __P 或 __property 函数来引用。所以我认为属性不是我用例的正确方法。我需要每个用户都有自己的柜台。正如我在原帖中提到的,使用 beanshell 后处理器的问题在于,如果我在一个请求中使用了两次或多次计数器变量,则计数器只会增加一次,并且计数器在所有情况下都是相同的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多