移动 App 性能测试指南
一、性能测试概述
核心目标
理解性能测试思路
- 负载测试:正常负荷下的性能指标
- 压力测试:超负荷下的性能指标
- 容量测试:系统极限能力(如最大并发用户数)
掌握主流测试工具
Emmagee | SoloPi | Monkey
Web Vs 移动端性能指标对比
| 类型 | Web 系统指标 | 移动 App 特有指标 |
|---|---|---|
| 通用指标 | 响应时间、并发数、吞吐量 | 启动时间、界面切换时间 |
| 资源占用 | CPU、内存 | GPU 占用、存储占用 |
| 终端特性 | - | 流量消耗、电量消耗 |
二、移动端核心性能指标详解
1. 时间指标
启动时间类型
1 | graph LR |
性能关系:首次启动 > 冷启动 > 热启动
测试方法
- Logcat 日志分析法:
1 | adb logcat -v time > d:\temp\logcat.txt |
grep "Displayed" logcat.txt 提取关键记录
1 |
|
考研帮 app 启动对应 2 个 activity:SplashActivity 和 LoginActivity。
考研帮 app 首次启动时间=1s227ms+802ms=2s29 ms
- 工具推荐:
使用catalog工具简化日志分析流程
2. 存储占用
存储结构
| 类型 | 路径 | 检测方法 | 典型值 | |
|---|---|---|---|---|
| APK 大小 | /data/app/<包名> |
ls -l base.apk |
48MB | |
| 安装目录大小 | /data/data/<包名> |
du -sh |
56MB | |
| 缓存数据 | /sdcard/Android/data |
手动清理检测 | 可变 |
3. CPU/GPU 占用
Cpu:中央处理器单元
Gpu:图像处理器单元,包含在显卡上
检测命令
1 | adb shell top -n 100 | grep <包名> # 实时CPU监控 |
GPU 关键问题
GPU 过度绘制
App 的界面不是一次性绘制出来的,有的区域经过了多次绘制,但用户只能看到最后一次的绘制,前面的绘制就产生了浪费,直观的表象就是掉电快。- 现象:界面多次重复渲染 → 功耗增加
- 检测:
开发者选项 → 开启 “ 调试 GPU 过度绘制 “- 颜色标识:
无→白/1次→蓝/2次→绿/3次→粉/≥4次→红
- 颜色标识:
- 优化目标:减少红色区域
流畅度 (FPS)
操作 app 时,app 会不会出现卡顿情况。流畅度一般通过 FPS 来衡量
FPS:每秒帧数- 合格标准:≥60 FPS
- 测试工具:SoloPi 帧率监测
4. 流量/电量消耗
测试场景
| 场景 | 检测重点 |
|---|---|
| 安装过程 | 安装包下载流量 |
| 前台运行 | 核心业务流程消耗 |
| 后台运行 | 心跳包/推送通知的持续消耗 |
| 待机状态 | 异常唤醒(wakelock) |
三、主流测试工具指南
1. Emmagee(网易开源)
官网地址:https://github.com/NetEase/Emmagee
下载地址:Emmagee.Apk
适用场景:实时性能数据监控
限制:Android 7.0+ 需兼容模式
操作流程:
- 安装APK 并启动
- 选择被测App → 点击 开始测试
- 操作App → 停止测试
- 导出CSV 报告:
adb pull /sdcard/Emmagee/<报告>.csv
报告分析:关注内存峰值、CPU 波动、FPS 稳定性
2. SoloPi(蚂蚁集团开源)
官网地址:https://github.com/alipay/SoloPi
下载地址:SoloPi.Apk
核心功能:
- 性能测试
- 录制回放(自动化)
- 一机多控(批量设备同步操作)
性能测试流程:
- 进入 性能测试 模块
- 选择被测 App 和监控指标(CPU/内存/帧率等)
- 启动 悬浮窗 实时监控
- 录制操作 → 生成报告
- 查看 数据可视化图表(支持历史对比)
3. Monkey(Android 原生)
核心用途:稳定性测试 & 压力测试
基础命令:
1 | adb shell monkey -p <包名> \ |
事件类型权重
| 事件类型 | 参数 | 默认权重 |
|---|---|---|
| 触摸事件 | --pct-touch |
15% |
| 手势滑动 | --pct-motion |
10% |
| 启动 Activity | --pct-appswitch |
2% |
| 系统按键 | --pct-syskeys |
2% |
| 查看全部 | ||
日志分析重点:CRASH / ANR / Exception / error 关键错误
四、性能测试策略
1. 需求分析
- 有明确需求:如 “ 内存峰值 ≤ 100MB” → 验证达标性
- 无明确需求:记录基准值 → 协同开发评估优化点
2. 结果解读原则
| 指标类型 | 分析方法 |
|---|---|
| 时间相关 | 对比历史版本/竞品 |
| 资源占用 | 观察峰值而非平均值 |
| 流量/电量 | 关联业务场景评估合理性 |
3. 测试报告要素
- 测试环境(设备型号/OS 版本/网络)
- 监控指标与工具
- 性能基线数据
- 瓶颈分析与优化建议
本博客所有文章除特别声明外,均采用 CC-BY-SA-3.0 许可协议。转载请注明来源 张小剩的博客!