Android 性能测试

写在前面:

  测试一道,博主接触的也是皮毛而已,没有接触过rom的测试,下边所说的都是博主接触过的app的性能测试。我只谈方法,少提概念。各位大神不喜勿喷。

概述

  除启动时间外,我们应该做的测试,可能需要在几种状态下来验证app的性能情况。具体的业务形态也可能会更加的复杂,请根据具体的业务来决定需要做什么样的测试。

  1、app空闲状态。

  2、app正常使用状态。

  3、app压力状态下(正常快速操作)的状态。

  4、monkey(随机无须)操作状态下的性能情况。

1、启动时间

  启动时间一般我们会测试三种情况。

    ·首次启动

    ·非首次启动

    ·activity 切换所消耗的时间

  测试方法一般使用两种:

  1)、程序内部打点到logcat,手动操作后获取log日志,来获取相应的时间。

  2)、使用adb 命令来操作,在操作的前后分别记录消耗的时间。(由于adb 操作可能会有延时等可能,此方法并不是很准确)

  ps. 还有一种方式是采用告诉摄像机的方式来做,由于本人没有接触过,不做过多说明,感兴趣的可以自己查一查怎么来做。

2、cpu和内存

  1)、获取cpu数据

adb shell dumpsys cpuinfo | grep $package_name

输出格式为;

45% TOTAL: 18% user + 20% kernel + 6.2% iowait + 0.2% softirq

可取total得值作为整体cpu利用率。

 2)、获取内存数据

adb shell dumpsys meminfo | grep $package_name
或者
adb shell dumpsys meminfo $package_name

直接dumpsys meminfo $package_name 可以看到比较完整的堆,线程,java等级别的内存数据,pss 可以作为内存的参考。

  3)、使用top 同时获取cpu和内存,-d 参数指定采样数据的间隔时间。

adb shell top -d 2输出:PID PR CPU% S  #THR     VSS     RSS PCY UID      Name

名词解释:

  • VSS- Virtual Set Size 虚拟耗用内存(包含共享库占用的内存)
  • RSS- Resident Set Size 实际使用物理内存(包含共享库占用的内存)
  • PSS- Proportional Set Size 实际使用的物理内存(比例分配共享库占用的内存)
  • USS- Unique Set Size 进程独自占用的物理内存(不包含共享库占用的内存)

  一般来说内存占用大小有如下规律:VSS >= RSS >= PSS >= USS

  可以看到,top 命令取出的内存对应是vss 和 rss,其中rss会比pss稍大,如果没有特别严格的要求,只是对比内存是否泄漏上涨等问题,rss也可以作为参考。

3、流量

  1)、通过tcpdump抓包,然后wireshark 解包信息,来获取流量数据。

  2)、通过adb 命令来获取,先获取应用的pid,然后通过/proc/uid_stat/uid/下的文件来读取流量值。此方式会有rom兼容性问题,并不是所有的文件都可以找到这两个文件。

adb shell dumpsys $package_name
adb shell cat /proc/uid_stat/uid/tcp_rcv   -- 下载流量
adb shell cat /proc/uid_stat/uid/tcp_snd   -- 上传流量

  由于tcp_rcv, tcp_snd 的值是一个累加的值,想要获取两次操作间消耗的流量,可以在操作前和操作后分别获取,差值即为期间消耗的流量。也可以每个一段时间做采样,来获取整个过程中的使用情况。

4、帧率

  帧率一定程度上反应的是app在使用中的流畅程度,理想情况是每秒60帧。

  1)、在开发者选项中有个“ GPU呈现模式分析(Profile GPU rendering,计算adb shell dumpsys gfxinfo中的呈现时间)”功能,在开启这个功能后,系统就会记录保留每个界面最后128帧图像绘制的相关时间信息。在开启这个功能后,重新启动APP,滑动页面然后执行adb命令。

adb shell dumpsys gfxinfo $package_name

输出结果中包含这部分数据

Draw Process Execute
1.30 1.25 0.530.63 0.62 1.640.24 0.51 0.440.25 1.76 0.400.25 1.55 0.430.25 0.53 0.370.49 1.51 2.12

Draw: 表示在Java中创建显示列表部分中,OnDraw()方法占用的时间。
Process:表示渲染引擎执行显示列表所花的时间,view越多,时间就越长。
Execute:表示把一帧数据发送到屏幕上排版显示实际花费的时间。其实是实际显示帧数据的后台缓存区与前台缓冲区交换后并将前台缓冲区的内容显示到屏幕上的时间。
Draw + Process + Execute = 完整显示一帧 ,这个时间要小于16ms才能保存每秒60帧。

  2)、通过SurfaceFlinger, 这种方式还没有研究过,过段时间再来补充

 adb shell dumpsys SurfaceFlinger 

5、电量

  对于电量的测试没有什么特别好的方式,可以选择使用物理设备来测试电池的电量情况。

  对于android 5.0 以上的系统,adb命令可以支持获取电量信息。

adb shell dumpsys battery

  输出内容如下:

  AC powered: false
  USB powered: true
  Wireless powered: false
  status: 1            #电池状态:2:充电状态 ,其他数字为非充电状态
  health: 2
  present: true
  level: 55            #电量: 百分比
  scale: 100
  voltage: 3977
  current now: -335232
  temperature: 335      #电池状态
  technology: Li-poly

  如果是采用usb连接手机的话,(手机其实一直是处于充电的状态),这样测试出来的数据也不会很准确。

  如果各位有什么好办法的话,大家可以一起探讨一下。

