app专项性能测试:
包体大小:包体不能太大,竞品分析
1、启动(冷启动,热启动,完全启动,有网启动,无网启动)
1)冷启动:首次启动app的时间间隔,只是启动时间,不包括页面加载
C:\Users\cherrylixh>adb shell am start -W com.pptv.launcher/.UserCenterActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.pptv.launcher/.UserCenterA
Status: ok
Activity: com.pptv.launcher/.UserCenterActivity
ThisTime: 182
TotalTime: 182
WaitTime: 194
Complete
thisTime:该Activity启动耗时
TotalTime:应用自身启动耗时,ThisTime+应用application等资源启动时间;
WaitTime:系统启动耗时,TotalTime+系统资源启动时间
2)热启动:非首次启动app的时间间隔,只是启动时间,不包括页面加载
操作:按back键后,在启动,adb命令
3)完全启动:从启动到首页完全加载出来的时间间隔
4)有网启动:从发起跳转到页面完全加载出来的时间间隔
5)无网启动:从发起跳转到页面完全加载出来的时间间隔
完全启动,有网启动,弱网启动,无网启动:可以通过fiddler或charles抓包来获取启动时间
使用androidstudio的android Montior,查看手机日志系统输出
2、内存
android系统中app一般有私有内存PSS和共享内存,来衡量app的内存开销,内存占用过多增长太快存在内存泄漏;
测试点:
1)空闲状态:切换至后台或者启动状态不做操作,消耗内存最小
2)中强度状态:时间较长的操作
3)高强度状态:使用money来操作
测试方法:
1)adb shell dumpsys meminfo com.pptv.tvsports.a
C:\Users\cherrylixh>adb shell dumpsys meminfo com.pptv.tvsports.a
Applications Memory Usage (kB):
Uptime: 500286431 Realtime: 500286431
** MEMINFO in pid 28546 [com.pptv.tvsports.a] **
Pss Private Private Swapped Heap Heap Heap
Total Dirty Clean Dirty Size Alloc Free
Native Heap 34906 34828 0 0 49140 49140 48139
Dalvik Heap 36519 36388 0 0 44444 36866 7578
Dalvik Other 2148 2148 0 0
Stack 884 884 0 0
Other dev 25 0 24 0
.so mmap 9217 404 6308 0
.apk mmap 425 0 96 0
.ttf mmap 489 0 56 0
.dex mmap 16361 0 14360 0
code mmap 4760 0 1212 0
image mmap 4727 1512 2176 0
Other mmap 167 56 44 0
Unknown 11041 11040 0 0
TOTAL 121669 87260 24276 0 93584 86006 55717
其中native heap:JVM分配的内存 49140
dalvik heap:java分配的内存 44444
PSS total:实际使用的内存 TOTAL 121669
3、cpu
主要关注CPU占用率,cpu过于繁忙会存在ANR问题
测试点:
1)在空闲时间(切换至后台)的消耗,不占用cpu
2)常用使用场景,cpu占用率《30%
3)长时间高强度运行,cpu占用率《50%
测试方法:
1)top -m 5 -s cpu|grep 包名
2)adb dumpsys cpuinfo |findstr com.pptv.tvsports
4、FPS (应用的使用流畅度)
FPS是指画面每秒传输帧数,动画或者视频的画面数,android设备的屏幕刷新率是60帧/s,要保持画面流畅不卡顿,要求每一帧不超过1000/60=16.6ms
测试方法:
1)打开手机:开发者选项—>profile GPU rendering —> in adb shell dumpsys gfxinfo
- 操作要测试的apk
3)adb shell dumpsys gfxinfo 包名
- 得到一个矩阵数据,计算矩阵中帧率大于16的点所占比例,即为卡顿比
2、打开手机开发者选项—>profile GPU rendering —> on screen as bars,操作被测软件,界面出现统计表,超过绿色的线代表有卡顿
3、使用第三方工具:emmagee,GT
4、使用android studio自带的android monitor
5、GPU渲染
GPU渲染是指一个像素点绘制多次,过度绘制对动画性能有影响
测试方法:
1、手机自动的Debug GPU overdraw
1)打开手机—>设置—>开发者选项—>Debug GPU overdraw—>show overdraw areas
2)打开被测的应用
GPU过渡渲染不同的颜色代表不同的绘制程度
1)、原色:无过渡绘制
2)、蓝色:绘制一次 (理想状态)
3)、绿色:绘制二次
4)、浅红:绘制三次 (可以优化)
5)、深红:绘制四次 (必须优化)
测试指标:
1、控制过渡绘制为2x
2、不允许存在4x过渡绘制
3、不允许存在面积超过屏幕1/4的3x过渡绘制
6、耗电量
测试前先查看在规定时间内手机正常待机下(重启后待机)电量消耗为多少,然后再启动待测试app查看消耗的电量增加了多少
测试点:
1)测试手机安装目标apk前后待机功能无明显差异
2)常见使用场景中能用正常进入待机,待机电流在正常范围内
3)长时间连续使用应用无异常耗电现象
测试方法:
(先关闭所有的应用,再打开被测app)
1、使用第三方测试工具:Emmagee、GT等,只需要测试的电流静置一晚,待机电流在正常范围内即可。一般是被测应用对比待机电流<=2mA。
2、使用adb命令
adb shell dumpsys batterystats |grep packageName
测试项
测试子项
含义
测试手段
预期结果
备注
启动
冷启动
首次启动
1、adb shell am start -w 包名/activyty名2、查看启动时间
不超过1.5s
热启动
非首次启动
1、启动后按back键再次adb启动
不超过1s
cpu
1)top -m 5 -s cpu|grep 包名 2)adb dumpsys cpuinfo |findstr com.pptv.tvsports 3)使用第三方工具:emmagee,GT 4)使用android studio自带的android monitor
不存在ANR
内存
monkey情况
1、adb shell dumpsys meminfo 包名 2、看PSS total的大小 3、使用emmagee测试 4、使用android studio的android monitor
native heap,dalvik heap两者不能一直增长,不存在内存泄漏
两个一直增长有内存泄漏
电量
测试前需要关闭所有应用,再打开app
1)adb shell dumpsys batterystats |grep 包名 2)使用第三方测试工具emmagee,GT等
1、测试手机安装目标apk前后待机功耗无明显差异 2、长时间连续使用应用无异常耗电现象
流量
流量上传下载
1、adb shell cat /proc/net/xt_qtaguid/stats |grep uid
fps
卡顿占比
画面流畅率
1)打开手机:开发者选项—>profile GPU rendering —> in adb shell dumpsys gfxinfo 2) 操作要测试的apk 3)adb shell dumpsys gfxinfo 包名 4) 得到一个矩阵数据,计算矩阵中帧率大于16的点所占比例,即为卡顿比
不超过16ms
GPU
页面渲染
在一个像素点绘制几次
打开手机—>设置—>开发者选项—>Debug GPU overdraw—>show overdraw areas
不超过4层