目录
一、启动时间
通过adb命令获取App冷启动、热启动时间(不包含页面加载时间)
adb shell am start -W packagename/绝对路径下的MainActivity
冷启动时间:如果应用启动过,则从最近任务杀进程,再使用上面的命令启动
热启动时间:App退出到后台,但不杀进程
我们只需要关注结果中的TotalTime即可
优点:测试方法简单容易,并且可以准确的计算出系统启动这个Activity的时间
缺点:不包括点击icon到系统接收到消息的时间,不能完整的模拟用户操作场景的启动时间
二、 内存占用
通过adb命令获取应用内存占用情况
adb shell dumpsys meminfo -s 应用包名
关注不同工作状态下的内存占用情况
- 空闲状态:切换至后台或者启动后不做任何操作
- 中强度状态:时间偏长的操作应用
- 高强度状态:高强度使用应用,可以跑monkey来测试(重点关注内存泄漏)
三、CPU占用率
通过adb指令获取CPU使用情况
adb shell dumpsys cpuinfo 应用包名
关注不同工作状态下的CPU占用情况
- 应用空闲状态运行监测CPU占用率:应用按Home键退到后台,不再占用系统的状态(通常 是灭屏半分钟后) CPU占用率=0%
- 应用中等规格运行监测CPU占用率:模拟用户最常见的使用场景,CPU占用率≤30%
- 应用满规格长时间正常运行监测CPU占用率:Monkey测试,CPU占用率≤30%
- 应用正常运行期间监测CPU占用率峰值:打开应用进行基本操作;CPU占用率≤50%
四、 页面加载流畅度(FPS)
通过adb命令获取流畅度信息,必须先在开发者选项中打开GPU渲染模式分析
打开GPU渲染模式分析:adb shell setprop debug.hwui.profile true
获取流畅度信息:adb shell dumpsys gfxinfo packageName
内容比较多,截图中是我们需要的信息(矩阵数据),计算矩阵中帧率大于16ms的点所占比例,即为卡顿比
- Draw:在Java中创建显示列表部分中,OnDraw()方法占用的时间
- Prepare:准备时间
- Process:渲染引擎执行显示列表所花的时间
- Execute:把一帧数据发送到屏幕上排版显示实际花费的时间,其实是实际显示帧数据的后台缓存区与前台缓冲区交换后并将前台缓冲区的内容显示到屏幕上的时间
- 将上面的四个时间加起来就是绘制一帧所需要的时间,如果超过了16ms就表示掉帧了
五、功耗
通过adb指令获取设备电量信息
adb shell dumpsys battery
- app运行但没有执行业务操作时的耗电量
- app运行且密集执行业务操作时的耗电量
- app后台运行的耗电量
六、流量消耗
通过NetworkStatsManager类获取应用流量信息