本文围绕以下性能指标介绍测试Android端的测试方法:
静态不超过5%,后台静默不超过1%,一般运行状态不超过30%,高负荷运行不超过75%,峰值不超过90%;
秀秀app占用总cpu的0.8%,在用户(user)中花0.6%的时间,并在内核空间(kernel)花费0.1%的时间
例如对软件使用较多的场景进行测试
获取对应app的内存占用
adb shell dumpsys meminfo “包名”
(1) 空闲状态下的应用内存消耗情况(程序运行后按home键挂后台)
(2) 中等规格状态下的应用内存消耗情况(注意查看是否申请的内存过大)
(3) 满规格状态下的应用内存消耗情况
(4) 针对性的场景测试
较容易出现内存泄漏的部分场景:
对内存泄漏测试后期可预研使用LeakCanary,结合jenkins,定时取版本源码接入LeakCanary后执行monkey测试,查看是否能检查到内存泄露信息(此方法需要提供源码)。
测试场景中内存不会出现持续上升或短时间内出现内存抖动情况和无故申请过大内存的情况
1) 日志打印:获取运行中的activity,同时存在耗时的+279ms
adb logcat ActivityManager:I *:s
2)获取当前页面的activity
adb shell dumpsys activity | grep mFocusedActivity
使用am命令获取的时间只是apk从onCreate到onResume的时间,但不包含UI界面呈现出来的时间,所以考虑计算从am命令执行到logcat中有displayed出现的时候, 视为app已经启动并展现,作为结束时间。后面对该方法验证是否可行。
(1) 首次启动时间
(2) 非首次启动时间
首次启动时间<=600ms为优秀,<=800ms为良好,<=1000ms为可接受
二次启动时间<=200ms为优秀,<=400ms为良好,<=600ms为可接受
横向对比(与竞品对比)和纵向对比(与以往版本对比)
Activity切换时间<=100ms为优秀,<=200ms为良好,<=500ms为可接受;
硬件:通过高速相机
软件:通过logcat日志的Displayed关键字
adb logcat >~/qiehuan.txt |grep Displayed
例如其他一些需要关注的页面切换等
Activity切换时间<=100ms为优秀,<=200ms为良好,<=500ms为可接受
横向对比(与竞品对比)和纵向对比(与以往版本对比)
1.手机开启开发者模式,开启“GPU呈现模式分析”,选择“在adb shell dumpsys gfxinfo中”
2.获取数据计算滑动帧率和掉帧数
adb shell dumpsys gfxinfo “包名”
如上图信息表示了每一帧在安卓系统中的四个阶段:
Draw: 表示在Java中创建显示列表部分中,OnDraw()方法占用的时间
Prepare: 准备时间
Process: 表示渲染引擎执行显示列表所花的时间,view越多,时间就越长
Execute: 表示把一帧数据发送到屏幕上排版显示实际花费的时间,其实是实际显示帧数据的后台缓存区与前台缓冲区交换后并将前台缓冲区的内容显示到屏幕上的时间
将上面的四个时间加起来就是绘制一帧所需要的时间,如果超过了16.67就表示掉帧了
说明
Android定义了流畅度的数据标准,以60FPS为标准(FPS为每秒绘制的帧数),帧数过小就会出现卡顿感
每一帧在安卓系统中分4个阶段,4个阶段的总和超过16.67(1秒60帧,算下来平均1帧的间隔就约是16.67ms)就认为丢帧
这个定义在Android6.0以前是一定的,但是现在已经没有固定的标准了,因为目前安卓系统有3层缓存机制,加上硬件上的进步,即使超过16.67,也不一定会出现卡顿感。所以这个数据在测试时作为一种对比和相对衡量标准,也可根据需求自定义标准。
帧率计算方法如下:
Draw | Prepare | Process | Execute | sum(计算和) | 帧率(1000/sum) |
3.78 | 0.55 | 6.61 | 4.02 | 14.96 | 66.84491979 |
1.62 | 1.6 | 7.42 | 15 | 25.64 | 39.00156006 |
3.76 | 0.5 |
5.45 | 3.21 | 12.92 | 77.3993808 |
1.23 | 0.56 | 5.41 | 8.71 | 15.91 | 62.85355123 |
1.01 | 0.52 | 5.89 | 10.1 | 17.52 | 57.07762557 |
1.13 | 0.51 | 5.38 | 11.33 | 18.35 | 54.49591281 |
1.35 | 1.05 | 6.8 | 8.25 | 17.45 | 57.30659026 |
2.29 | 0.54 | 6.16 | 9.15 | 18.14 | 55.12679162 |
1.19 | 0.55 | 6.15 | 9.99 | 17.88 | 55.92841163 |
1.51 | 0.52 | 6.08 | 10.7 | 18.81 | 53.16321106 |
1.42 | 2.16 | 6.59 | 2.42 | 12.59 | 79.42811755 |
2.56 | 0.61 | 6.23 | 2.73 | 12.13 | 82.44023083 |
1.59 | 0.55 | 6.53 | 2.51 | 11.18 | 89.44543828 |
1.1 | 0.51 | 6.37 | 1.61 | 9.59 | 104.2752868 |
1.36 | 0.55 | 6.93 | 1.52 | 10.36 | 96.52509653 |
1.35 | 0.54 | 7.35 | 2.24 | 11.48 | 87.10801394 |
1.79 | 0.52 | 6.85 | 4.71 | 13.87 | 72.09805335 |
2.09 | 0.49 | 13.39 | 4.28 | 20.25 | 49.38271605 |
1.05 | 0.24 | 7.33 | 7.97 | 16.59 | 60.27727547 |
1.87 | 0.25 | 5.15 | 10.8 | 18.07 | 55.34034311 |
6.64 | 1.13 | 5.59 | 4.66 | 18.02 | 55.49389567 |
1.33 | 0.26 | 6.12 | 10 | 17.71 | 56.46527386 |
0.69 | 0.24 | 6.18 | 11.6 | 18.71 | 53.44735436 |
1.03 | 0.53 | 4.6 | 10.64 | 16.8 | 59.52380952 |
1.38 | 0.49 | 6.72 | 9.38 | 17.97 | 55.64830273 |
0.73 | 0.24 | 6.36 | 9.86 | 17.19 | 58.1733566 |
0.79 | 0.27 | 4.85 | 11.63 | 17.54 | 57.01254276 |
1.91 | 0.5 | 4.07 | 11.8 | 18.28 | 54.70459519 |
0.77 | 0.5 | 7.14 | 9.61 | 18.02 | 55.49389567 |
0.72 | 0.48 | 3.79 | 11.6 | 16.59 | 60.27727547 |
1.05 | 0.51 | 9.67 | 7.22 | 18.45 | 54.20054201 |
0.74 | 0.25 | 3.88 | 11.34 | 16.21 | 61.69031462 |
0.77 | 0.24 | 4.97 | 11.44 | 17.42 | 57.40528129 |
1.04 | 0.27 | 4.89 | 12.4 | 18.6 | 53.76344086 |
0.98 | 0.52 | 5.84 | 9.61 | 16.95 | 58.99705015 |
2.36 | 0.56 | 7.19 | 8.7 | 18.81 | 53.16321106 |
1.18 | 0.56 | 9.23 | 5.42 | 16.39 | 61.01281269 |
3.14 | 0.54 | 6.95 | 7.72 | 18.35 | 54.49591281 |
1.46 | 0.53 | 7.08 | 11.94 | 21.01 | 47.59638267 |
2.15 | 0.55 | 6.07 | 5.95 | 14.72 | 67.93478261 |
0.68 | 0.56 | 4.07 | 12.61 | 17.92 | 55.80357143 |
2.16 | 0.56 | 5.85 | 13.57 | 22.14 | 45.16711834 |
1.14 | 0.55 | 7.56 | 4.68 | 13.93 | 71.78750897 |
2.03 | 0.55 | 7.73 | 7.89 | 18.2 | 54.94505495 |
2.35 | 0.51 | 8.85 | 7.92 | 19.63 | 50.94243505 |
1.84 | 0.24 | 7.77 | 6.99 | 16.84 | 59.3824228 |
0.74 | 0.5 | 3.74 | 12.1 | 17.08 | 58.54800937 |
0.63 | 0.23 | 4.83 | 12.57 | 18.26 | 54.7645126 |
1.2 | 0.49 | 5.91 | 9.46 | 17.06 | 58.61664713 |
1.03 | 0.55 | 6.22 | 12.73 | 20.53 | 48.70920604 |
1.07 | 0.53 | 6.02 | 8.36 | 15.98 | 62.57822278 |
1.65 | 0.49 | 6.34 | 8.58 | 17.06 | 58.61664713 |
2.31 | 0.6 | 7 | 10.27 | 20.18 | 49.55401388 |
1.07 | 0.52 | 4.52 | 9.48 | 15.59 | 64.14368185 |
0.66 | 0.49 | 4.37 | 1.59 | 7.11 | 140.6469761 |
1.52 | 0.5 | 8.39 | 2.69 | 13.1 | 76.33587786 |
1.14 | 0.54 | 6.69 | 7.34 | 15.71 | 63.65372374 |
2.92 | 0.52 | 7.7 | 2.4 | 13.54 | 73.85524372 |
1.8 | 0.56 | 6.11 | 9.01 | 17.48 | 57.20823799 |
0.99 | 0.57 | 3.62 | 11.81 | 16.99 | 58.85815185 |
0.77 | 0.52 | 5.36 | 9.74 | 16.39 | 61.01281269 |
0.72 | 0.48 | 8.96 | 1.8 | 11.96 | 83.61204013 |
0.67 | 0.45 | 3.75 | 2.41 | 7.28 | 137.3626374 |
2.74 | 0.47 | 9.7 | 7.5 | 20.41 | 48.9955904 |
0.67 | 0.47 | 6.22 | 3.62 | 10.98 | 91.07468124 |
0.61 | 0.48 | 5.39 | 8.06 | 14.54 | 68.77579092 |
3.15 | 0.55 | 6.04 | 1.82 | 11.56 | 86.50519031 |
1.73 | 0.48 | 5.62 | 1.5 | 9.33 | 107.1811361 |
3.03 | 0.47 | 5.53 | 8.67 | 17.7 | 56.49717514 |
3.66 | 0.5 | 6.55 | 5.06 | 15.77 | 63.4115409 |
3.12 | 0.57 | 6.8 | 2.76 | 13.25 | 75.47169811 |
2.25 | 0.54 | 7.27 | 6.43 | 16.49 | 60.64281383 |
1.92 | 0.51 | 7.45 | 4.07 | 13.95 | 71.68458781 |
2.74 | 0.58 | 7.3 | 5.07 | 15.69 | 63.73486297 |
3.02 | 0.59 | 5.67 | 3.17 | 12.45 | 80.32128514 |
1.99 | 0.55 | 5.57 | 4.48 | 12.59 | 79.42811755 |
1.82 | 0.29 | 6.44 | 4.01 | 12.56 | 79.61783439 |
5.54 | 0.59 | 8.72 | 3.13 | 17.98 | 55.61735261 |
2.49 | 0.26 | 6.06 | 10.43 | 19.24 | 51.97505198 |
1.79 | 0.27 | 3.58 | 11.4 | 17.04 | 58.68544601 |
3.41 | 0.53 | 6.51 | 7.91 | 18.36 | 54.46623094 |
3.98 | 0.57 | 6.05 | 8.15 | 18.75 | 53.33333333 |
1.17 | 0.57 | 5.89 | 10.77 | 18.4 | 54.34782609 |
1.98 | 0.56 | 6.16 | 9.44 | 18.14 | 55.12679162 |
1.6 | 0.56 | 6.65 | 8.19 | 17 | 58.82352941 |
1.19 | 0.56 | 5.47 | 10.6 | 17.82 | 56.11672278 |
33.25 | 0.82 | 7.11 | 2.51 | 43.69 | 22.88853285 |
0.93 | 0.58 | 8.65 | 7.15 | 17.31 | 57.7700751 |
48.14 | 3.54 | 30.53 | 11.94 | 94.15 | 10.62134891 |
50 | 1 | 9.64 | 11.4 | 72.04 | 13.88117712 |
50 | 0.55 | 7.06 | 3.02 | 60.63 | 16.49348507 |
50 | 0.93 | 8.76 | 5.22 | 64.91 | 15.4059467 |
13.23 | 0.44 | 4.27 | 6.26 | 24.2 | 41.32231405 |
11.21 | 0.95 | 7.22 | 8.36 | 27.74 | 36.04902668 |
8.73 | 0.44 | 7.86 | 3.89 | 20.92 | 47.80114723 |
34.82 | 0.51 | 12.87 | 2.34 | 50.54 | 19.78630787 |
15.67 | 1.06 | 6.82 | 2.53 | 26.08 | 38.34355828 |
50 | 1.01 | 12.84 | 12.73 | 76.58 | 13.05823975 |
50 | 0.93 | 12.69 | 11.66 | 75.28 | 13.2837407 |
50 | 1.32 | 12.53 | 2.5 | 66.35 | 15.07159005 |
50 | 1.67 | 30.01 | 16.96 | 98.64 | 10.1378751 |
50 | 1.19 | 10.22 | 12.01 | 73.42 | 13.62026696 |
50 | 1.09 | 10.29 | 2.9 | 64.28 | 15.55693839 |
50 | 1.02 | 9.93 | 9.31 | 70.26 | 14.23284942 |
48.95 | 0.96 | 9.66 | 4.67 | 64.24 | 15.56662516 |
19.22 | 1.01 | 9.36 | 5.56 | 35.15 | 28.44950213 |
17.89 | 0.93 | 8.23 | 1.78 | 28.83 | 34.68609088 |
17.63 | 0.95 | 4 | 7.12 | 29.7 | 33.67003367 |
12.28 | 0.44 | 7.37 | 13.07 | 33.16 | 30.15681544 |
6.76 | 1.01 | 7.83 | 9.44 | 25.04 | 39.93610224 |
11.7 | 0.92 | 3.97 | 10.12 | 26.71 | 37.43916136 |
15.14 | 0.42 | 5.51 | 2.09 | 23.16 | 43.17789292 |
9.19 | 0.44 | 6.82 | 2.44 | 18.89 | 52.93806247 |
50 | 0.46 | 9.97 | 3.4 | 63.83 | 15.66661444 |
12.5 | 1.13 | 6.54 | 2.36 | 22.53 | 44.38526409 |
18.8 | 0.98 | 7.44 | 2.64 | 29.86 | 33.48961822 |
7.88 | 0.9 | 7.3 | 2.71 | 18.79 | 53.21979776 |
4.76 | 0.96 | 7.58 | 7.88 | 21.18 | 47.21435316 |
4.89 | 0.94 | 7.17 | 3.03 | 16.03 | 62.38303182 |
50 | 1.1 | 7.26 | 2.65 | 61.01 | 16.39075561 |
可能引起掉帧的原因:
1.手机性能差,CPU + GPU工作效率低下
2.横竖屏切换,需要用savedInstanceState保存的view信息进行重画
3.动画效果太多
4.GC太多
5.UI线程阻塞
6.界面试图结构过于复杂(可以通过Hierachy View查看)
7.过度绘制
注意:如果只掉了一帧,但是这帧所占时间较长,比如占了几个垂直同步信号的时间,虽然总体的FPS值还不错,但依然能肉眼感知到这帧的卡顿,所以这种情况也需注意。
应结合手机硬件性能决定性能标准,但建议最低也要大于50,60为最高值
横向对比(与竞品对比)和纵向对比(与以往版本对比)
进入开发者模式>点击显示GPU过度绘制
各/主要页面
针对性的场景测试
一些静态页面,一般是无法修改的
横向对比(与竞品对比)和纵向对比(与以往版本对比)
adb shell cat /proc/#pid#/net/dev
(1) 应用首次启动流量
(2) 应用后台长时间运行后的流量值
(3) 针对性的场景测试
例如发送接收图片,发送接收视频,刷新列表等操作
欢迎交流点赞~