app启动性能分析

一、客户端专项测试

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启动完成

你可能感兴趣的:(android,adb)