性能测试系列(3):移动端的性能测试
响应
- 冷启动:首次启动app的时间间隔(只是启动时间,不包括页面加载)
- 热启动:非首次启动app的时间间隔(只是启动时间,不包括页面加载)
- 方法:adb shell am start -W packageName或者通过Android Monitor的logcat
内存
- 空闲状态:切换至后台或者启动后不做任何操作,消耗内存最少
- 中强度状态:时间偏长的操作应用
- 高强度状态:高强度使用应用,可以跑monkey来测试(通常用来测试内存泄漏)
- 方法:adb shell dumpsys meminfo packageName
Monkey
- Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是:/sdk/sdk/tools/lib/monkey.jar
- Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中的存放路径是:/sdk/sdk/tools/bin/monkey
- adb shell monkey {+命令参数} Monkey 测试出现错误后,一般的分析步骤看Monkey的日志 (注意第一个swith以及异常信息等)
- 程序无响应的问题: 在日志中搜索 “ANR”
- 崩溃问题:在日志中搜索 “Exception” (如果出现空指针, NullPointerException) 肯定是有bug
CPU
- 在空闲时间(切换至后台)的消耗,基本没大应用使用cpu
- 在运行一些应用的情况下,cpu已占50%的情况下,观察应用程序占用cpu的情况
- 在高负荷的情况下看CPU的表现(cpu占用应是在80%以上)
- 方法: top -m -s cpu |grep packageName(-m是最大 -s是排序)或者dumpsys cpuinfo |grep packageName
FPS
- app使用的流畅度,60帧/s,要保持画面流畅不卡顿,一般是要求每一帧的时间不超过1000/60=16.6ms
- 方法:adb shell dumpsys gfxinfo packageName或者开发者选项—>profile GPU rendering —> on screen as bars(这个基本不用,了解就行了)
GPU过度渲染
- 开发者选项—>Debug GPU overdraw—>show overdraw areas
耗电
- 测试手机安装目标APK前后待机功耗无明显差异
- 常见使用场景中能够正常进入待机,待机电流在正常范围内
- 长时间连续使用应用无异常耗电现象
- 方法:adb shell dumpsys batterystats |grep packageName
耗流
- 先查看UID:cat /data/system/packages.list | grep com.newsplus.tr 假设UID为1000
- 然后 通过cat /proc/uid_stat/1000/tcp_rcv计算下行流量
- 再启动APP到APP彻底启动 cat/proc/uid_stat/1000/tcp_sed计算上行流量
- 然后sed-rcv即可
- 或者通过wireshark抓包也可以
作者:Cstzar
-------------------------------------------
个性签名:君子藏器于身,待时而动
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!