Android的app性能测试包括的测试项:Activity响应时间,帧率,内存,cpu消耗,耗电量,冷启动
Activity响应时间的相关测试
查看当前APP打开的页面命令:
adb shell dumpsys activity | findstr mResumedActivity
#安卓14
adb shell "dumpsys window | grep mCurrentFocus"
冷启动:
用命令去打开APP的某个activity
//先杀死APP
adb shell am force-stop packageName
//启动被测应用
adb shell am start -W packageName/ActivityName
得出进入该activity的耗时
startTime记录的刚准备调用startActivityAndWait()的时间点
endTime记录的是startActivityAndWait()函数调用返回的时间点
WaitTime = startActivityAndWait()调用耗时。
热启动
//启动App命令:
adb shell am start -W -n package/activity
//停止App命令:相当于返回 没有杀死APP
adb shell input keyevent 3 (发送一个keyevent事件,3代表点击手机上的“back”键)
这里的225ms耗时就是热启动的。
如果是要测试运行时的每个activity的响应时间,要记录日志查看am_activity_launch_time的时间
adb logcat -v threadtime -b events | findstr "am_activity_launch_time"
还有另外一条命令也能查看
adb shell logcat -b main | findstr ActivityManager
查看内存以及CPU占用
空闲状态:切换至后台或者启动后不做任何操作,消耗内存最少。
中强度状态:时间偏长的操作应用。
高强度状态:高强度使用应用,可以跑monkey来测试(通常用来测试内存泄漏)。
退出某个页面后,内存是否有回落。 如果没有及时回落,且程序自动GC或者手动GC,那便可确认有问题。
进行某个操作后,内存是否增长过快。 如果增长过快,也有可能存在风险,需重复操作确认。
内存泄漏和内存溢出的区别:
内存泄露:运行时申请的内存空间没有被正确的释放,导致后续程序的这块内存是被永远占用的,不能被使用,(APP退出后所占用的内存仍然不降下去)
内存溢出:运行时的内存超出了指定的空间大小,处于越界的情况。(会提示手机内存不足或强制退出APP)
测试命令
adb shell top -d 5 -n 300 | find "packageName"
#d表示每次抓取的间隔时间,秒
#n表示抓取的内存的次数