时间: 2024-11-08 13:48:03

Android 性能测试的相关文章

《Android 性能测试初探》

移动测试站点推荐: https://testerhome.com/ 专项相关帖子推荐: <Android 性能测试初探>合集 移动无线应用专项测试浅谈 公开课: [腾讯课堂]Testerhome 公开课 测试工具 : 场次工具: GT http://gt.tencent.com/download.html Emmagee

Android性能测试--内存

前言: 近阶段都在探索android性能测试方面的东西,其中一个很重要的指标就是内存.对于内存,主要是一些gc是不是及时,或者说一些引用有没有及时释放,有没有导致oom或者内存持续增加导致卡顿,有没有大规模的内存抖动.近期项目由于个别模块大改,所以也就想把性能测试的东西在实际项目中实践进去,本文就是针对实践过程进行一下分享. Memory Monitor: 1.1内测实时显示监控 Memory Monitor是android studio自带的一个非常好用的一个检测内存变化的工具,他能实时监控针

Android 性能测试初探(五)

书接上文 Android 性能测试初探之 GPU(四) 前文说了的一些性能测试项大家可能都听说,接下来我们聊聊大家不常关注的测试项- 功耗 . 功耗测试主要从以下几个方面入手进行测试 测试手机安装目标APK前后待机功耗无明显差异 常见使用场景中能够正常进入待机,待机电流在正常范围内. 长时间连续使用应用无异常耗电现象 功耗测试的方法分为两类,一类为软件测试,一类为硬件测试 我们先说说软件测试,这里我们会聊聊一些DIY的思路,软件测试一般分为2类, 第一种采用市场上提供的第三方工具,如金山电池管家

Android 性能测试——Memory Monitor 工具

Android 性能测试--Memory Monitor 工具 Memory Monitor能做什么? 实时查看App的内存分配情况 快速判断App是否由于GC操作造成卡顿 快速判断App的Crash是否是因为超出了内存 Memory Monitor使用准备 开发者选项可用 USB调试开启 备注:Android Studio的Enable ADB Integration勾选(Tools/Android下). Memory Monitor面板 首先执行adb devices来确保设备可用,然后启动

Android 性能测试初探(六)

书接前文 Android 性能测试初探之功耗(五) 本节聊聊性能测试的最后一项- 流量,当然我所指的性能测试是针对大部分应用而言的,可能还有部分应用会关注网速.弱网之类的测试,但本系列文章都不去一一探讨了 流量测试,同样需要引入几个名词 中等负荷:应用正常操作 高负荷:应用极限操作 流量测试包括以下测试项: 应用首次启动流量提示 应用后台连续运行 2 小时的流量值 应用高负荷运行的流量峰值 应用中等负荷运行时的流量均值 流量测试一般都是用软件来进行的,这里我们一般分为2类: 采用市场提供的第三方

Android 性能测试 【转自渺小】

Android 性能测试,跟 pc 性能测试一样分为客户端及服务器,但在客户端上的性能测试分为 2 类: 一类为 rom 版本的性能测试 一类为应用的性能测试 对于应用性能测试,包括很多测试项,如启动时间.内存.CPU.GPU.功耗.流量等. 但针对 rom 版本的性能测试,一般关注功耗. 先说说应用的性能测试,对于启动时间.内存.cpu 测试大家一般都使用外部提供的第三方工具来辅助测试,如GT.安测试等.这些工具的原理都是基于调用 android 底层的一些 api 来获取到测试所用到的值,当

Android性能测试初探,合集粘贴版,转自Testerhome,卡斯著

Android 性能测试,跟 pc 性能测试一样分为客户端及服务器,但在客户端上的性能测试分为 2 类: 一类为 rom 版本的性能测试 一类为应用的性能测试 对于应用性能测试,包括很多测试项,如启动时间.内存.CPU.GPU.功耗.流量等. 但针对 rom 版本的性能测试,一般关注功耗. 先说说应用的性能测试,对于启动时间.内存.cpu 测试大家一般都使用外部提供的第三方工具来辅助测试,如GT.安测试等.这些工具的原理都是基于调用 android 底层的一些 api 来获取到测试所用到的值,当

Android性能测试 一些适用于Android Studio的代码审查和性能测试工具

导言: Android应用在CPU占用,内存消耗方面的性能指标是影响产品质量的重要因素,由于QQ管家,360手机助手等应用都提供直观的内存消耗,流量监控功能,致使用户比以往更加关注软件的性能,并以此进行软件选用的决策. 目前,已经有很多可以监控android app 性能的工具可以供开发人员使用,如:基于Eclipse插件体系的MAT,其通过生成.hprof文件对内存泄露情况进行排查:内存检测工具APT:提供CPU利用率实时曲线图,方便对比测试内存泄露问题[图0-1] 图 0-1  通过APT实

Android 性能测试——Heap Viewer 工具

Android 性能测试--Heap Viewer 工具 Heap Viewer能做什么? 实时查看App分配的内存大小和空闲内存大小 发现Memory Leaks Heap Viewer使用条件 5.0以上的系统,包括5.0 开发者选项可用 Heap Viewer启动 可以直接在Android studio工具栏中直接点击小机器人启动:  还可以在Android studio的菜单栏中Tools也可以:  如果你不用Android studio,可以在SDK下的tools下的monitor程序

android性能测试工具

Android 性能测试工具- Emmagee:http://www.oschina.net/p/emmagee 和 http://www.oschina.net/news/55476/emmagee-2-0-released Android性能测试工具APT:http://code.csdn.net/news/2819366