Android 性能测试

来源:互联网 发布:多宝视训练软件多少钱 编辑:程序博客网 时间:2024/06/01 09:46

刚看到一个性能命令:

Adb shelldumpsys battery

 

因为是连着两台机, 就在adb 后面加一个 -s 然后设备号:

adb -s0149C7ED12015007 shell dumpsys battery

结果是这样的,

Current BatteryService s

  AC powered: false

  USB powered: true

  Wireless powered: false

  status: 2

  health: 2

  present: false

  level: 55

  scale: 100

  voltage:3930

  temperature: 320

  technology: Li-ion

 

首先我们来说说启动时间。关于应用的启动时间的测试,分为三类:

1.首次启动 --应用首次启动所花费的时间

2. 非首次启动--应用非首次启动所花费的时间

3.应用界面切换--应用界面内切换所花费的时间

那么如何来做启动时间的测试呢,一般我们分为2类,一类为使用软件来测试,一类为使用硬件来测试,首先我们说说软件测试的方法,可能大部分人都比较通晓使用 android 提供的 DisplayManager 来获取 activity 的启动时间吧,在这里我简单说下如何通过批处理来 DIY

  • 通过日志过滤关键字 Displayed 来过滤所有 activity 所打印的,记录日志通过 adb logcat>/address/logcat.txt 然后使用 find “Displayed” /address/logcat.txt>/newaddress/fl.txt
  • 通过 activity 名来过滤获取所测应用 find “ActivityName” /newaddress/fl.txt>/newaddress/last.txt
  • 通过计算 activity 最后剩余的时间之和即可(这里可以使用 excel 表格自动相加也可以使用算法,我就不详细介绍了)

 

 

首先说说内存,移动端关注的是内存消耗,这个测试节点的设计目标是为了让应用不占用过多的系统资源,且及时释放内存,保障整个系统的稳定性,当然关于内存测试,在这里我们需要引入几个概念,

  • 空闲状态
  • 中等规格
  • 满规格,

空闲状态:指打开应用后,点击home键让应用后台运行,此时应用处于的状态叫做空闲。中等规格和满规格指的是对应用的操作时间的间隔长短不一,中等规格时间较长,满规格时间较短。

接下来我们说说在内存测试中,存在很多测试子项,如下清单所示

1.空闲状态下的应用内存消耗情况

2.中等规格状态下的应用内存消耗情况

3.满规格状态下的应用内存消耗情况

4.应用内存峰值情况

5.应用内存泄露情况

6.应用是否常驻内存

7.压力测试后的内存使用情况

说了一些关于内存测试方面的设定,接下来我们聊聊测试方法DIY,现在关于android内存测试的方法基本分为几类,

1.使用android 本身提供的 ActivityManager.MemoryInfo() 方法获得(此方法请百度或google)此类第三方工具有如网易的Emmagee、安测试、腾讯的GT等

2.使用android 提供的 adb shell dumpsys meminfo |grep packagename >/address/mem.txt 来获取

3.使用 android 提供的procrank

这里我们详解一下procrank 方法(批处理)

首先去google获取procrank、procmem、libpagemap.so三个文件 .

然后push文件,执行 adb pushprocrank /system/xbin adb push procmem /system/xbin adb push libpagemap.so/system/lib

赋权 adb shell chmod6755 /system/xbin/procrank adb shell chmod 6755 /system/xbin/procmem adb shellchmod 6755 /system/lib/libpagemap.so ,

在开启工具记录 adb shellprocrank |grep packagename >/address/procrank.txt

剩下的就是整理测试数据了

关于内存泄露方面的测试,可以通过几个方面来测试

1.通过monkey压力测试记录内存使用情况,分析数据曲线图及日志情况

2.通过eclipse上的mat+heap来分析存在内存泄露方面的节点

说了这么多内存的,我们再来说说CPU方面的,CPU跟内存一样,存在一些测试子项,如下清单所示

1.空闲状态下的应用CPU消耗情况

2.中等规格状态下的应用CPU消耗情况

3.满规格状态下的应用CPU消耗情况

4.应用CPU峰值情况

CPU的测试方法分为几类

1.使用android提供的adbshell dumpsys cpuinfo |grep packagename >/address/cpu.txt来获取

2.使用top命令adb shell top |grep packagename>/address/cpu.txt 来获取

恩,说了大半章了,cpu及内存的测试相信各位应该有所了解了,下回继续聊其他测试项

 

过度绘制是指界面显示的 activity套接了多层而导致。帧率是指屏幕刷新率。帧方差是指屏幕刷新帧间隔方差。

对于 GPU的测试主要包括以下几个测试子项

  1. 界面过度绘制
  2. 屏幕滑动帧速率
  1. 屏幕滑动平滑度

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

  1. 不允许出现黑色像素
  2. 不允许存在4x过度绘制
  1. 不允许存在面积超过屏幕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的测试目前业界使用的均为硬件来进行,软件测试的数据相较硬件差异较大,对于帧率及帧方差的测试标准而言,需对待不同机型设定不同的标准

自研工具进行测试一般包含 2 类方法,

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

 

adb shell dumpsys activity---------------查看ActvityManagerService 所有信息

adb shell dumpsys activity activities----------查看Activity组件信息

adb shell dumpsys activity services-----------查看Service组件信息

adb shell dumpsys activity providers----------产看ContentProvider组件信息

adb shell dumpsys activity broadcasts--------查看BraodcastReceiver信息

adb shell dumpsys activity intents--------------查看Intent信息

adb shell dumpsys activity processes---------查看进程信息

 

源文档 <http://blog.csdn.net/dxyoo7/article/details/9001092>

 

查看进程

Adb shell top

查看APP占用的内存

Adb shelldumpsys meminfo com.yiban.app

0 0
原创粉丝点击