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

本文共 2026 字,大约阅读时间需要 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/

    你可能感兴趣的文章
    multi-angle cosine and sines
    查看>>
    Mysql Can't connect to MySQL server
    查看>>
    mysql case when 乱码_Mysql CASE WHEN 用法
    查看>>
    Multicast1
    查看>>
    mysql client library_MySQL数据库之zabbix3.x安装出现“configure: error: Not found mysqlclient library”的解决办法...
    查看>>
    MySQL Cluster 7.0.36 发布
    查看>>
    Multimodal Unsupervised Image-to-Image Translation多通道无监督图像翻译
    查看>>
    MySQL Cluster与MGR集群实战
    查看>>
    multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
    查看>>
    mysql cmake 报错,MySQL云服务器应用及cmake报错解决办法
    查看>>
    Multiple websites on single instance of IIS
    查看>>
    mysql CONCAT()函数拼接有NULL
    查看>>
    multiprocessing.Manager 嵌套共享对象不适用于队列
    查看>>
    multiprocessing.pool.map 和带有两个参数的函数
    查看>>
    MYSQL CONCAT函数
    查看>>
    multiprocessing.Pool:map_async 和 imap 有什么区别?
    查看>>
    MySQL Connector/Net 句柄泄露
    查看>>
    multiprocessor(中)
    查看>>
    mysql CPU使用率过高的一次处理经历
    查看>>
    Multisim中555定时器使用技巧
    查看>>