Skip to content

yt-huang/performance_script

Repository files navigation

性能测试自动化平台

📋 项目概述

这是一个基于JMeter的完整性能测试自动化平台,专为AI语音识别和大模型分析系统设计。项目集成了测试执行、报告生成、监控告警和CI/CD流水线,提供端到端的性能测试解决方案。

🎯 核心功能

🔧 性能测试

  • JMeter自动化测试: 支持多种测试场景的自动化执行
  • AI语音识别测试: 专门针对ASR系统的性能测试
  • 大模型分析测试: 针对AI大模型推理的性能测试
  • 并发压力测试: 支持高并发场景的性能验证

📊 报告生成

  • 自定义HTML报告: 美观的响应式性能报告
  • 实时指标提取: 从日志中自动提取关键性能指标
  • 多格式输出: 支持HTML、JSON等多种报告格式
  • 自动上传: 支持报告自动上传到指定服务器

🚀 CI/CD集成

  • GitLab CI流水线: 完整的自动化测试流水线
  • 参数化配置: 支持灵活的参数配置
  • 多环境支持: 支持测试、预发布、生产环境
  • 一键触发: 支持手动和API触发测试

📈 监控告警

  • 实时监控: Node Exporter + Prometheus + Grafana监控栈
  • 系统指标: CPU、内存、磁盘、网络等系统指标
  • 应用指标: 应用性能指标监控
  • 可视化面板: 丰富的Grafana监控面板

🏗️ 项目架构

performancescript/
├── jmeterscript/                 # JMeter测试脚本和报告生成
│   ├── *.jmx                    # JMeter测试脚本
│   ├── html_report_generator.py # 自定义HTML报告生成器
│   ├── run_test_and_generate_report.sh # 自动化测试脚本
│   └── results/                 # 测试结果目录
├── monitoring/                  # 监控系统
│   ├── docker-compose.yml      # 监控服务编排
│   ├── prometheus/             # Prometheus配置
│   ├── grafana/                # Grafana配置
│   └── start_monitoring.sh     # 监控启动脚本
├── function/                   # 功能模块
│   ├── AivoiceClear.py         # 语音清理模块
│   ├── CustermorCreate.py      # 客户创建模块
│   ├── MetricsGet.py           # 指标获取模块
│   └── RecordUpload.py         # 记录上传模块
├── utils/                      # 工具类
│   ├── Logger.py               # 日志工具
│   ├── Login.py                # 登录工具
│   ├── MysqlUtil.py            # MySQL工具
│   └── RedisUtil.py            # Redis工具
├── k8s/                        # Kubernetes部署配置
├── service/                    # 微服务
├── .gitlab-ci.yml             # GitLab CI配置
└── requirements.txt           # Python依赖

🚀 快速开始

1. 环境准备

# 克隆项目
git clone <repository-url>
cd performancescript

# 安装Python依赖
pip install -r requirements.txt

# 安装JMeter (如果未安装)
# 下载并配置JMETER_HOME环境变量

2. 启动监控系统

# 进入监控目录
cd monitoring

# 启动监控服务
./start_monitoring.sh start

# 访问监控界面
# Prometheus: http://localhost:9090
# Grafana: http://localhost:3000 (admin/admin123)

3. 运行性能测试

# 进入JMeter脚本目录
cd jmeterscript

# 运行测试并生成报告
./run_test_and_generate_report.sh

# 仅生成报告(不运行测试)
./run_test_and_generate_report.sh --report-only

4. 使用GitLab CI

在GitLab中配置CI/CD变量,然后触发流水线:

variables:
  TEST_TYPE: "performance"
  JMETER_SCRIPT: "aivoice_banding_env_test.jmx"

📊 支持的测试场景

AI语音识别测试

  • ASR处理性能: 语音识别准确率和处理速度
  • 并发处理能力: 多用户同时语音识别
  • 音频格式支持: 多种音频格式的识别测试
  • 错误处理: 异常音频的处理能力

大模型分析测试

  • 推理性能: 大模型推理速度和准确率
  • 并发推理: 多请求并发处理能力
  • 内存使用: 大模型内存占用监控
  • 响应时间: 端到端响应时间测试

