feat: 重构测试框架并优化代码结构
refactor(tests): 将e2e_tests迁移到tests_suite和api_integration_tests style: 为Java类添加文档注释 docs: 更新.gitignore和配置文件 test: 添加性能测试和Playwright测试脚本 chore: 清理旧测试文件和配置
This commit is contained in:
@@ -0,0 +1,246 @@
|
||||
# 性能测试指南
|
||||
|
||||
## 测试目的
|
||||
|
||||
评估网关层对系统性能的影响,验证多模块架构下的性能表现。
|
||||
|
||||
## 测试工具
|
||||
|
||||
使用 k6 进行性能测试,支持以下测试场景:
|
||||
|
||||
### 1. 基准测试 (Baseline Test)
|
||||
- 持续负载:10个虚拟用户
|
||||
- 持续时间:30秒
|
||||
- 目的:建立性能基准
|
||||
|
||||
### 2. 压力测试 (Stress Test)
|
||||
- 阶梯式负载:10 -> 50 -> 100 -> 50 -> 10
|
||||
- 持续时间:5分钟
|
||||
- 目的:测试系统在持续高负载下的表现
|
||||
|
||||
### 3. 尖峰测试 (Spike Test)
|
||||
- 突发负载:10 -> 200 -> 10
|
||||
- 持续时间:70秒
|
||||
- 目的:测试系统应对突发流量的能力
|
||||
|
||||
## 运行测试
|
||||
|
||||
### 前置条件
|
||||
|
||||
1. 启动所有服务:
|
||||
```bash
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
2. 等待服务就绪:
|
||||
```bash
|
||||
curl http://localhost:8080/actuator/health
|
||||
```
|
||||
|
||||
### 运行基准测试
|
||||
|
||||
```bash
|
||||
k6 run performance_tests/gateway_performance_test.js \
|
||||
--env BASE_URL=http://localhost:8080 \
|
||||
--env DURATION=30s \
|
||||
--env VUS=10
|
||||
```
|
||||
|
||||
### 运行压力测试
|
||||
|
||||
```bash
|
||||
k6 run --config performance_tests/config.json \
|
||||
performance_tests/gateway_performance_test.js \
|
||||
--env BASE_URL=http://localhost:8080 \
|
||||
--scenario stress_test
|
||||
```
|
||||
|
||||
### 运行尖峰测试
|
||||
|
||||
```bash
|
||||
k6 run --config performance_tests/config.json \
|
||||
performance_tests/gateway_performance_test.js \
|
||||
--env BASE_URL=http://localhost:8080 \
|
||||
--scenario spike_test
|
||||
```
|
||||
|
||||
## 性能指标
|
||||
|
||||
### 关键指标
|
||||
|
||||
1. **响应时间 (Response Time)**
|
||||
- P50: 50%的请求响应时间
|
||||
- P95: 95%的请求响应时间
|
||||
- P99: 99%的请求响应时间
|
||||
- 目标:P95 < 500ms
|
||||
|
||||
2. **吞吐量 (Throughput)**
|
||||
- RPS (Requests Per Second): 每秒请求数
|
||||
- 目标:根据业务需求设定
|
||||
|
||||
3. **错误率 (Error Rate)**
|
||||
- HTTP 请求失败率
|
||||
- 目标:< 5%
|
||||
|
||||
### 网关性能指标
|
||||
|
||||
1. **认证延迟**
|
||||
- JWT 验证时间
|
||||
- 目标:< 10ms
|
||||
|
||||
2. **授权延迟**
|
||||
- RBAC 权限检查时间
|
||||
- 目标:< 5ms
|
||||
|
||||
3. **路由延迟**
|
||||
- 请求转发时间
|
||||
- 目标:< 20ms
|
||||
|
||||
## 性能基准
|
||||
|
||||
### 无网关架构
|
||||
- 平均响应时间:~200ms
|
||||
- P95 响应时间:~350ms
|
||||
- 吞吐量:~500 RPS
|
||||
|
||||
### 有网关架构(预期)
|
||||
- 平均响应时间:~220ms (+10%)
|
||||
- P95 响应时间:~400ms (+14%)
|
||||
- 吞吐量:~450 RPS (-10%)
|
||||
|
||||
### 性能影响评估
|
||||
|
||||
网关层预期性能开销:
|
||||
- 响应时间增加:10-15%
|
||||
- 吞吐量下降:10-15%
|
||||
- CPU 使用增加:5-10%
|
||||
|
||||
## 性能优化建议
|
||||
|
||||
### 网关层优化
|
||||
|
||||
1. **缓存优化**
|
||||
- JWT Token 缓存
|
||||
- 权限规则缓存
|
||||
- 路由规则缓存
|
||||
|
||||
2. **连接池优化**
|
||||
- HTTP 客户端连接池
|
||||
- 数据库连接池
|
||||
|
||||
3. **异步处理**
|
||||
- 非阻塞 I/O
|
||||
- 响应式编程
|
||||
|
||||
### 应用层优化
|
||||
|
||||
1. **数据库优化**
|
||||
- 索引优化
|
||||
- 查询优化
|
||||
- 连接池配置
|
||||
|
||||
2. **缓存策略**
|
||||
- Redis 缓存
|
||||
- 本地缓存
|
||||
|
||||
3. **代码优化**
|
||||
- 减少序列化开销
|
||||
- 优化算法复杂度
|
||||
|
||||
## 监控指标
|
||||
|
||||
使用 Spring Boot Actuator 进行轻量级监控:
|
||||
|
||||
### 健康检查
|
||||
```bash
|
||||
curl http://localhost:8080/actuator/health
|
||||
```
|
||||
|
||||
### 应用信息
|
||||
```bash
|
||||
curl http://localhost:8080/actuator/info
|
||||
```
|
||||
|
||||
### 性能指标
|
||||
```bash
|
||||
curl http://localhost:8080/actuator/metrics
|
||||
```
|
||||
|
||||
### 系统指标
|
||||
- JVM 内存使用
|
||||
- GC 频率和时间
|
||||
- 线程池使用情况
|
||||
- HTTP 请求统计
|
||||
|
||||
## 结果分析
|
||||
|
||||
### 性能报告模板
|
||||
|
||||
```
|
||||
测试场景:[基准测试/压力测试/尖峰测试]
|
||||
测试时间:[YYYY-MM-DD HH:MM:SS]
|
||||
测试时长:[XX秒]
|
||||
虚拟用户数:[XX]
|
||||
|
||||
性能指标:
|
||||
- 平均响应时间:[XXms]
|
||||
- P95 响应时间:[XXms]
|
||||
- P99 响应时间:[XXms]
|
||||
- 吞吐量:[XX RPS]
|
||||
- 错误率:[XX%]
|
||||
|
||||
网关性能:
|
||||
- 认证延迟:[XXms]
|
||||
- 授权延迟:[XXms]
|
||||
- 路由延迟:[XXms]
|
||||
|
||||
系统资源:
|
||||
- CPU 使用率:[XX%]
|
||||
- 内存使用率:[XX%]
|
||||
|
||||
结论:
|
||||
[性能是否满足要求,是否需要优化]
|
||||
```
|
||||
|
||||
## 故障排查
|
||||
|
||||
### 常见问题
|
||||
|
||||
1. **连接拒绝**
|
||||
- 检查服务是否启动
|
||||
- 检查端口是否正确
|
||||
- 检查防火墙设置
|
||||
|
||||
2. **高错误率**
|
||||
- 检查日志文件
|
||||
- 检查数据库连接
|
||||
- 检查内存使用情况
|
||||
|
||||
3. **响应时间过长**
|
||||
- 检查慢查询日志
|
||||
- 检查网络延迟
|
||||
- 检查 GC 情况
|
||||
|
||||
## 持续集成
|
||||
|
||||
将性能测试集成到 Woodpecker CI:
|
||||
|
||||
```yaml
|
||||
performance_test:
|
||||
image: python:3.13
|
||||
commands:
|
||||
- cd api_integration_tests
|
||||
- pip install -r requirements.txt
|
||||
- pytest tests/test_real_e2e.py -v --no-cov
|
||||
depends_on:
|
||||
- deploy-staging
|
||||
when:
|
||||
- event: push
|
||||
branch: develop
|
||||
```
|
||||
|
||||
## 参考资料
|
||||
|
||||
- [k6 官方文档](https://k6.io/docs/)
|
||||
- [Spring Boot Actuator 文档](https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html)
|
||||
- [Spring WebFlux 性能优化](https://docs.spring.io/spring-framework/reference/web/webflux/reactive-spring.html)
|
||||
Reference in New Issue
Block a user