App 专项测试之启动时间

一、简介

    启动时间同样也遵循2-5-8原则,所谓2-5-8原则就是当用户能够在2秒以内启动应用进入第一帧,会感觉系统的响应很快;当用户在2-5秒之间得到响应时,会感觉系统的响应速度还可以;当用户在5-8秒以内得到响应时,会感觉系统的响应速度很慢,但是还可以接受;而当用户在超过8秒后仍然无法得到响应时,会感觉系统糟透了,或者认为系统已经失去响应,而选择退出这个app或者卸载该app。因此启动时间对用户的使用行为起到至关重要的作用。

二、测试点

  • 冷启动:程序首次启动(进程首次创建并占用资源的过程)
  • 热启动:应用程序在后台(back返回或home键退到后台)未被完全杀掉时再次启动应用的过程
  • 应用界面切换(Activity)

三、测试方法

3.1 通过硬件进行测试

3.2 高速相机

采用录像的方法录制应用启动过程,然后通过人工数帧或者程序数帧的方式计算启动时间。

3.3 通过软件测试

1. DDMS 工具查看 logcat

通过 logcat 中 ActivityManager 的相关数据获取,使用 DDMS 直接查看             

 

 这个信息在 Activity 窗口完成所有的启动之后,首次绘制的时候输出,也就是如果 activity 栈里有这个 Activity,再启动(如从多任务管理列表切回)则不会输出该信息。

 log中的时间包括系统从开始处理启动Activity的时间到完成运行layout和draw函数的时间,不包括点击icon到系统接收到消息的时间。测试关注的其实是用户体验的启动时间,上面log不能满足我们的需求。

2. logcat 指令

启动应用后通过抓取 log 查看

  •  抓取log后查看 : adb logcat -d -s ActivityManager|findstr "Displayed">D:\log.txt 
  •  在线查看:  adb logcat -b events -s am_activity_launch_time  

3. 通过 am 启动 Activity 查看启动时间

 adb shell am start -W –n <packageName>/<activityName>     单位为 ms  

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

4. 使用 screenrecord 命令

(1) adb shell screenrecord --bugreport /sdcard/launch.mp4 

(2)启动app后,等待页面显示完成,结束录屏,拷贝到电脑使用能够逐帧查看的视频播放器播放(mac上quicktime就可以,win下可以用kmplayer),并按帧播放

5. 通过 ActivityManager 轮询实现获取启动时间        

四、常用命令

3.1 停止app

1.  adb shell am force-stop package  (杀掉应用进程)

2.  adb shell input keyevent 3       back返回退出应用

3.2 获取应用包名和activity名

1. 有源码:打开源码在 AndroidManifest.xml 查看包名

2. 有安装包: aapt dump badging xx.apk 

3. 已安装在手机:

(1)使用  adb logcat | findstr START  命令启动应用查看

(2) adb shell pm list package  列出所有应用

(3)启动apk,使用  adb shell logcat | findstr ActivityManager  查看

posted @ 2020-09-27 15:20  芒果日记  阅读(632)  评论(0)    收藏  举报