08ea5fbe98
添加用户管理视图、API和状态管理文件
6.7 KiB
6.7 KiB
性能测试文档
概述
性能测试用于评估系统在不同负载条件下的性能表现,包括页面加载速度、API响应时间、并发处理能力和资源使用情况。
测试框架
性能测试基于 Playwright 框架,提供以下功能:
- 页面加载性能测试
- API响应性能测试
- 并发和负载测试
- 内存使用监控
- 网络请求统计
核心文件
performance.spec.ts: 页面加载性能测试和性能指标收集工具api-performance.spec.ts: API响应性能测试concurrency-performance.spec.ts: 并发和负载测试
运行性能测试
前置条件
- 确保后端服务已启动
- 确保前端开发服务器已启动
- 确保数据库已初始化测试数据
- 确保系统资源充足(CPU、内存、网络)
运行所有性能测试
npx playwright test e2e/performance
运行特定性能测试套件
# 运行页面加载性能测试
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模式)
npx playwright test e2e/performance --ui
调试性能测试
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
性能报告
性能测试执行后会生成以下报告:
- 控制台输出: 实时显示性能指标
- HTML报告:
playwright-report/index.html - 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
====================
性能优化建议
页面加载优化
- 代码分割: 使用动态导入减少初始加载时间
- 资源压缩: 启用Gzip/Brotli压缩
- CDN加速: 使用CDN分发静态资源
- 缓存策略: 实现合理的缓存策略
- 图片优化: 使用WebP格式和懒加载
API响应优化
- 数据库优化: 添加索引、优化查询
- 缓存机制: 使用Redis缓存热点数据
- 异步处理: 使用消息队列处理耗时操作
- 连接池: 优化数据库连接池配置
- 分页查询: 避免返回大量数据
并发处理优化
- 负载均衡: 使用负载均衡器分发请求
- 限流措施: 实现API限流保护
- 连接复用: 使用HTTP/2和连接复用
- 资源隔离: 隔离不同服务的资源
- 自动扩容: 实现自动扩容机制
性能监控
持续监控
建议在生产环境中实施以下监控:
- APM工具: 使用New Relic、Datadog等APM工具
- 日志分析: 使用ELK Stack分析日志
- 指标收集: 使用Prometheus收集指标
- 告警机制: 设置性能告警阈值
- 定期报告: 生成定期性能报告
性能指标
建议监控以下关键指标:
- 响应时间: P50、P95、P99响应时间
- 吞吐量: 每秒请求数(RPS)
- 错误率: HTTP错误率
- 资源使用: CPU、内存、磁盘使用率
- 网络流量: 入站和出站流量
故障排查
常见性能问题
-
页面加载缓慢
- 检查网络带宽
- 检查服务器资源使用
- 检查资源加载顺序
- 使用浏览器开发者工具分析
-
API响应缓慢
- 检查数据库查询性能
- 检查缓存命中率
- 检查网络延迟
- 检查并发连接数
-
内存泄漏
- 检查内存使用趋势
- 检查对象引用
- 使用内存分析工具
- 优化数据结构
-
并发性能差
- 检查线程池配置
- 检查锁竞争
- 检查资源争用
- 优化并发算法
性能测试最佳实践
- 测试环境: 使用与生产环境相似的测试环境
- 测试数据: 使用真实大小的测试数据
- 多次运行: 每个测试运行多次取平均值
- 基线对比: 与历史基线对比性能变化
- 持续监控: 建立持续性能监控机制
联系方式
如有问题,请联系测试团队或查看项目文档。