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)

### Android性能检测的方法与工具 Android性能检测是开发过程中非常重要的环节,它可以帮助开发者优化应用的运行效率和用户体验。以下是几种常见的性能检测方法和工具: #### 1. 静态代码分析工具 Android Lint 是一种静态代码分析工具,可以扫描和检查Android工程中可能存在的问题[^1]。通过发现代码中的潜在错误或不良实践,Lint 工具可以在应用发布前保证程序质量。在Android Studio中,Lint工具已经内置,开发者可以通过右键菜单选择`Analyze -> Inspect Code`来启动该工具。 #### 2. 启动时间测试 使用`adb shell am start`命令可以测量应用的启动时间[^2]。通过这种方式,开发者可以获得应用从启动到进入前台的时间数据,从而评估应用的启动性能。 #### 3. 内存占用监控 Android Studio 提供了Memory Profiler工具,可以实时监控应用的内存使用情况[^2]。通过Memory Profiler,开发者能够观察内存分配、垃圾回收等行为,进而识别内存泄漏或其他内存相关的问题。 #### 4. 卡顿分析工具 SysTrace 和 Looper 监听器是常用的卡顿分析工具。SysTrace 可以帮助开发者快速定位UI掉帧和线程调度问题,适合旧版Android设备和简单性能问题的诊断[^3]。而Looper监听器则可以在代码层面捕获主线程阻塞的情况,从而避免卡顿现象。 #### 5. 实时性能监控工具 Emmagee是一款实用的性能监控工具,适用于指定的Android App[^4]。它可以监控CPU、内存、网络流量、电池电流等指标,并提供自定义数据收集间隔的功能。此外,Emmagee还支持将测试数据自动发送至指定邮箱,便于后续分析。 #### 6. 浮点运算性能测试 Linpack 是一款用于测试Android设备浮点运算性能的应用程序[^5]。它可以评估单线程和多线程的浮点运算能力,帮助开发者了解设备的核心协作效率。 #### 7. 跨平台复杂性能分析 Perfetto 是一款高级性能分析工具,适合需要深度性能分析和跨平台调优的开发者[^3]。它可以分析复杂的性能瓶颈,例如内存分配、磁盘I/O、GPU调度等,特别适合现代Android设备和多任务场景。 ```python # 示例:使用ADB测量应用启动时间 import os package_name = "com.example.app" activity_name = "com.example.app.MainActivity" command = f"adb shell am start -W {package_name}/{activity_name}" output = os.popen(command).read() print(output) ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值