Android 性能测试

    一款优秀的应用,必修具有卓越的性能, 超越同类竞品, 同事兼具良好的用户体验.
  1. APP性能维度分析

        APP类型众多, 根据具体类型划分, 性能指标的维度和优先级各不相同. 视频类APP归属于娱乐游戏型的APP,
    因此性能优先测试维度优先级排序为: 流畅度、Crash、内存、流量、响应时长、功耗、CPU.
    
        表征不同维度指标的量化单位如下所示. 比如流畅度是FPS(帧率), 内存是MB等等。
    
                    ----------------------------------------
                            不同维度指标的量化单位              
                    ----------------------------------------
                            |   CPU  --  占有率
                            |   帧率  --  FPS
                            |   内存  --  MB
                    性能    |   电量    --  Jifiess
                            |   启动时长 -- MS
                            |   网络流量 -- KB
                            |   Crash率 -- 百分比
                    ----------------------------------------
    
            因为Android系统底层是由Linux系统改良而来, 不同维度的指标绝大部分都可以通过命令来取不同的指标。
            在IOS平台上,系能的获取, 必须使用Xcode里面的instruments下的相应组件, 不想开源的Android那样灵活, 
        但技术上是可以做到各平台的性能指标获取测试.
    
  2. APP性能指标获取手段

    1. Android系统指标获取
    
        1.1 CPU 
    
            CPU的测试方法分为几类:
            a. 使用Android提供的方法
                adb shell                                           //进入目标设备系统
                dumpsys cpuinfo | grep "packagename" >D:\cpu.txt    //显示并将应用的CPU信息发送到计算机D盘
            b. 使用top命令
                adb shell                                           //进入目标设备系统
                top | grep "packagename" >D:\cpu.txt                //显示并将应用的CPU信息发送到计算机D盘
    
         1.2 内存
    
                内存消耗, 这个测试节点的设计目标是为了让应用不占用过多的系统资源, 且及时释放内存, 保障整个系统的稳定性, 
            当然关羽内存测试, 在这里我们需要引入几个概念: 空闲状态、中等规格、满规格.
    
                空闲状态: 值打开应用后, 点击Home键让应用后台运行, 此时应用处于的状态叫做空闲. 中等规格和满规格指的是
            对应用的操作时间的间隔长短不一, 中等规格时间比较长, 满规格时间较短.
    
                接下来我们说说在内存测试中, 存在很多测试子项, 如下清单所示:
                    a. 空闲状态下的应用内存消耗情况
                    b. 中等规格状态下的应用内存消耗情况
                    c. 满规格装填下的应用内存消耗情况
                    d. 应用内存峰值情况
                    e. 应用内存泄露情况
                    f. 应用是否常驻内存
                    g. 压力测试后的内存使用情况
    
        1.3 电量
    
                功耗测试主要从以下几个方面入手进行测试:
                a. 测试手机安装目标APK前后待机功耗无明显差异
                b. 常见使用场景中能够正常进入待机, 待机电流在正常范围内
                c. 长时间连续使用应用无异常耗电现象
    
                功耗测试的方法分为两类, 一类为软件测试, 一类为硬件测试.
                软件测试一般分为两类:
                    1. 采用市场上提供的第三方工具
                    2. 自写工具进行测试
    
                当然,这里使用另外的三种方法:
                    1. 基于Android提供的PowerManage.WakeLock来进行;
                    2. 稍复杂一点, 功耗的计算 = CPU消耗 + WakeLock消耗 + 数据传输消耗 + GPS消耗 + WiFi连接消耗;
                    3. 通过 adb shell dumpsys battery来获取
    
                接下来说硬件测试, 在这里一般使用万用表或者功耗仪进行测试, 使用功耗仪测试的时候, 需要制作假电池来进行,
                有些不能插拔的手机需要焊接才能进行测试.
    
        1.4 启动时长
                首先是APP的启动时间. 关于应用的启动时间测试分为三类:
                    A. 首次启动     -   应用首次启动所花费的时间
                    B. 非首次启动    -   应用非首次启动所花费的时间
                    C. 应用界面切换   -   应用界面内切所花费的时间
                做启动时间的测试一般分为两类, 一类为使用软件来测试, 一类为使用硬件来测试.
                对于软件测试的方法, 大部分人都比较通晓使用Android提供的DisplayManager来获取Activity的启动时间.
                通过日志过滤关键字Displayed来过滤所有Activity所打印的, 记录日志通过.
    
        1.5 帧率
    
                GPU这个词对于PC性能测试者来说并不陌生, 而今一些第三方软件让GPU在移动端性能测试领域广为人知, 我们对于APP内的GPU测试
            引入几个名词: 过度绘制、帧率、帧方差.
    
                过度绘制是指界面的activity桃姐了多层导致的结果. 帧率是指屏幕刷新率. 帧方差是指屏幕刷新帧间隔方差.
                对于GPU的测试主要包括以下几个测试子项: 界面过度绘制、屏幕滑动帧速率、屏幕滑动平滑度.
                对于过度绘制的测试主要通过人工进行测试, 通过打开开发者选项中的显示GPU过度绘制来进行测试
                (只有Android 4.2及以上版本才具备此功能), 验收标准为:
                a. 不允许出现黑色像素
                b. 不允许存在4X过度绘制
                c. 不允许存在面积超过屏幕1/4区域的3X过度绘制(淡红色区域)
    
                对于屏幕滑动帧速率, 常用手段包括软件测试或硬件辅助测试. 软件测试的方法如下
                1. 手机端需要打开开发者选项中的启动跟踪后, 勾选Graphics和View
                2. 启动SDK工具Systrace插件, 勾选被测应用, 点击Systrace插件, 在弹出的对话框中设置持续抓取时间,在tracetaps下面勾选gfx及view选项
                3. 人滑动界面可以通过节拍来进行滑动或者扫动, 帧率数据会保存到默认路径下, 默认名称为 trace.html
                4. 将trace.html文件拷贝到linux系统下通过命令进行转换, 生成trace.csv文件
    
        1.6 网络流量
    
            我们说的性能测试是针对大部分应用而言的, 可能还有部分应用会关注网速、弱网之类的测试. 流量测试, 同样需要引入几个名词:
                中等负荷:应用正常操作
                高负荷:应用极限操作
    
            流量测试包括以下测试项:
                a. 应用首次启动流量提示
                b. 应用后台连续运行2小时的流量值
                c. 应用高负荷运行的流量峰值
                d. 应用中等负荷运行时的流量均值流量测试
    
            流量测试一般都是用软件来进行的,这里我们一般分为2类:
                a. 采用市场提供的第三方工具来进行测试
                b. 自研工具进行测试
    
            自研工具进行测试一般包含 2 类方法:
                a. 通过tcodump抓包,再通过wireshake直接读取包信息来获得流量
                b. 首先获得被测应用的uid信息(可以通过adbshelldumpsys package来获取),然后在未操作应用之前,我们可以通过查看
    
                adb shell cat/proc/uid_stat/uid/tcp_rcv
                adb shell cat/proc/uid_stat/uid/tcp_snd
                获取到应用的起始的接收及发送的流量, 然后我们再操作应用, 再次通过上述2条命令可以获取到应用的结束的接收及发送的流量, 
            通过相减及得到应用的整体流量消耗。
    
  3. iOS系统指标获取

    对于iOS系统, 只需要一个装了xcode的mac电脑, 取以上指标相对容易. 最新版本是xcode8.0.
    性能测试工具,推荐用下面三个:
    工具一. Instruments, 这个是mac苹果自带的工具, 里面有很多模板, 选择不同的系能模板就可以监听手机App性能了, 但是要注意, 
           没越狱的机器必须注册开发者证书, 或者拿到App企业证书, 这样xcode才能启动App进行性能监控, 也就是说你被测App必须有源代码才行,
           当然你想规避这个问题, 得走百度smallApple破解签名机制
    工具二. GT, 是腾讯开发的一款App, 但是也得在源码层面嵌入GT的SDK
    工具三. SmallApple(https://github.com/hyxbiao/smallapple)
    
        Smallapple是一个开源的IOS自动化测试工具,旨在提供一套完整的iOS自动化测试解决方案,提供针对iOS App的功能和性能测试,
    同时提供类似Android adb、重签名、instruments结果解析、录制回放等工具集。
        Smallapple通过一键式的执行方式, 自动完成App重签名、安装、测试、性能采集(包括CPU、内存、流量等)、Crash检测和结果报告等工作.
    
    Smallapple特性:
        Smallapple致力于以最简单的方式,最小的代价提供给用户使用。
        支持非越狱设备
        不需要依赖源码
        支持Appstore或者第三方下载的App安装测试
        完全的命令行模式
    

摘自《金阳光自动化测试》(http://mp.weixin.qq.com/s?__biz=MzA4MTcyOTEwMw==&mid=2650610972&idx=1&sn=039231e3d364d756bfc9c093f36d4f9d&scene=0#rd)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值