Android App启动时间测试方法总结

作者: 测试漫淡 | 来源:发表于2019-06-07 17:39 被阅读0次

    查看当前界面Activity的方法:

    1)运行命令:adb shell dumpsys window | findstr "mCurrentFocus"

     mCurrentFocus=Window{227cb04 u0 com.oppo.music/com.oppo.music.MainListActivity}

    从结果中可知:

    当前应用包名:com.oppo.music

    当前界面Activity:com.oppo.music.MainListActivity

    2)查看应用的PID

    adb shell ps | findstr “com.oppo.music”,找到PID对应的列

    1、“高速摄像机或Iphone慢动作”查看应用的启动时间

    1)使用高速相机或Iphone的慢动作(240ps)录制应用的启动视频

    2)使用QucikTime的帧分析功能,确定好起始帧(手指按下抬起时)和结束帧(应用完全显示)

    3)根据帧数计算启动时间:=1000*帧数量/240

    备注:最接近真实用户使用场景,但是操作复杂,成本高

    2、“ActivityManager”查看应用的启动时间

    备注:系统main log中也会有对应的显示(或adb shell logcat -b main | findstr ActivityManager)更佳

    1)运行结果:

    04-19 15:13:25.919 1181 1216 I ActivityManager: Displayed com.oppo.music/.MainListActivity: +677ms

    04-19 15:13:33.556 1181 1216 I ActivityManager: Displayed com.oppo.music/.MainListActivity: +660ms

    677ms和660ms就是music应用的启动时间

    3、“WaitTime”查看应用的启动时间

    测试方法:adb shell am start -W –S packagename/MainActivity命令

    1)结果时间说明

    ThisTime:一连串启动Activity的最后一个Activity开始算起始时间

    TotalTime:一连串启动Activity的第一个Activity开始算起始时间

    WaitTime:总的耗时,但是包括前一个应用 Activity pause 的时间和新应用启动的时间

    说明:例如有的应用启动Activity的时候,会先显示一个白色的Activity,然后在显示正常Activity,这个时候TotalTime就是从第一个Activity启动作为起始时间,如果只有一个Activity则ThisTime和TotalTime相等

    总结:

    如果只关心某个应用自身启动耗时,参考TotalTime;如果关心系统启动应用耗时,参考WaitTime;如果关心应用有界面Activity启动耗时,参考ThisTime

    4、“am_activity_launch_time”查看应用启动时间

    测试方法:

    1)开启系统的moblie log,例如mtk的moblie log,然后启动应用(或者adb shell logcat -b events | findstr am_activity_launch_time)

    2)从moblie log中找到类似如下的event log:events_log_3__2019_0418_152200

    3)搜索关键词:“am_activity_launch_time”,然后匹配对应的包名,如下:

    04-18 15:21:28.365484 1181 1216 I am_activity_launch_time: [0,73476478,com.oppo.music/.MainListActivity,668,668]

    04-18 15:21:37.295923 1181 1216 I am_activity_launch_time: [0,231925826,com.oppo.music/.MainListActivity,680,680]

    4)应用的启动时间为668ms、680ms

    5、Systrace查看应用的启动时间

    1)抓取应用启动的trace文件

    a、开发给的python脚本抓取,需要安装对应的python

    b、打开android自带的monitor工具抓取,需要安装java环境和android sdk包

    2)chrome浏览器输入chrome://tracing/,然后load对应的trace文件

    3)搜索iq,如果能搜到说明正确抓取了trace文件,否则没有抓到启动时间点

    4)找到应用对应的PID或包名的那一行

    5)找到UI Thread那一行,然后可以使用【W】放大,【S】缩小,【A】左移,【S】右移,注意界面上的操作导航,需要选取对应的项才能使用快捷键

    放大并移动找到activityStart那一列,选中该项并点击键盘【m】键可以查看阶段时间如下:

    6)在activityStart下一行对应的handleLaunchActivity找到第一个draw,按下【ctrl】然后选中activityStart在选中draw,在按下【m】键,如下图:

    7)从步骤5中可以看到,music的启动时间为458.656ms

    备注:界面快捷键操作

    6、adb脚本录屏方法(不一定有用,有的机器无该命令或–bugreport选项,且需要android API21+)

    测试方法:

    1)adb shell screenrecord –bugreport /sdcard/test.mp4

    2)使用QuickTime分析视频即可,同方法1

    备注:查看是否支持-bugreport选项

    使用 adb shell screencap –help查看是否支持—bugreport选项

    7、各种方法测试数据比较

    相关文章

      网友评论

        本文标题:Android App启动时间测试方法总结

        本文链接:https://www.haomeiwen.com/subject/fquexctx.html