Files
everything-is-suitable/everything-is-suitable-admin/e2e/performance/README.md
T
张翔 08ea5fbe98 feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
2026-03-28 14:37:29 +08:00

260 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 性能测试文档
## 概述
性能测试用于评估系统在不同负载条件下的性能表现,包括页面加载速度、API响应时间、并发处理能力和资源使用情况。
## 测试框架
性能测试基于 Playwright 框架,提供以下功能:
- 页面加载性能测试
- API响应性能测试
- 并发和负载测试
- 内存使用监控
- 网络请求统计
### 核心文件
- `performance.spec.ts`: 页面加载性能测试和性能指标收集工具
- `api-performance.spec.ts`: API响应性能测试
- `concurrency-performance.spec.ts`: 并发和负载测试
## 运行性能测试
### 前置条件
1. 确保后端服务已启动
2. 确保前端开发服务器已启动
3. 确保数据库已初始化测试数据
4. 确保系统资源充足(CPU、内存、网络)
### 运行所有性能测试
```bash
npx playwright test e2e/performance
```
### 运行特定性能测试套件
```bash
# 运行页面加载性能测试
npx playwright test e2e/performance/performance.spec.ts
# 运行API响应性能测试
npx playwright test e2e/performance/api-performance.spec.ts
# 运行并发和负载测试
npx playwright test e2e/performance/concurrency-performance.spec.ts
```
### 运行性能测试(UI模式)
```bash
npx playwright test e2e/performance --ui
```
### 调试性能测试
```bash
npx playwright test e2e/performance --debug
```
## 性能指标
### 性能指标类
`PerformanceMetrics` 类提供以下统计方法:
- `getAverage(name)`: 获取平均值
- `getP95(name)`: 获取95百分位值
- `getP99(name)`: 获取99百分位值
- `getMax(name)`: 获取最大值
- `getMin(name)`: 获取最小值
### 性能测试辅助类
`PerformanceTestHelper` 类提供以下辅助方法:
- `measurePageLoad(page, url)`: 测量页面加载时间
- `measureApiCall(page, apiCall)`: 测量API调用时间
- `measureElementInteraction(page, selector, action)`: 测量元素交互时间
- `measurePageNavigation(page, fromUrl, toUrl)`: 测量页面导航时间
- `measureMemoryUsage(page)`: 测量内存使用情况
- `measureNetworkRequests(page)`: 测量网络请求数量
## 性能测试用例
### PT-001: 页面加载性能
| 用例ID | 用例名称 | 性能目标 |
|---------|---------|---------|
| PT-001 | 登录页面加载性能 | < 3000ms |
| PT-002 | 仪表盘页面加载性能 | < 2000ms |
| PT-003 | 用户管理页面加载性能 | < 2000ms |
| PT-004 | 黄历页面加载性能 | < 2000ms |
| PT-005 | 运势页面加载性能 | < 2000ms |
### PT-006: API响应性能
| 用例ID | 用例名称 | 性能目标 |
|---------|---------|---------|
| PT-006 | 用户登录API性能 | < 2000ms |
| PT-007 | 获取用户列表API性能 | < 1500ms |
| PT-008 | 创建用户API性能 | < 2000ms |
| PT-009 | 黄历查询API性能 | < 1500ms |
| PT-010 | 运势查询API性能 | < 2000ms |
| PT-011 | 紫微斗数生成API性能 | < 3000ms |
### PT-012: 并发和负载测试
| 用例ID | 用例名称 | 性能目标 |
|---------|---------|---------|
| PT-012 | 并发登录测试 | 平均响应时间 < 5000ms |
| PT-013 | 并发黄历查询测试 | 平均响应时间 < 3000ms |
| PT-014 | 页面切换性能测试 | 页面切换 < 1000ms |
| PT-015 | 表单提交性能测试 | 表单提交 < 1000ms |
| PT-016 | 内存使用监控 | 内存增长 < 50MB |
| PT-017 | 网络请求统计 | 平均请求次数 < 20 |
## 性能基准
### 页面加载性能基准
- **优秀**: < 1000ms
- **良好**: 1000ms - 2000ms
- **可接受**: 2000ms - 3000ms
- **需要优化**: > 3000ms
### API响应性能基准
- **优秀**: < 500ms
- **良好**: 500ms - 1000ms
- **可接受**: 1000ms - 2000ms
- **需要优化**: > 2000ms
### 并发性能基准
- **优秀**: 平均响应时间 < 1000ms
- **良好**: 平均响应时间 1000ms - 3000ms
- **可接受**: 平均响应时间 3000ms - 5000ms
- **需要优化**: 平均响应时间 > 5000ms
## 性能报告
性能测试执行后会生成以下报告:
1. **控制台输出**: 实时显示性能指标
2. **HTML报告**: `playwright-report/index.html`
3. **JSON报告**: `test-results/results.json`
### 性能报告示例
```
=== 性能测试报告 ===
登录页面加载时间:
平均值: 1250.50ms
P95: 1450.00ms
P99: 1520.00ms
最大值: 1600.00ms
最小值: 1100.00ms
样本数: 10
仪表盘页面加载时间:
平均值: 890.30ms
P95: 980.00ms
P99: 1020.00ms
最大值: 1100.00ms
最小值: 750.00ms
样本数: 10
====================
```
## 性能优化建议
### 页面加载优化
1. **代码分割**: 使用动态导入减少初始加载时间
2. **资源压缩**: 启用Gzip/Brotli压缩
3. **CDN加速**: 使用CDN分发静态资源
4. **缓存策略**: 实现合理的缓存策略
5. **图片优化**: 使用WebP格式和懒加载
### API响应优化
1. **数据库优化**: 添加索引、优化查询
2. **缓存机制**: 使用Redis缓存热点数据
3. **异步处理**: 使用消息队列处理耗时操作
4. **连接池**: 优化数据库连接池配置
5. **分页查询**: 避免返回大量数据
### 并发处理优化
1. **负载均衡**: 使用负载均衡器分发请求
2. **限流措施**: 实现API限流保护
3. **连接复用**: 使用HTTP/2和连接复用
4. **资源隔离**: 隔离不同服务的资源
5. **自动扩容**: 实现自动扩容机制
## 性能监控
### 持续监控
建议在生产环境中实施以下监控:
1. **APM工具**: 使用New Relic、Datadog等APM工具
2. **日志分析**: 使用ELK Stack分析日志
3. **指标收集**: 使用Prometheus收集指标
4. **告警机制**: 设置性能告警阈值
5. **定期报告**: 生成定期性能报告
### 性能指标
建议监控以下关键指标:
1. **响应时间**: P50、P95、P99响应时间
2. **吞吐量**: 每秒请求数(RPS
3. **错误率**: HTTP错误率
4. **资源使用**: CPU、内存、磁盘使用率
5. **网络流量**: 入站和出站流量
## 故障排查
### 常见性能问题
1. **页面加载缓慢**
- 检查网络带宽
- 检查服务器资源使用
- 检查资源加载顺序
- 使用浏览器开发者工具分析
2. **API响应缓慢**
- 检查数据库查询性能
- 检查缓存命中率
- 检查网络延迟
- 检查并发连接数
3. **内存泄漏**
- 检查内存使用趋势
- 检查对象引用
- 使用内存分析工具
- 优化数据结构
4. **并发性能差**
- 检查线程池配置
- 检查锁竞争
- 检查资源争用
- 优化并发算法
## 性能测试最佳实践
1. **测试环境**: 使用与生产环境相似的测试环境
2. **测试数据**: 使用真实大小的测试数据
3. **多次运行**: 每个测试运行多次取平均值
4. **基线对比**: 与历史基线对比性能变化
5. **持续监控**: 建立持续性能监控机制
## 联系方式
如有问题,请联系测试团队或查看项目文档。