八戒你干嘛 发表于 2017-8-15 10:52:28

浅谈android性能测试(下)

本帖最后由 八戒你干嘛 于 2017-8-15 10:55 编辑

浅谈android性能测试(上)
自从 cpu及内存后,GPU 这个词对于 PC 性能测试者也不陌生了,什么 3Dmax,安兔兔之类的第三方软件让 GPU 在移动端性能测试领域都知晓,但对于应用的 GPU 该如何来测试呢,我们先引入几个名词:

[*]过度绘制
[*]帧率
[*]帧方差
过度绘制是指界面显示的 activity 套接了多层而导致。帧率是指屏幕刷新率。帧方差是指屏幕刷新帧间隔方差。
对于 GPU 的测试主要包括以下几个测试子项

[*]界面过度绘制
[*]屏幕滑动帧速率
[*]屏幕滑动平滑度
对于过度绘制的测试主要通过人工进行测试,通过打开开发者选项中的 显示GPU过度绘制 来进行测试(PS:只有android4.2及以上的版本才具备此功能),验收的标准为:

[*]不允许出现黑色像素
[*]不允许存在4x过度绘制
[*]不允许存在面积超过屏幕1/4区域的3x过度绘制(淡红色区域)
对于屏幕滑动帧速率主要有 2 种方法。
先说说软件测试的方法:
1.手机端需打开开发者选项中的 启用跟踪 后勾选 Graphics 和 View
2.启动 SDK 工具 Systrace 插件,勾选被测应用,点击 Systrace 插件,在弹出的对话框中设置持续抓取时间,在trace taps下面勾选 gfx 及 view 选项,
3.人滑动界面可以通过节拍来进行滑动或者扫动,帧率数据会保存到默认路径下,默认名称为 trace.html

4.将trace.html文件拷贝到linux系统下 通过命令进行转换,生成trace.csv文件
grep 'postFramebuffer' trace.html   | sed -e 's/.*]\W*//g' -e 's/:.*$//g' -e 's/\.//g' > trace.csv 5.用excel打开文件计算得到帧率
接下来我们说说硬件的方法,这里需要引入高速相机,打开高速相机,开启摄像模式,录制人滑动或者扫动被测应用的视频,再通过人工或者程序数帧的方法对结果进行计算得到帧率
对于屏幕滑动平滑度的测试,方法如同帧率测试,唯一的差异就是最后的结果计算公式的差异
GPU的测试目前业界使用的均为硬件来进行,软件测试的数据相较硬件差异较大,对于帧率及帧方差的测试标准而言,需对待不同机型设定不同的标准

功耗测试主要从以下几个方面入手进行测试

[*]测试手机安装目标APK前后待机功耗无明显差异
[*]常见使用场景中能够正常进入待机,待机电流在正常范围内.
[*]长时间连续使用应用无异常耗电现象
功耗测试的方法分为两类,一类为软件测试,一类为硬件测试
我们先说说软件测试,这里我们会聊聊一些DIY的思路,软件测试一般分为2类,

[*]第一种采用市场上提供的第三方工具,如金山电池管家之类的。
[*]第二种就是自写工具进行,这里一般会使用3种方法

[*]第一种基于android提供的PowerManager.WakeLock来进行,
[*]第二种比较复杂一点,功耗的计算=CPU消耗+Wake lock消耗+数据传输消耗+GPS消耗+Wi-Fi连接消耗,
[*]第三种通过 adb shell dumpsys battery来获取
接着说硬件测试,在这里我们一般使用万用表或者功耗仪进行测试,使用功耗仪测试的时候,需要制作假电池来进行的,有些不能拔插电池的手机还需要焊接才能进行功耗测试

流量测试,同样需要引入几个名词

[*]中等负荷:应用正常操作
[*]高负荷:应用极限操作
流量测试包括以下测试项:

[*]应用首次启动流量提示
[*]应用后台连续运行 2 小时的流量值
[*]应用高负荷运行的流量峰值
[*]应用中等负荷运行时的流量均值
流量测试一般都是用软件来进行的,这里我们一般分为2类:

[*]采用市场提供的第三方工具来进行测试,如流量宝之类的
[*]自研工具进行测试
自研工具进行测试一般包含 2 类方法,

[*]通过 tcpdump 抓包,再通过 wireshake 直接读取包信息来获得流量
[*]首先获得被测应用的 uid 信息,可以通过 adb shell dumpsys package 来获取然后在未操作应用之前,我们可以通过查看 adb shell cat /proc/uid_stat/uid/tcp_rcv adb shell cat /proc/uid_stat/uid/tcp_snd 获取到应用的起始的接收及发送的流量,然后我们再操作应用,再次通过上述 2 条命令可以获取到应用的结束的接收及发送的流量,通过相减及得到应用的整体流量消耗

页: [1]
查看完整版本: 浅谈android性能测试(下)