Skip to content

性能测试规范

定义性能测试策略、指标和自动化方案


性能测试类型

类型目的执行时机
基准测试建立性能基线版本发布前
回归测试检测性能退化每次 PR
负载测试验证并发能力重大变更后
压力测试找到性能瓶颈定期执行

关键性能指标

加载性能

指标目标值测量工具
FCP (首次内容绘制)< 1.5sLighthouse
LCP (最大内容绘制)< 2.5sLighthouse
TTI (可交互时间)< 3.5sLighthouse
TBT (总阻塞时间)< 300msLighthouse
CLS (累积布局偏移)< 0.1Lighthouse

运行时性能

指标目标值测量方式
页面切换< 300ms自定义计时
列表滚动 FPS60fpsPerformance Observer
内存峰值< 200MBPerformance.memory
长任务< 50msLong Tasks API

关键操作性能

操作目标时间说明
钱包列表渲染< 100ms10 个钱包
余额刷新< 2s网络请求
交易签名< 200ms本地计算
二维码识别< 100ms扫码延迟

自动化性能测试

Lighthouse CI 配置

LighthouseCI {
  collect: {
    url: ['/', '/wallet', '/send', '/settings']
    numberOfRuns: 3
  }
  
  assert: {
    assertions: {
      'first-contentful-paint': ['error', {maxNumericValue: 1500}]
      'largest-contentful-paint': ['error', {maxNumericValue: 2500}]
      'interactive': ['error', {maxNumericValue: 3500}]
      'cumulative-layout-shift': ['error', {maxNumericValue: 0.1}]
    }
  }
}

运行时性能测试

性能测试用例结构:
describe('Performance', () => {
  benchmark('wallet list render', () => {
    // 渲染 10 个钱包卡片
    // 断言: 渲染时间 < 100ms
  })
  
  benchmark('transaction list scroll', () => {
    // 滚动 100 条交易
    // 断言: 帧率 > 55fps
  })
})

性能回归检测

CI 集成

PR 提交


构建应用


运行 Lighthouse


对比基线数据

    ├── 性能提升 ──► 通过 + 标记改进

    ├── 无显著变化 ──► 通过

    └── 性能下降

         ├── < 10% ──► 警告

         └── > 10% ──► 阻止合并

基线管理

环境更新频率存储位置
开发环境每次发布CI artifacts
生产环境每周监控系统

性能测试场景

场景 1: 冷启动

测试步骤:

  1. 清除所有缓存
  2. 打开应用
  3. 测量至首屏可见

验证点:

  • FCP < 1.5s
  • TTI < 3.5s
  • 无布局抖动

场景 2: 热启动

测试步骤:

  1. 应用已缓存
  2. 打开应用
  3. 测量至首屏可见

验证点:

  • FCP < 0.5s
  • TTI < 1s

场景 3: 大数据量

测试步骤:

  1. 创建 10 个钱包
  2. 每个钱包 5 条链
  3. 渲染钱包列表

验证点:

  • 列表渲染 < 200ms
  • 滚动流畅 (60fps)
  • 内存 < 150MB

场景 4: 弱网环境

测试步骤:

  1. 模拟 3G 网络 (750kb/s, 400ms RTT)
  2. 刷新余额
  3. 测量完成时间

验证点:

  • 显示加载状态
  • 超时处理正确
  • 不阻塞用户操作

场景 5: 频繁操作

测试步骤:

  1. 快速切换 10 个钱包
  2. 测量响应时间和内存

验证点:

  • 切换响应 < 100ms
  • 无内存泄漏
  • 无页面卡顿

包体积监控

Bundle 分析

检查项阈值动作
总 JS (gzip)> 400KB阻止
单 chunk> 50KB警告
新增依赖> 20KB审查

依赖审计

  • MUST 每次 PR 检查新增依赖大小
  • SHOULD 大依赖必须说明理由
  • SHOULD 寻找更小的替代方案

性能测试环境

设备矩阵

设备类型配置用途
低端 AndroidMoto G4, 慢 4G最低性能基准
中端 AndroidPixel 3a主要目标用户
iPhone SEiOS 14iOS 低端
iPhone 13iOS 16iOS 标准

网络条件

类型下载上传RTT
4G9Mbps1.5Mbps170ms
3G750Kbps250Kbps400ms
慢 3G400Kbps400Kbps2000ms
离线00

性能优化建议

检测到问题时

问题可能原因优化方向
FCP 过慢首屏 JS 过大代码分割
LCP 过慢图片/字体加载预加载/压缩
TTI 过慢主线程阻塞Web Worker
CLS 过高动态内容预留空间
滚动卡顿重渲染虚拟列表
内存泄漏订阅未清理清理 effect

本章小结

  • 定义明确的性能指标和目标值
  • 自动化性能测试集成到 CI
  • 性能回归检测阻止退化合并
  • 多设备、多网络条件测试覆盖
  • 问题检测后有明确优化方向

Released under the MIT License.