添加文件
This commit is contained in:
161
README.md
Normal file
161
README.md
Normal file
@@ -0,0 +1,161 @@
|
||||
# 压力测试工具 - Cbcs Statistics
|
||||
|
||||
## 📋 项目简介
|
||||
|
||||
这是一个基于 **Locust** 的压力测试工具,专门用于对车辆统计信息接口进行性能测试。该工具支持 OAuth2 认证和客户端证书认证,可以模拟多用户并发访问 `/api/vehicles/{vin}/statistics` 接口。
|
||||
|
||||
## ✨ 主要功能
|
||||
|
||||
- 🔐 **OAuth2 Client Credentials 认证**:自动获取 Access Token
|
||||
- 📜 **客户端证书认证**:支持 PFX 格式的客户端证书
|
||||
- 🚗 **多 VIN 码支持**:支持 GEN5 和 GEN6 两种车型测试
|
||||
- 📊 **压力测试报告**:提供详细的性能指标和测试报告
|
||||
- ⚙️ **灵活配置**:支持通过代码或命令行参数配置测试参数
|
||||
|
||||
## 🛠️ 技术栈
|
||||
|
||||
- **Python 3.x**
|
||||
- **Locust**:分布式压力测试框架
|
||||
- **cryptography**:处理 PFX 证书文件
|
||||
- **urllib3**:HTTP 请求库
|
||||
|
||||
## 📦 安装依赖
|
||||
|
||||
```bash
|
||||
pip install locust cryptography urllib3
|
||||
```
|
||||
|
||||
## ⚙️ 配置说明
|
||||
|
||||
在运行测试之前,请根据实际环境修改 `cbcs_statics.py` 中的配置项:
|
||||
|
||||
### 1. OAuth2 认证配置
|
||||
|
||||
```python
|
||||
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. 业务接口配置
|
||||
|
||||
```python
|
||||
GEN6_TEST_VIN = "LE4FG1DB1SL002567" # GEN6 测试 VIN 码
|
||||
GEN5_TEST_VIN = "LE4AG4CB7SLYTKXLG" # GEN5 测试 VIN 码
|
||||
API_PATH = "/api/vehicles/{vin}/statistics" # 业务接口路径
|
||||
Baumuster = "174123" # 业务标识
|
||||
```
|
||||
|
||||
### 3. 客户端证书配置
|
||||
|
||||
```python
|
||||
key_store_file_path = "mic_certificate_W1AFJ10000Z000085.pfx" # PFX 证书文件路径
|
||||
key_store_passphrase = "b04ca3c0-518d-40b0-a0d5-01c0c25350b9" # 证书密码
|
||||
```
|
||||
|
||||
## 🚀 使用方法
|
||||
|
||||
### 基本用法
|
||||
|
||||
启动 Locust Web 界面:
|
||||
|
||||
```bash
|
||||
locust -f cbcs_statics.py
|
||||
```
|
||||
|
||||
然后在浏览器中打开 `http://localhost:8089`,设置以下参数:
|
||||
- **Number of users**:并发用户数
|
||||
- **Spawn rate**:每秒启动的用户数
|
||||
- **Host**:目标服务器地址(例如:`https://your-api-domain.com`)
|
||||
|
||||
### 无头模式(Headless)
|
||||
|
||||
直接在命令行运行压力测试:
|
||||
|
||||
```bash
|
||||
locust -f cbcs_statics.py --headless -u 100 -r 10 -t 5m --host https://your-api-domain.com
|
||||
```
|
||||
|
||||
参数说明:
|
||||
- `-u 100`:100 个并发用户
|
||||
- `-r 10`:每秒启动 10 个用户
|
||||
- `-t 5m`:测试持续 5 分钟
|
||||
- `--host`:目标服务器地址
|
||||
|
||||
### 指定配置文件
|
||||
|
||||
如果需要从配置文件加载参数:
|
||||
|
||||
```bash
|
||||
locust -f cbcs_statics.py --config locust.conf
|
||||
```
|
||||
|
||||
## 📊 测试指标
|
||||
|
||||
Locust 会提供以下关键性能指标:
|
||||
|
||||
- **RPS (Requests Per Second)**:每秒请求数
|
||||
- **Response Time**:响应时间(平均、中位数、最小值、最大值)
|
||||
- **Failure Rate**:失败率
|
||||
- **Peak RPS**:峰值请求数
|
||||
|
||||
## 🏷️ 标签过滤
|
||||
|
||||
测试任务使用了 `@tag('business_api')` 标签,可以通过以下方式只运行特定标签的测试:
|
||||
|
||||
```bash
|
||||
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` 属性:
|
||||
|
||||
```python
|
||||
class WebsiteUser(HttpUser):
|
||||
vin = GEN5_TEST_VIN # 或 GEN6_TEST_VIN
|
||||
```
|
||||
|
||||
### Q: 如何调整用户请求间隔?
|
||||
|
||||
修改 `wait_time` 配置:
|
||||
|
||||
```python
|
||||
wait_time = between(1, 3) # 1-3 秒随机等待时间
|
||||
```
|
||||
|
||||
### Q: 获取 Token 失败怎么办?
|
||||
|
||||
检查以下配置:
|
||||
- `AUTH_URL` 是否正确
|
||||
- `CLIENT_ID` 和 `CLIENT_SECRET` 是否有效
|
||||
- 网络连接是否正常
|
||||
- 查看控制台输出的错误信息
|
||||
|
||||
## 📝 许可证
|
||||
|
||||
本项目仅供内部测试使用。
|
||||
|
||||
## 👥 贡献
|
||||
|
||||
如有问题或建议,请联系项目维护者。
|
||||
Reference in New Issue
Block a user