断言JMeter变量是否从上一次迭代增加

时间:2018-01-18 13:59:44

标签: jmeter

在JMeter中,我正在执行get请求以检查activeMQ队列大小。

此请求是在循环控制器内进行的,运行时可以说4次。

在每次迭代中,我将outQueueCount的值提取到JMeter变量中。

如何进行断言以验证当前计数值是否大于上一次迭代?

3 个答案:

答案 0 :(得分:2)

如果您有2个带数字的JMeter变量,您可以使用__intSum函数检查它们之间的差异

 ${__intSum(${outQueueCount},-${currentCount},difference)}

difference将是一个带有结果的新JMeter变量,然后您可以检查差异是否为1,例如:

 ${__jexl3("${difference}" == "1")}

答案 1 :(得分:1)

1)使用以下配置在您的请求之前添加Counter作为您的循环控制器的子项:

  • 开始: 1

  • 增量: 1

  • 参考名称:计数器

2)在正则表达式提取器之后添加BeanShell PostProcessor作为请求的子项,并在脚本区域中添加以下脚本:

String Counter = vars.get("Counter");
vars.put("MyVar_" + Counter, vars.get("MyVar"));// MyVar is the name of your regular expression extractor.

3)在上面的BeanShell PostProcessor之后添加一个BeanShell Assertion,并在脚本区域中添加以下脚本:

int Counter = Integer.parseInt(vars.get("Counter"));
if(Counter > 1){
int Prev = Counter - 1;
int CurrentCount = Integer.parseInt(vars.get("MyVar_" + Counter));
int PrevCount = Integer.parseInt(vars.get("MyVar_" + Prev));
if(CurrentCount < PrevCount){
Failure = true;
FailureMessage = "CurrentCount = " + CurrentCount + " is less than " + "PrevCount = " + PrevCount;}}

答案 2 :(得分:1)

  1. JSR223 Assertion添加为请求的子项,并返回此outQueueCount
  2. 将以下代码放入&#34;脚本&#34;面积:

    def previousValue = vars.get('previousValue')
    
    if (previousValue == null) {
        vars.put('previousValue', vars.get('outQueueCount'))
    }
    else {
        long previous = previousValue as long
        long current = vars.get('outQueueCount') as long
        if (previous >= current) {
            AssertionResult.setFailure(true)
            AssertionResult.setFailureMessage('Queue size not incremented: previous value: ' + previous + ', current value: ' + current)
        }
    }
    
  3. 如果之前的值大于或等于新值 - 您将收到错误消息并且采样器将失败:

    JMeter Groovy Assertion

    更多信息:Scripting JMeter Assertions in Groovy - A Tutorial