2017-03-15 99 views
0

我有一个JMeter的脚本,通过一束请求去重复JMeter的正则表达式提取,每个都是不同的,获取,邮政等...所有请求

每个请求从服务器返回一个自定义标题其中有一些数字值。这个头返回它在服务器端的实际处理时间(没有延迟/ http开销)

我能够添加一个正则表达式提取从头获得该值没有任何问题,但是我希望这对所有请求重复。

通过使用调试采样器,我可以看到提取器只运行一次,似乎是最后一个实例。

如何获取运行所有请求并从头文件中收集所有值的提取器。

奖金问题。最后,我希望能够汇总这些值并获得一个平均值。

免责声明:这个其他问题与我的类似,但它没有解释如何根据提取器和调试采样器的位置来实际执行它。

Track results of a regular expression extractor in JMeter

谢谢。

回答

0

虽然德米特里的答案是这样做的一种方式。但是我想要一些不同的东西,每次将它导出到一个文件并进行后期处理......

我终于实现了这个“手动”

通过手动我的意思是我加了一个BSF断言与语言= JavaScript,然后写了一些JavaScript来做到这一点:

  1. 拉出值出来的头(如果找到)
  2. 保持总/计数使用变量
  3. 的记录更新一个变量,显示在集合总是
  4. 添加调试采样得到轻松的交流在测试之后等待数值。

以下是我在BSF断言使用的代码:

var responseHeaders = prev.getResponseHeaders(); 

var xNodetasticRt = /x-nodetastic-rt: (\d+\.?\d*)/.exec(responseHeaders); 

if (xNodetasticRt) { 
    var value = parseFloat(xNodetasticRt[1]); 

    vars.put("xNodetasticRt", value); 

    var total = parseFloat(vars.get("xNodetasticRt-Total")); 
    if (!total) { 
     total = 0.0; 
    } 
    total += value; 
    vars.put("xNodetasticRt-Total", total); 

    var count = parseFloat(vars.get("xNodetasticRt-Count")); 
    if (!count) { 
     count = 0; 
    } 
    count++; 
    vars.put("xNodetasticRt-Count", count); 

    vars.put("xNodetasticRt-Average", total/count); 
} 
1

只要把在同一水平作为你的HTTP请求取样正则表达式提取,这将适用于所有的人

JMeter Regular Expression Extractor

查看更详细的解释Scoping Rules用户手动输入。

关于价值收集,最好的选择是使用Sample Variables财产。给你你的头值存储到一个变量叫${foo}你可以得到追加加入下一行到user.properties文件JTL结果文件:

sample_variables=foo 

JMeter的重启将被要求挑选财产向上。另一种方式(不需要重新启动)通过-J命令行参数传递的财产

jmeter -Jsample_variables=foo -n -t test.jmx -l result.jtl 

正如你会得到一个额外的列堪称.jtl结果文件foo的结果,它会举行每个采样器的变量值为${foo}。完成测试后,您将能够使用MS Excel或同等版本打开.jtl结果文件,并使用AVERAGE函数获取您要查找的值。

请参阅Apache JMeter Properties Customization Guide了解更多关于根据您的需要设置和修改Configuring JMeter的各种JMeter属性的信息。