用jmeter计算重定向

时间:2017-09-20 12:38:34

标签: redirect jmeter

目前,我正在使用 HTTP请求采样器,并启用“关注重定向” ,并希望保持这种状态。作为除断言之外的二级检查我也想计算重定向的数量,但我不想实现this解决方案。

当我只能使用1个HTTP采样器和后处理器(现在是beanshell)并获取此信息时,有没有办法?我正在检查SamplerResult documentation,但无法找到任何可以为我提供此信息的方法。

2 个答案:

答案 0 :(得分:2)

将以下Regular Expression Extractor添加为您的采样器的子项:

  • 适用于:主要样本和子样本
  • 要检查的字段:响应代码
  • 正则表达式:(\ d +)
  • 模板: $ 1 $
  • 比赛编号: -1

然后将BeanShell后处理器也添加为采样器的子项,并将以下内容添加到脚本区域:

int matchNr = Integer.parseInt(vars.get("MyVar_matchNr"));// MyVar is the name of the variable of the above regular expression extractor
int counter = 0;
for(i=1; i <= matchNr; i++){
    String x = vars.get("MyVar_"+i);
    if(x.equals("302")){
        counter = counter + 1;
    }}
log.info(Label + ": Number of redirects = " + String.valueOf(counter));// The output will be printed in the log like this(BeanShell PostProcessor: Number of redirects = 3 ) so you might want to change the name of the beanshell post processor to the same name of your sampler.

然后,您可以在日志中看到采样器的重定向次数。

答案 1 :(得分:2)

我听说Groovy is new black而且users are encouraged to use JSR223 Test Elements and __groovy() function since JMeter 3.1因为Beanshell表现不佳,所以你可以按如下方式计算重定向:

  1. 添加JSR223 PostProcessor作为HTTP请求采样程序的子项
  2. 将以下代码放入&#34;脚本&#34;面积:

    int redirects = 0;
    def range = new IntRange(false, 299, 400)
    prev.getSubResults().each {
        if (range.contains(it.getResponseCode() as int)) {
            redirects++;
        }
    }
    
    log.info('Redirects: ' + redirects)
    
  3. 运行测试后,您将能够在 jmeter.log 文件中看到发生重定向的次数:

    JMeter Groovy Count Redirects