强烈推荐转载-Android 性能测试

关于Android的性能测试,看到一篇很好的文章,转载过来和大家分享下。


   Android性能测试,跟pc性能测试一样分为客户端及服务器,但在客户端上的性能测试分为 类,对于应用性能测试,包括很多测试项,如启动时间、内存、CPU、GPU、功耗、流量等。但针对rom版本的性能测试,一般关注功耗。

   rom版本的性能测试:

  •     rom 版本一般就关注功耗测试,不过 rom 版本的功耗测试跟应用的功耗测试会有所差异,当然只是用例设计方面的差异,工具仍然采用安捷伦电源仪进行。

    •    应用的性能测试:

    应用的性能测试,对于启动时间、内存、cpu 测试大家一般都使用外部提供的第三方工具来辅助测试,如GT、安测试等、这些工具的原理都是基于调用 android 底层的一些 api 来获取到测试所用到的值,当然我们也可以采用其他方法,如使用 android 本身提供的一套 adb 即可完成上述测试。

    对于 GPU、功耗、等测试来说,用第三方工具测试得到的数值一般都不是很准确,这个时候我们需要引入硬件来进行测试了,GPU可以采用高速相机来进行测试,功耗可以使用万用表或安捷伦电源仪来进行测试(ps:有硬件动手能力的可以DIY一个小板进行)

  • Android性能测试-启动时间:

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

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

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

  • 3. 应用界面切换--应用界面内切换所花费的时间那么如何来做启动时间的测试呢,一般我们分为2类,一类为使用软件来测试,一类为使用硬件来测试,首先我们说说软件测试的方法,可能大部分人都比较通晓使用 android 提供的 DisplayManager 来获取 activity 的启动时间。

  • 通过日志过滤关键字 Displayed 来过滤所有 activity 所打印的,记录日志通过

  • adblogcat>/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的变化来计算应用的启动时间,还有可以通过截图统计启动时间,对于自研应用,最效率的莫过于直接在程序中插入打印时间的节点了

  • 除了软件测试的方法,还有硬件测试,我们可以使用高速相机或者手机,采用录像的方法把应用启动过程给录制下来,然后通过人工数帧或者程序数帧的方式计算启动时间。

  • Android性能测试-内存消耗

  • 内存消耗,这个测试节点的设计目标是为了让应用不占用过多的系统资源,且及时释放内存,保障整个系统的稳定性,当然关于内存测试,在这里我们需要引入几个概念:空闲状态、中等规格、满规格。

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

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

    1.空闲状态下的应用内存消耗情况
    2.中等规格状态下的应用内存消耗情况
    3.满规格状态下的应用内存消耗情况
    4.应用内存峰值情况
    5.应用内存泄露情况
    6.应用是否常驻内存
    7.压力测试后的内存使用情况

    关于android内存测试的方法基本分为几类,

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

    2.使用android 提供的

     adbshell dumpsys meminfo |grep packagename >/address/mem.txt
    来获取。

    3.使用 android 提供的 procrank

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

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

    然后push文件,执行

    adbpush procrank /system/xbin
    adbpush procmem /system/xbin
    adbpush libpagemap.so /system/lib

    赋权

    adbshell chmod 6755 /system/xbin/procrank
    adbshell chmod 6755 /system/xbin/procmem
    adbshell chmod 6755 /system/lib/libpagemap.so ,

    在开启工具记录

    adbshell 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提供的

    adbshell dumpsys cpuinfo |grep packagename >/address/cpu.txt来获取

    2.使用

    top命令

    adbshell top |grep packagename>/address/cpu.txt来获取
          • Android性能测试-内存消耗自从cpu及内存后,GPU这个词对于PC性能测试者也不陌生了,什么3Dmax,安兔兔之类的第三方软件让GPU 在移动端性能测试领域都知晓,但对于应用的GPU该如何来测试呢,我们先引入几个名词:过度绘制、帧率、帧方差。

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

    对于 GPU 的测试主要包括以下几个测试子项:界面过度绘制、屏幕滑动帧速率、屏幕滑动平滑度。

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

    •    a、不允许出现黑色像素

    •    b、不允许存在4x过度绘制

    •    c、不允许存在面积超过屏幕1/4区域的3x过度绘制(淡红色区域)

    •    对于屏幕滑动帧速率主要有 2 种方法。

    •    先说说软件测试的方法:

    1.手机端需打开开发者选项中的启用跟踪 后勾选 Graphics 和 View

    2.启动SDK工具Systrace插件,勾选被测应用,点击Systrace插件,在弹出的对话框中设置持续抓取时间,在tracetaps下面勾选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的测试目前业界使用的均为硬件来进行,软件测试的数据相较硬件差异较大,对于帧率及帧方差的测试标准而言,需对待不同机型设定不同的标准。

    1.   Android 性能测试-功耗测试:

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

      •    a、测试手机安装目标APK前后待机功耗无明显差异。

      •    b、常见使用场景中能够正常进入待机,待机电流在正常范围内。

      •    c、长时间连续使用应用无异常耗电现象。

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

         软件测试一般分为2类:

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

         第一种基于android提供的PowerManager.WakeLock来进行;

         第二种比较复杂一点,功耗的计算=CPU消耗+Wakelock消耗+数据传输消耗+GPS消耗+Wi-Fi连接消耗;

         第三种通过 adbshell dumpsys battery来获取。

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

    3.    

      1.    Android 性能测试-流量测试:

      2.    
      3.  性能测试的——流量,当然我所指的性能测试是针对大部分应用而言的,可能还有部分应用会关注网速、弱网之类的测试。流量测试,同样需要引入几个名词
        •    中等负荷:应用正常操作

        •    高负荷:应用极限操作

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

        •    a、应用首次启动流量提示

        •    b、应用后台连续运行2小时的流量值

        •    c、应用高负荷运行的流量峰值

        •    d、应用中等负荷运行时的流量均值

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

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

        •    b、自研工具进行测试

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

           通过tcodump抓包,再通过wireshake直接读取包信息来获得流量

           首先获得被测应用的uid信息,可以通过

        adbshell dumpsys package

           来获取 然后在未操作应用之前,我们可以通过查看

         adbshell cat /proc/uid_stat/uid/tcp_rcv

         adbshell cat /proc/uid_stat/uid/tcp_snd

           获取到应用的起始的接收及发送的流量,然后我们再操作应用,再次通过上述 2 条命令可以获取到应用的结束的接收及发送的 

      4.    流量,通过相减及得到应用的整体流量消耗

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
不多说废话,看题目,本教程适合练手,会python+android基础的人群,文件较大,上传乃是下载链接,下面上目录: 1-1 课程导学 2-1 如何学好Android App性能测试? 2-10 详解【电量】监控值的获取方法 \' D, l" p) d6 d. K9 [7 p 2-11 详解【电量】监控脚本实现和数据分析 O, e4 X& K0 S% h8 v8 V9 ? 2-12 详解【内存】监控值的获取方法 k! e6 e# C" K% z9 k- l 2-13 详解【内存】监控脚本实现和数据分析0 d; e- S% G6 r3 H: g 2-14 详解【FPS&过度渲染】的概念和监控方法 - 分析页面卡慢的方法# G! _2 O9 T* j" K s3 v6 C0 l 2-2 工欲善其事必先利其器-性能测试环境准备 2-3 详解【启动时间】监控值的获取方法0 n( p* l; g C 2-4 详解【启动时间】监控脚本实现% B2 z( C( E& S: n r1 e 2-5 详解【启动时间】数据分析 2-6 【启动时间】时间戳差值监控方法概要介绍 2-7 详解【CPU】监控值的获取方法、脚本实现和数据分析 2-8 详解【流量】监控值的获取方法7 r7 ~/ D5 |+ h9 m9 i6 p) b: Y 2-9 详解【流量】监控脚本实现和数据分析2 [9 {# {$ c9 k/ T, `/ t" \ 3-1 为什么需要使用框架实现自动化测试? 3-10 UnitTest框架之TestCase,TestSuite,TestRunner简介3 A2 {1 F2 @; K 3-11 UnitTest框架之TestSuite,TestRunner自动化测试 3-12 数据驱动框架DDT简介 3-13 数据驱动框架DDT的使用方法 3-14 数据驱动框架DDT实战; 3-2 准备一个被测APP 3-3 工欲善其事必先利其器-自动化测试环境准备 3-4 Android App自动化测试(一) 3-5 Android App自动化测试(二) 3-6 Android App自动化测试(三) 3-7 UnitTest框架之TestFixture简介 3-8 UnitTest框架之TestFixture自动化测试(一) 3-9 UnitTest框架之TestFixture自动化测试(二) 4-1 如何学好Android App API接口测试? 4-10 Fiddler构造HTTP Get请求 4-11 Fiddler构造HTTP Post请求 4-12 Fiddler抓取手机上的网络数据包 4-13 为什么使用PostMan做API接口测试 4-14 工欲善其事必先利其器-PostMan工具准备 4-15 PostMan测试HTTP Get请求 4-16 PostMan测试HTTP Post请求 4-17 数据驱动DDT实现API接口自动化测试简介) 4-18 Python requests测试HTTP中的Get、Post请求 4-19 数据驱动DDT实现API接口自动化测试(一) 4-2 什么是API 4-20 数据驱动DDT实现API接口自动化测试(二); 4-3 抓包神器Fiddler简介 4-4 Fiddler抓包原理解析 4-5 Fiddler修改客户端发出的请求(一) 4-6 Fiddler修改客户端发出的请求(二) 4-7 Fiddler修改服务器端返回的内容 4-8 Fiddler实现会话的过滤、对比及请求的编解码 4-9 Fiddler实现Host的配置 5-1 测试工程师为什么需要掌握持续集成? 5-2 持续集成的概念、流程和意义 5-3 讲解持续集成工具Jenkins3 5-4 Jenkins工具密码的修改 5-5 Jenkins工具的配置说明 5-6 Jenkins工具系统配置和Job配置 5-7 Jenkins工具手动持续集成实战 5-8 Jenkins工具自动化持续集成实战 6-1 Native App自动化测试及Appuim框架介绍 6-2 自动化测试环境、元素识别工具、脚本设计原则-LOVE原则的讲解 6-3 Native App自动化脚本的实现 6-4 Appium自动化测试框架API讲解与案例实践(一) 6-5 Appium自动化测试框架API讲解与案例实践(二) 6-6 Appium自动化测试框架API讲解与案例实践(三) 6-7 Appium自动化测试框架API讲解与案例实践(四) 6-8 Appium自动化测试框架API讲解与案例实践(五) 6-9 Appium自动化测试框架API讲解与案例实践(六) 7-1 Hybrid App自动化测试概要 7-2 Appium基于Sele

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值