APP专项测试-性能测试
2019-09-25 本文已影响0人
叶子完小
启动时间
冷启动
进程首次创建
#获取包名和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的准确度?