博客
关于我
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/

    你可能感兴趣的文章
    MySQL“被动”性能优化汇总
    查看>>
    MySQL、HBase 和 Elasticsearch:特点与区别详解
    查看>>
    MySQL、Redis高频面试题汇总
    查看>>
    MYSQL、SQL Server、Oracle数据库排序空值null问题及其解决办法
    查看>>
    mysql一个字段为空时使用另一个字段排序
    查看>>
    MySQL一个表A中多个字段关联了表B的ID,如何关联查询?
    查看>>
    MYSQL一直显示正在启动
    查看>>
    MySQL一站到底!华为首发MySQL进阶宝典,基础+优化+源码+架构+实战五飞
    查看>>
    MySQL万字总结!超详细!
    查看>>
    Mysql下载以及安装(新手入门,超详细)
    查看>>
    MySQL不会性能调优?看看这份清华架构师编写的MySQL性能优化手册吧
    查看>>
    MySQL不同字符集及排序规则详解:业务场景下的最佳选
    查看>>
    Mysql不同官方版本对比
    查看>>
    MySQL与Informix数据库中的同义表创建:深入解析与比较
    查看>>
    mysql与mem_细说 MySQL 之 MEM_ROOT
    查看>>
    MySQL与Oracle的数据迁移注意事项,另附转换工具链接
    查看>>
    mysql丢失更新问题
    查看>>
    MySQL两千万数据优化&迁移
    查看>>
    MySql中 delimiter 详解
    查看>>
    MYSQL中 find_in_set() 函数用法详解
    查看>>