App端native原生性能分析
app 端 native 原生性能分析
专项测试
用户维度
- 崩溃(Crash,弱网)
- 卡顿(掉帧、gc、cpu)
- 响应慢(启动时间、交互响应、H5加载)
- 发热(cpu、mem、io、network、gps等硬件使用)
- 掉电快(硬件占用)
- 兼容性问题(机型覆盖、回归)
技术维度
- 崩溃:自动遍历、monkey测试、横竖屏切换、快速进退
- 卡顿(掉帧、gc、cpu):卡顿测试、内存泄露测试、method profile
- 响应慢(启动时间、交互响应、H5加载):冷热启动、界面切换、h5性能测试
- 发热(cpu、mem、io、network、gps等硬件使用)
- method profile、gc统计、io统计、流量统计、硬件使用统计、耗电量分析
- 兼容性问题(机型覆盖、回归)
- 兼容性测试、自动化测试、自动遍历、monkey测试
常用测试方案
Android
- ddms
- android studio最新版集成工具
- hook
- 代码插桩
iOS
- instruments
- hook
- 代码插桩
App性能
activity启动流程(以Android为例)
主要流程
- Application OnCreate
- 加载第三方的sdk
- Activity OnCreate
- 加载自身的逻辑
- 发送远程数据请求 XXX.json
- 渲染界面List
响应时间
- app启动:首次安装启动、冷启动、暖启动、热启动
- app交互:事件响应、内部加载速度、首屏渲染
- 接口性能:的女生、http/https、download、json
- h5性能:cache、资源加载、dom、page
app启动性能度量指标
- 首次安装启动:首次安装会耗费较多的时间初始化,比如补丁下载、缓存数据
- 冷启动:进程不存在
- 暖启动:进程存在,界面不存在
- 热启动:界面对象仍然存在,只是从后台前置到前台
- 首屏启动:第一屏加载完整
UI性能检测常用办法
- adb logcat
- 录屏+视频拆帧
- uiautomator等自动化工具200ms巡检界面变化
- traceview
- 硬埋点
logcat中的性能数据(非重点)
- package=com.xueqiu.android
- 清理缓存数据:adb shell am force-stop $package
- 停止进程:adb shell am force-stop $package
- 启动app:adb shell am start -S -W $package/.view.WelcomeActivityAlias
- 获取数据:adb logcat | grep -i displayed
录屏拆帧
- adb shell screenrecord --bugreport --time-limit 30 /data/local/tmp xueqiu.mp4
- adb pull /data/local/tmp/xueqiu.mp4 .
- ffmpeg -i xueqiu.mp4 xueqiu.gif
- ffmpeg -i xueqiu.mp4 -r 10 frames_%03d.jpg
总结
- 专项测试
- 常用测试方案
- App性能