系统集成测试

  • API接口测试: RESTful API性能测试
  • 数据库性能: 数据库读写性能测试
  • 缓存性能: Redis缓存性能测试
  • 网络延迟: 网络传输性能测试

📈 性能指标

ASR语音识别指标

  • 总请求耗时(秒)
  • 成功处理的ASR任务数
  • 失败处理的ASR任务数
  • ASR平均处理速率(任务/分钟)
  • ASR平均处理录音小时数(录音时间小时/分钟)

大模型分析指标

  • 平均处理时长(秒)
  • 成功处理的大模型分析数
  • 失败处理的大模型分析数
  • 大模型分析成功率(%)
  • 大模型分析平均处理速率(模型/分钟)

系统性能指标

  • CPU使用率
  • 内存使用率
  • 磁盘IO性能
  • 网络吞吐量
  • 响应时间分布

🔧 配置说明

环境变量配置

# JMeter配置
export JMETER_HOME=/opt/jmeter
export JMETER_OPTS="-Xms1g -Xmx4g"

# 报告上传配置
export UPLOAD_URL=https://qa.test.xxxx.com/upload
export UPLOAD_PATH=performance

# 监控配置
export PROMETHEUS_PORT=9090
export GRAFANA_PORT=3000

JMeter脚本配置

jmeterscript/目录中配置测试脚本:

<!-- 示例JMeter测试计划 -->
<TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="AI Voice Test">
  <elementProp name="TestPlan.arguments" elementType="Arguments">
    <collectionProp name="Arguments.arguments"/>
  </elementProp>
  <boolProp name="TestPlan.functional_mode">false</boolProp>
  <stringProp name="TestPlan.comments"></stringProp>
  <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
</TestPlan>

监控配置

编辑monitoring/prometheus/prometheus.yml配置监控目标:

scrape_configs:
  - job_name: 'node-exporter'
    static_configs:
      - targets: ['node-exporter:9100']
  
  - job_name: 'jmeter-metrics'
    static_configs:
      - targets: ['localhost:9270']

📋 使用指南

1. 本地测试

# 运行单个测试
cd jmeterscript
python3 html_report_generator.py

# 运行完整测试套件
./run_test_and_generate_report.sh

# 查看测试结果
open custom_html_reports/custom_performance_report.html

2. CI/CD流水线

# 触发性能测试
curl -X POST \
  -H "PRIVATE-TOKEN: YOUR_TOKEN" \
  -F "variables[TEST_TYPE]=performance" \
  -F "variables[JMETER_SCRIPT]=aivoice_banding_env_test.jmx" \
  "https://gitlab.example.com/api/v4/projects/PROJECT_ID/pipeline"

3. 监控系统

# 启动监控
cd monitoring
./start_monitoring.sh start

# 查看监控状态
./start_monitoring.sh status

# 查看监控日志
./start_monitoring.sh logs prometheus

🚨 故障排除

常见问题

  1. JMeter启动失败

    # 检查JMeter安装
    echo $JMETER_HOME
    java -version
    
    # 检查内存配置
    export JMETER_OPTS="-Xms1g -Xmx4g"
  2. 监控服务启动失败

    # 检查Docker服务
    sudo systemctl status docker
    
    # 检查端口占用
    netstat -tulpn | grep :9090
  3. 报告生成失败

    # 检查日志文件
    tail -f jmeterscript/jmeter.log
    
    # 检查Python依赖
    pip list | grep -E "(requests|jinja2)"

调试方法

  1. 查看详细日志

    # JMeter详细日志
    jmeter -n -t test.jmx -l results.jtl -e -o report -v
    
    # 监控服务日志
    docker-compose logs -f prometheus
  2. 手动验证配置

    # 验证JMeter脚本
    jmeter -n -t test.jmx --testplan
    
    # 验证Prometheus配置
    promtool check config prometheus.yml

📚 文档链接

🤝 贡献指南

  1. Fork项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开Pull Request

📄 许可证

本项目采用MIT许可证 - 查看 LICENSE 文件了解详情。

📞 联系方式

  • 项目维护者: [维护者姓名]
  • 邮箱: [邮箱地址]
  • 项目地址: [项目GitLab地址]

注意: 这是一个企业级性能测试平台,请在生产环境中谨慎使用,并确保遵循相关的安全策略和最佳实践。

About

python+jmeter性能测试框架

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors