2026-04-29 18:11:01 +08:00
2026-04-29 18:11:01 +08:00
2026-04-29 18:05:28 +08:00
2026-04-29 18:11:01 +08:00
2026-04-29 18:11:01 +08:00

压力测试工具 - Cbcs Statistics

📋 项目简介

这是一个基于 Locust 的压力测试工具,专门用于对车辆统计信息接口进行性能测试。该工具支持 OAuth2 认证和客户端证书认证,可以模拟多用户并发访问 /api/vehicles/{vin}/statistics 接口。

主要功能

  • 🔐 OAuth2 Client Credentials 认证:自动获取 Access Token
  • 📜 客户端证书认证:支持 PFX 格式的客户端证书
  • 🚗 多 VIN 码支持:支持 GEN5 和 GEN6 两种车型测试
  • 📊 压力测试报告:提供详细的性能指标和测试报告
  • ⚙️ 灵活配置:支持通过代码或命令行参数配置测试参数

🛠️ 技术栈

  • Python 3.x
  • Locust:分布式压力测试框架
  • cryptography:处理 PFX 证书文件
  • urllib3HTTP 请求库

📦 安装依赖

pip install locust cryptography urllib3

⚙️ 配置说明

在运行测试之前,请根据实际环境修改 cbcs_statics.py 中的配置项:

1. OAuth2 认证配置

AUTH_URL = "https://ssoalpha.dvb.corpinter.net.cn/v1/token"  # Token 获取地址
CLIENT_ID = "D650DB94-FB62-427A-980A-601BBC3081B6"          # 客户端 ID
CLIENT_SECRET = "wU2G-xa08SHY_T7N.5BcFv~M94q61D3n"           # 客户端密钥
SCOPE = "openid"                                              # 授权范围

2. 业务接口配置

GEN6_TEST_VIN = "LE4FG1DB1SL002567"  # GEN6 测试 VIN 码
GEN5_TEST_VIN = "LE4AG4CB7SLYTKXLG"  # GEN5 测试 VIN 码
API_PATH = "/api/vehicles/{vin}/statistics"  # 业务接口路径
Baumuster = "174123"                        # 业务标识

3. 客户端证书配置

key_store_file_path = "mic_certificate_W1AFJ10000Z000085.pfx"  # PFX 证书文件路径
key_store_passphrase = "b04ca3c0-518d-40b0-a0d5-01c0c25350b9"  # 证书密码

🚀 使用方法

基本用法

启动 Locust Web 界面:

locust -f cbcs_statics.py

然后在浏览器中打开 http://localhost:8089,设置以下参数:

  • Number of users:并发用户数
  • Spawn rate:每秒启动的用户数
  • Host:目标服务器地址(例如:https://your-api-domain.com

无头模式Headless

直接在命令行运行压力测试:

locust -f cbcs_statics.py --headless -u 100 -r 10 -t 5m --host https://your-api-domain.com

参数说明:

  • -u 100100 个并发用户
  • -r 10:每秒启动 10 个用户
  • -t 5m:测试持续 5 分钟
  • --host:目标服务器地址

指定配置文件

如果需要从配置文件加载参数:

locust -f cbcs_statics.py --config locust.conf

📊 测试指标

Locust 会提供以下关键性能指标:

  • RPS (Requests Per Second):每秒请求数
  • Response Time:响应时间(平均、中位数、最小值、最大值)
  • Failure Rate:失败率
  • Peak RPS:峰值请求数

🏷️ 标签过滤

测试任务使用了 @tag('business_api') 标签,可以通过以下方式只运行特定标签的测试:

locust -f cbcs_statics.py --tags business_api

📁 项目结构

pressure_test/
├── cbcs_statics.py              # 主测试脚本
├── mic_certificate_*.pfx        # 客户端证书文件(需要自行提供)
└── README.md                    # 项目说明文档

⚠️ 注意事项

  1. 证书文件:确保 PFX 证书文件存在于项目目录中,并且路径配置正确
  2. SSL 验证:项目已禁用 SSL 验证(verify=False),适用于企业内网环境
  3. Token 复用:所有虚拟用户共享同一个 Access Token避免频繁请求认证接口
  4. 安全提醒:请勿将包含敏感信息(如 CLIENT_SECRET、证书密码的代码提交到公共仓库
  5. 网络环境:确保测试机器能够访问目标服务器和认证服务器

🔧 常见问题

Q: 如何切换测试的 VIN 码?

修改 WebsiteUser 类中的 vin 属性:

class WebsiteUser(HttpUser):
    vin = GEN5_TEST_VIN  # 或 GEN6_TEST_VIN

Q: 如何调整用户请求间隔?

修改 wait_time 配置:

wait_time = between(1, 3)  # 1-3 秒随机等待时间

Q: 获取 Token 失败怎么办?

检查以下配置:

  • AUTH_URL 是否正确
  • CLIENT_IDCLIENT_SECRET 是否有效
  • 网络连接是否正常
  • 查看控制台输出的错误信息

📝 许可证

本项目仅供内部测试使用。

👥 贡献

如有问题或建议,请联系项目维护者。

Description
No description provided
Readme 32 KiB
Languages
Python 100%