APP专项测试-性能测试

启动时间

冷启动

进程首次创建

#获取包名和Activity名称,输入如下命令后启动APP在log中即可获取到;
$adb logcat | grep START  
#启动APP 返回time值可以计算
$adb shell am start -W -n com.android.browser/.BrowserActivity 
#停止APP启动
$adb shell am force-stop com.android.browser

热启动

进程通过点击Home键等进入后台,并未杀死再次启动;

#启动指令同冷启动
$adb shell am start -W -n com.android.browser/.BrowserActivity 
#停止APP,进入后台
$adb shell input keyevent 3 

启动时间脚本化

方法1. 获取命令执行时间,作为启动时间参考值;
方法2. 在命令前后加上时间戳,以差值作为参考值(推荐);

执行时间获取需要
app Class: LaunchApp、StopApp、GetLaunchedTime;
Controller Class: run、CollectAllData、SaveDataToCSV;
#第一种方法的实现:

CPU

#获取数据
$adb shell dumpsys cpuinfo |  grep packagename

流量

#获取进程ID指令
$adb shell ps | grep packagename 
#获取进程对应的流量
$adb shell cat /proc/pid/net/dev

电量

#查看电池状态(是否充电、电池剩余量level、)
$adb shell dumpsys battery
#切换电池到非充电状态 2是充电状态,除2以外都是非充电状态;
$adb shell dumpsys battery set status 1

内存

定期采集数据,长时间使用之后处于恒定情况,可以判定为没有内存泄漏;

#获取内存
$adb shell top -d 1 > meminfo  #-d 制定每一秒钟刷新一次
#VSS - Virtual Set Size 虚拟消耗内存
#RSS - R  Set Size 实际消耗内存

FPS&过度渲染

FPS : 每秒帧数
过度渲染:描述的是屏幕上的某个像素在同一帧的时间内被绘制了多少次;

FPS原理:手机屏幕显示的内容是通过Android系统的SurfaceFLinger类,把当前系统里所有进程需要显示的信息合成一帧,然后提交到屏幕进行显示。FPS 就是1s内SurfaceFLinger提交到屏幕的帧数。

1.有时候FPS很低,但是我们却不觉得App卡顿?
2.App停止操作之后,FPS还是一直在变化,这样的情况是否会影 响FPS的准确度?

你可能感兴趣的:(APP专项测试-性能测试)