You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于JMeter汇总报告总错误率计算区间并输出日志?

可行解决方案建议

方案一:JMeter内置JSR223脚本直接处理

在JMeter测试计划中添加JSR223 Listener,使用Groovy脚本直接获取汇总报告的总错误率,完成区间判断并输出日志:

// 获取汇总报告的总错误率(需确保测试计划中有对应名称的Summary Report元件)
def summaryReport = ctx.getThreadGroup().getListeners().find { it.getName() == "Summary Report" }
def errorPercent = summaryReport.getErrorPercentage()

// 区间判断并输出日志
if (errorPercent >= 10 && errorPercent <= 20) {
    log.info("【错误率告警】当前总错误率为${errorPercent}%,处于10%-20%区间")
} else if (errorPercent >= 21 && errorPercent <= 40) {
    log.info("【错误率告警】当前总错误率为${errorPercent}%,处于21%-40%区间")
} else if (errorPercent >= 41 && errorPercent <= 60) {
    log.info("【错误率告警】当前总错误率为${errorPercent}%,处于41%-60%区间")
} else if (errorPercent >= 61) {
    log.info("【错误率严重告警】当前总错误率为${errorPercent}%,已超过60%")
}

注意:如果你的汇总报告元件名称不是"Summary Report",需要替换为实际名称;Groovy脚本性能优于其他脚本语言,建议优先使用。

方案二:解析JMeter生成的CSV报告(Python脚本)

先让JMeter执行测试时生成CSV格式的汇总报告(通过-l test_results.csv参数或在Summary Report中配置保存路径),再用Python脚本解析判断:

import csv

# 读取JMeter的CSV报告文件
with open('test_results.csv', 'r', encoding='utf-8') as f:
    reader = csv.DictReader(f)
    # 获取最后一行的汇总数据(总错误率在"Error %"列)
    for row in reader:
        pass
    error_percent = float(row['Error %'].replace('%', ''))

# 区间判断输出
if 10 <= error_percent <= 20:
    print(f"[日志] 总错误率{error_percent}%,处于10%-20%区间")
elif 21 <= error_percent <= 40:
    print(f"[日志] 总错误率{error_percent}%,处于21%-40%区间")
elif 41 <= error_percent <= 60:
    print(f"[日志] 总错误率{error_percent}%,处于41%-60%区间")
elif error_percent >= 61:
    print(f"[严重日志] 总错误率{error_percent}%,超过60%阈值")

方案三:Jenkins Pipeline中集成判断

如果是在Jenkins中执行测试,可以直接在Pipeline脚本里解析JMeter报告,完成判断:

pipeline {
    agent any
    stages {
        stage('Run JMeter Test') {
            steps {
                sh 'jmeter -n -t test_plan.jmx -l test_results.csv'
            }
        }
        stage('Check Error Rate') {
            steps {
                script {
                    // 读取CSV最后一行的错误率,列索引根据实际CSV结构调整
                    def errorPercent = sh(
                        script: 'tail -1 test_results.csv | awk -F, \'{print $8}\' | sed \'s/%//\'',
                        returnStdout: true
                    ).trim().toFloat()
                    
                    // 判断输出
                    if (errorPercent >=10 && errorPercent <=20) {
                        echo "【日志】总错误率${errorPercent}%,10%-20%区间"
                    } else if (errorPercent >=21 && errorPercent <=40) {
                        echo "【日志】总错误率${errorPercent}%,21%-40%区间"
                    } else if (errorPercent >=41 && errorPercent <=60) {
                        echo "【日志】总错误率${errorPercent}%,41%-60%区间"
                    } else if (errorPercent >=61) {
                        echo "【严重日志】总错误率${errorPercent}%,超过60%"
                    }
                }
            }
        }
    }
}

注意:上述Pipeline脚本中,awk -F, '{print $8}'的列索引需要根据你的CSV报告列顺序调整,确保对应到"Error %"列。

内容的提问来源于stack exchange,提问作者Tomas Gotes

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 19:20:27