博客
关于我
Android APP性能及专项测试(个人整理)
阅读量:482 次
发布时间:2019-03-07

本文共 2014 字,大约阅读时间需要 6 分钟。

Android 性能测试指南

手机测试是移动开发中不可忽视的一部分,而针对 Android 系统的性能测试更是开发者和测试人员需要时常关注的重要环节。本文将从多个维度探讨 Android 性能测试的关键内容。


一、性能测试的分类

Android 性能测试主要分为两大类:

  • 系统(ROM版本)性能测试:这部分主要关注 Android 系统本身的性能表现,包括:

    • 系统启动时间
    • 应用久留时间
    • 系统崩溃情况
    • 应用多任务切换效率
  • 应用(APP)性能测试:这部分则聚焦于应用程序的性能表现,主要包含以下测试项:

    • 资源消耗(CPU、内存、电量等)
    • 和 CPU 相关的性能指标
    • 帧率和帧率波动
    • 渲染效率

  • 二、性能测试中的关键工具

    尽管 Android 系统为开发者提供了丰富的工具,但在性能测试领域仍需要借助一些专业工具来辅助测试:

  • GT(Gravity Toolbox):GT 是一个功能强大的 Android 性能分析工具,能够通过调用 Android 底层的 API 获取各种性能指标,如内存使用、CPU 利用率等。它是性能测试的重要助手。

  • Hprof(内存泄露分析):Hprof 是 Android 系统自带的内存分析工具,能够帮助开发者定位内存泄露问题。通过运行 Hprof 能够获取到 Java 虚拟机(JVM)中占用内存的详细信息。

  • Android Studio:Android Studio 提供了 Memory Monitor 插件,能够实时监控应用的内存使用情况,帮助开发者快速定位内存泄露或资源浪费问题。


  • 三、性能测试的方法

  • 设计测试场景:测试场景可以是手工模拟或自动化测试脚本,例如:

    • 应用启动时间测试
    • 长时间运行测试
    • 加载大数据测试
    • 模拟多任务切换测试等
  • 数据采集:在测试过程中,需要采集大量的性能数据。常用的数据采集方法包括:

    • 使用命令工具(如 adb shell dumpsystopfree 等)
    • 利用系统工具(如 ActivityManager.MemoryInfo)
    • 使用专业的性能监控工具(如 procrank、libpagemap.so)
  • 结果分析

    • 对比不同设备和不同运行环境下的性能表现
    • 数据分析可归纳总结,找出性能瓶颈
    • 结合日志信息定位代码问题
  • 系统场景分析:Android 系统的运行状态主要分为空闲状态、中等规格状态和满规格状态。每种状态下需要分别评估应用的性能表现,尤其是内存和CPU 消耗的情况。


  • 四、关键性能指标

    在性能测试中,以下几个指标是需要重点关注的:

  • 内存使用

    • 空闲时的内存占用情况
    • 内存峰值情况
    • 内存泄露情况
    • 常驻内存测试
  • CPU 利用率

    • 空闲时的 CPU 占用率
    • CPU 峰值利用率
    • 多任务切换效率
  • 电量消耗

    • 屏幕亮度状态下的功耗
    • 各组件(如 GPS、WiFi)使用状态下的功耗
    • 长时间使用中的电量消耗趋势
  • 网络流量

    • 应用首次启动时的网络流量
    • 后台连续运行时的网络流量
    • 高负荷运行时的网络流量峰值
  • 帧率和过度绘制

    • 尤其是那些需要 GPU 加速的界面或应用,可以通过开发者选项启用 GPU �측量,查看过度绘制情况。

  • 五、性能测试的实战技巧

  • 压力测试:使用 monkey 工具对应用进行压力测试,例如:

    adb shell monkey -p包名 --pct-touch 100 --ingore-crashes -s 100 -v 50

    这种测试可以帮助发现应用在极端使用场景下的性能问题。

  • 内存泄露检测:通过 Hprof 工具截获内存快照,使用 MAT 工具分析 Hprof 文件,定位内存泄露问题。

  • CPU 消耗监控:使用 top 命令实时监控应用的 CPU 占用率,查看进程的 CPU 利用情况。

  • 网络流量统计:可以通过命令查看应用的网络流量,例如:

    adb shell cat /proc/1234/net/dev

    通过获取 PID 后查看对应应用的网络流量情况。


  • 六、系统基础知识

    内存管理

    • Android 系统中 Java 内存使用与 Dalvik 的内存管理方式存在显著差异。
    • Dalvik 采用分页策略,通常会设置内存限制。
    • 如果需要使用大内存,可以在 AndroidManifest.xml 中设置 largeHeap="true",但需权衡内存占用与性能的问题。

    CPU 状态

    • user:用户空间的 CPU 利用率
    • `nice**:调整优先级
    • system:内核空间的 CPU 消耗

    关键命令

    • adb shell dumpsys meminfo: 查看应用进程的内存使用情况
    • adb shell dumpsys cpuinfo: 查看应用进程的 CPU 占用情况
    • top: 实时监控系统资源使用情况

    通过以上方法和技巧,开发者和测试人员可以更全面地评估 Android 系统和应用的性能表现,从而发现问题并不断优化系统,提升用户体验。

    转载地址:http://ncrdz.baihongyu.com/

    你可能感兴趣的文章
    Multisim中555定时器使用技巧
    查看>>
    MySQL CRUD 数据表基础操作实战
    查看>>
    multisim变压器反馈式_穿过隔离栅供电:认识隔离式直流/ 直流偏置电源
    查看>>
    mysql csv import meets charset
    查看>>
    multivariate_normal TypeError: ufunc ‘add‘ output (typecode ‘O‘) could not be coerced to provided……
    查看>>
    MySQL DBA 数据库优化策略
    查看>>
    multi_index_container
    查看>>
    MySQL DBA 进阶知识详解
    查看>>
    Mura CMS processAsyncObject SQL注入漏洞复现(CVE-2024-32640)
    查看>>
    Mysql DBA 高级运维学习之路-DQL语句之select知识讲解
    查看>>
    mysql deadlock found when trying to get lock暴力解决
    查看>>
    MuseTalk如何生成高质量视频(使用技巧)
    查看>>
    mutiplemap 总结
    查看>>
    MySQL DELETE 表别名问题
    查看>>
    MySQL Error Handling in Stored Procedures---转载
    查看>>
    MVC 区域功能
    查看>>
    MySQL FEDERATED 提示
    查看>>
    mysql generic安装_MySQL 5.6 Generic Binary安装与配置_MySQL
    查看>>
    Mysql group by
    查看>>
    MySQL I 有福啦,窗口函数大大提高了取数的效率!
    查看>>