这是一个基于JMeter的完整性能测试自动化平台,专为AI语音识别和大模型分析系统设计。项目集成了测试执行、报告生成、监控告警和CI/CD流水线,提供端到端的性能测试解决方案。
- JMeter自动化测试: 支持多种测试场景的自动化执行
- AI语音识别测试: 专门针对ASR系统的性能测试
- 大模型分析测试: 针对AI大模型推理的性能测试
- 并发压力测试: 支持高并发场景的性能验证
- 自定义HTML报告: 美观的响应式性能报告
- 实时指标提取: 从日志中自动提取关键性能指标
- 多格式输出: 支持HTML、JSON等多种报告格式
- 自动上传: 支持报告自动上传到指定服务器
- 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依赖
# 克隆项目
git clone <repository-url>
cd performancescript
# 安装Python依赖
pip install -r requirements.txt
# 安装JMeter (如果未安装)
# 下载并配置JMETER_HOME环境变量# 进入监控目录
cd monitoring
# 启动监控服务
./start_monitoring.sh start
# 访问监控界面
# Prometheus: http://localhost:9090
# Grafana: http://localhost:3000 (admin/admin123)# 进入JMeter脚本目录
cd jmeterscript
# 运行测试并生成报告
./run_test_and_generate_report.sh
# 仅生成报告(不运行测试)
./run_test_and_generate_report.sh --report-only在GitLab中配置CI/CD变量,然后触发流水线:
variables:
TEST_TYPE: "performance"
JMETER_SCRIPT: "aivoice_banding_env_test.jmx"- ASR处理性能: 语音识别准确率和处理速度
- 并发处理能力: 多用户同时语音识别
- 音频格式支持: 多种音频格式的识别测试
- 错误处理: 异常音频的处理能力
- 推理性能: 大模型推理速度和准确率
- 并发推理: 多请求并发处理能力
- 内存使用: 大模型内存占用监控
- 响应时间: 端到端响应时间测试
- API接口测试: RESTful API性能测试
- 数据库性能: 数据库读写性能测试
- 缓存性能: Redis缓存性能测试
- 网络延迟: 网络传输性能测试
- 总请求耗时(秒)
- 成功处理的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在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']# 运行单个测试
cd jmeterscript
python3 html_report_generator.py
# 运行完整测试套件
./run_test_and_generate_report.sh
# 查看测试结果
open custom_html_reports/custom_performance_report.html# 触发性能测试
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"# 启动监控
cd monitoring
./start_monitoring.sh start
# 查看监控状态
./start_monitoring.sh status
# 查看监控日志
./start_monitoring.sh logs prometheus-
JMeter启动失败
# 检查JMeter安装 echo $JMETER_HOME java -version # 检查内存配置 export JMETER_OPTS="-Xms1g -Xmx4g"
-
监控服务启动失败
# 检查Docker服务 sudo systemctl status docker # 检查端口占用 netstat -tulpn | grep :9090
-
报告生成失败
# 检查日志文件 tail -f jmeterscript/jmeter.log # 检查Python依赖 pip list | grep -E "(requests|jinja2)"
-
查看详细日志
# JMeter详细日志 jmeter -n -t test.jmx -l results.jtl -e -o report -v # 监控服务日志 docker-compose logs -f prometheus
-
手动验证配置
# 验证JMeter脚本 jmeter -n -t test.jmx --testplan # 验证Prometheus配置 promtool check config prometheus.yml
- Fork项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 打开Pull Request
本项目采用MIT许可证 - 查看 LICENSE 文件了解详情。
- 项目维护者: [维护者姓名]
- 邮箱: [邮箱地址]
- 项目地址: [项目GitLab地址]
注意: 这是一个企业级性能测试平台,请在生产环境中谨慎使用,并确保遵循相关的安全策略和最佳实践。