51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3200|回复: 4
打印 上一主题 下一主题

【我分享】Android 性能测试初探

[复制链接]
  • TA的每日心情
    奋斗
    2014-12-26 09:47
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2014-12-26 10:12:30 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

    功耗

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

    • 测试手机安装目标APK前后待机功耗无明显差异
    • 常见使用场景中能够正常进入待机,待机电流在正常范围内.
    • 长时间连续使用应用无异常耗电现象

    功耗测试的方法分为两类,一类为软件测试,一类为硬件测试

    我们先说说软件测试,这里我们会聊聊一些DIY的思路,软件测试一般分为2类,

    • 第一种采用市场上提供的第三方工具,如金山电池管家之类的。

    • 第二种就是自写工具进行,这里一般会使用3种方法

      • 第一种基于android提供的PowerManager.WakeLock来进行,
      • 第二种比较复杂一点,功耗的计算=CPU消耗+Wake lock消耗+数据传输消耗+GPS消耗+Wi-Fi连接消耗,
      • 第三种通过 adb shell dumpsys battery来获取

    接着说硬件测试,在这里我们一般使用万用表或者功耗仪进行测试,使用功耗仪测试的时候,需要制作假电池来进行的,有些不能拔插电池的手机还需要焊接才能进行功耗测试

    流量,当然我所指的性能测试是针对大部分应用而言的,可能还有部分应用会关注网速、弱网之类的测试,但本系列文章都不去一一探讨了

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

    • 中等负荷:应用正常操作
    • 高负荷:应用极限操作

    流量测试包括以下测试项:

    • 应用首次启动流量提示
    • 应用后台连续运行 2 小时的流量值
    • 应用高负荷运行的流量峰值
    • 应用中等负荷运行时的流量均值

    流量测试一般都是用软件来进行的,这里我们一般分为2类:

    • 采用市场提供的第三方工具来进行测试,如流量宝之类的
    • 自研工具进行测试

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

    • 通过
      tcodump
      抓包,再通过
      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 条命令可以获取到应用的结束的接收及发送的流量,通过相减及得到应用的整体流量消耗

    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏2
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-6-24 15:34
  • 签到天数: 50 天

    连续签到: 1 天

    [LV.5]测试团长

    5#
    发表于 2014-12-29 13:28:12 | 只看该作者
    你们用的是什么测试软件呀????
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-2-1 08:26
  • 签到天数: 113 天

    连续签到: 1 天

    [LV.6]测试旅长

    4#
    发表于 2014-12-26 10:56:13 | 只看该作者
    这么好,没有人顶啊?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-12-26 09:47
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    3#
     楼主| 发表于 2014-12-26 10:13:03 | 只看该作者
    显示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 类方法,
    •        通过
    tcodump
    抓包,再通过
    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 条命令可以获取到应用的结束的接收及发送的流量,通过相减及得到应用的整体流量消耗
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2014-12-26 09:47
  • 签到天数: 2 天

    连续签到: 2 天

    [LV.1]测试小兵

    2#
     楼主| 发表于 2014-12-26 10:12:51 | 只看该作者
    接下来我们说说在内存测试中,存在很多测试子项,如下清单所示
    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 push procrank /system/xbin
    adb push procmem /system/xbin
    adb push libpagemap.so /system/lib
    赋权
    adb shell chmod 6755 /system/xbin/procrank
    adb shell chmod 6755 /system/xbin/procmem
    adb shell chmod 6755 /system/lib/libpagemap.so
    ,
    在开启工具记录
    adb shell procrank |grep packagename >/address/procrank.txt
    剩下的就是整理测试数据了
    关于内存泄露方面的测试,可以通过几个方面来测试
    1.通过monkey压力测试记录内存使用情况,分析数据曲线图及日志情况
    2.通过eclipse上的mat+heap来分析存在内存泄露方面的节点
    说了这么多内存的,我们再来说说CPU方面的,CPU跟内存一样,存在一些测试子项,如下清单所示
    1.空闲状态下的应用CPU消耗情况
    2.中等规格状态下的应用CPU消耗情况
    3.满规格状态下的应用CPU消耗情况
    4.应用CPU峰值情况
    CPU的测试方法分为几类
    1.使用android提供的adb shell dumpsys cpuinfo |grep packagename >/address/cpu.txt来获取
    2.使用top命令 adb shell top |grep packagename>/address/cpu.txt 来获取
    自从 cpu及内存后,GPU 这个词对于 PC 性能测试者也不陌生了,什么 3Dmax,安兔兔之类的第三方软件让 GPU 在移动端性能测试领域都知晓,但对于应用的 GPU 该如何来测试呢,我们先引入几个名词:
    •        过度绘制
    •        帧率
    •        帧方差
    过度绘制是指界面显示的 activity 套接了多层而导致。帧率是指屏幕刷新率。帧方差是指屏幕刷新帧间隔方差。
    对于 GPU 的测试主要包括以下几个测试子项
    •        界面过度绘制
    •        屏幕滑动帧速率
    •        屏幕滑动平滑度
    对于过度绘制的测试主要通过人工进行测试,通过打开开发者选项中的
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 10:08 , Processed in 0.068639 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表