51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1177|回复: 0
打印 上一主题 下一主题

浅谈android性能测试(上)

[复制链接]
  • TA的每日心情
    无聊
    前天 09:07
  • 签到天数: 11 天

    连续签到: 2 天

    [LV.3]测试连长

    跳转到指定楼层
    1#
    发表于 2017-8-15 10:27:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 八戒你干嘛 于 2017-8-15 10:53 编辑

    Android 性能测试,跟 pc 性能测试一样分为客户端及服务器,但在客户端上的性能测试分为 2 类:
    • 一类为 rom 版本的性能测试
    • 一类为应用的性能测试
    对于应用性能测试,包括很多测试项,如启动时间、内存、CPU、GPU、功耗、流量等。 但针对 rom 版本的性能测试,一般关注功耗。
    先说说应用的性能测试,对于启动时间、内存、cpu 测试大家一般都使用外部提供的第三方工具来辅助测试,如GT、安测试等、这些工具的原理都是基于调用 android 底层的一些 api 来获取到测试所用到的值,当然我们也可以采用其他方法,如使用 android 本身提供的一套 adb 即可完成上述测试。
    对于 GPU、功耗、等测试来说,用第三方工具测试得到的数值一般都不是很准确,这个时候我们需要引入硬件来进行测试了,GPU 可以采用高速相机来进行测试,功耗可以使用万用表或安捷伦电源仪来进行测试(ps:有硬件动手能力的可以DIY一个小板进行)
    再说说 rom 版本的性能测试,rom 版本一般就关注功耗测试,不过 rom 版本的功耗测试跟应用的功耗测试会有所差异,当然只是用例设计方面的差异,工具仍然采用安捷伦电源仪进行

    先我们来说说启动时间。关于应用的启动时间的测试,分为三类:
    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 表格自动相加也可以使用算法,我就不详细介绍了)
    除了 DisplayManager 的打印时间方法后,还有通过关注 am 的启动时间及 DisplayManager 打印的结束时间,通过两者时间之间想减也能得到应用的启动时间,还有可以通过 PowerManager 来计算打印时间,在应用启动的时候,我们可以关注 ActivityManager-Launch 的变化来计算应用的启动时间,还有可以通过截图统计启动时间,对于自研应用,最效率的莫过于直接在程序中插入打印时间的节点了
    说完了软件测试的方法,接下来我们聊聊硬件测试,这里我们可以使用高速相机或者手机,采用录像的方法把应用启动过程给录制下来,然后通过人工数帧或者程序数帧的方式计算启动时间

    本文接着往下聊,今天主聊 CPU 及 内存
    看到这两个名词,做过PC性能测试的就比较熟悉了,同样的性能测试关注点 :)
    首先说说内存,移动端关注的是内存消耗,这个测试节点的设计目标是为了让应用不占用过多的系统资源,且及时释放内存,保障整个系统的稳定性,当然关于内存测试,在这里我们需要引入几个概念,
    • 空闲状态
    • 中等规格
    • 满规格,
    空闲状态:指打开应用后,点击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 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  来获取

    请转至
    浅谈android性能测试(下)
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏1
    回复

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-9-21 04:24 , Processed in 0.061454 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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