一、客户端专项测试
1、用户维度
崩溃(crash,弱网)
卡顿(掉帧,gc, cpu)
响应慢(启动时间,交互响应,H5加载)
发热(CPU,mem,io,network, gps等硬件使用)
耗电快(硬件占用)
兼容性问题(机型覆盖,回归)
2、技术维度
崩溃
- 自动遍历、monkey测试,横竖屏切换,快速进退
卡顿(掉帧,gc, cpu)
- 卡顿测试,内存泄漏测试,method profile
响应慢(启动时间,交互响应,h5加载)
- 冷热启动、界面切换、h5性能
发热(CPU、mem、io、network、gps等硬件使用)
- method profile,gc统计,io统计,流量统计,硬件使用统计,耗电量分析
兼容性问题(机型覆盖,回归)
- 兼容性测试,自动化测试,自动遍历测试,monkey测试
二、APP启动性能分析
1、Activity启动流程:
启动app—创建一个空白窗口–启动进程
①Application OnCreate
- 加载第三方sdk
②Activity OnCreate
- 加载自身的逻辑
- 发送远端数据请求 xxx.json
- 渲染界面 List
2、App启动性能指标
冷启动:App进程创建(≥5s)
暖启动:App进程存在,但Activity结束(≥2s)
热启动:Activity已创建,从后台到前台(≥1.5s)
首屏启动:第一屏加载完整
整个启动过程可以用以下工具进行分析:
① adb logcat
② 录屏+ 视频拆帧
③ uiautomator等自动化工具200ms巡检界面变化
④ tranceview
⑤ 硬埋点(需研发提前做好埋点)
(1)使用adb logcat
package= com.xueqiu.android
# 清理缓存数据
adb shell pm clear $package
# 停止进程
adb shell am force-stop $ package
# 启动app
adb shell am start -S -W $package/.view.WelcomeActivityAlias
# 获取数据
adb logcat |grep -i displayed
adb logcat结果
startTime :记录刚准备调用startActivityAmdWait()的时间点;
endTime:记录startActivityAndWait()函数调用返回的时间点;
WaitTime: startActivityAndWait()调用耗时;
WaitTime = endTime - startTime
(2)使用ffmpeg拆针
package= com.xueqiu.android
# 清理缓存数据
adb shell pm clear $package
# 强制关闭app
adb shell am force-stop $package
# 录屏并保存到指定路径
adb shell screenrecord --bugreport --time-limit 30 /data/local/tmp/xueqiu.mp4 &
# 启动app(或手动启动app)
adb shell am start -S -W $package/.view.WelcomeActivityAlias
# 下载录屏到本地
adb pull / data/local/tmp.xueqiu.mp4 .
# 使用ffmpeg拆帧
ffmpeg -i xueqiu.mp4 -r 10 frames_%03d.jpg
-S表示启动之前先停止应用进程
-W是表示等待对应的activity启动完成