Android应用性能测试

Android用户也许会经常碰到以下的问题:

1)应用后台开着,手机很快没电了——应用耗电大

2)首次/非首次启动应用,进入应用特别慢——应用启动慢

3)应用使用过程中,越来越卡——CPU能力不足/内存泄露

4)应用页面卡顿——帧率较低、页面卡顿

因此,对开发的Android应用,必须对其进行性能测试,不然将会直接影响用户体验。

一.启动时间

启动时间同样也遵循2-5-8原则,所谓2-5-8原则就是当用户能够在2秒以内启动应用进入第一帧,会感觉系统的响应很快;当用户在2-5秒之间得到响应时,会感觉系统的响应速度还可以;当用户在5-8秒以内得到响应时,会感觉系统的响应速度很慢,但是还可以接受;而当用户在超过8秒后仍然无法得到响应时,会感觉系统糟透了,或者认为系统已经失去响应,而选择退出这个app或者卸载该app。因此启动时间对用户的使用行为起到至关重要的作用。

这里启动时间分两种情况:首次启动(冷启动)和非首次启动(热启动)应用所花费的时间。

在测试app启动时间之前,我们先来看看这张经典的Activity生命周期图,如图1。

图1 Activity的生命周期

流程简介:

1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。

2.当前Activity被其他Activity覆盖或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。

3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。

4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。

5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。

6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。

7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。

从Activity的生命周期流程图,我们可以看出启动时间即onCreate()方法开始执行到onResume()方法执行结束的时间,也就是activity完全启动的时间。

那么怎么获取该时间?

方法一:通过logcat中ActivityManager的相关数据获取。

1)ddms设置过滤条件“by Log Tag”为:ActivityManager;

2)启动app,查看通过DDMS抓取到的log。

以2345王牌浏览器app为例,可查看获得log如下:

除了通过DDMS抓取外,还可以通过adb logcat命令来获取。

>adb logcat -d -s ActivityManager|findstr "Displayed">D:\log.txt

其实两者获取到的信息是一样的(这里演示时非同一次启动,因此启动时间有点差异)。只是DDMS抓的通常是main缓存中的,也就是应用程序打印的日志文件,可以实时查看。而通过命令抓取的话,只能重定向到文件,抓完之后才能查看。

方法二:adb命令获取,在前面的博文常用的adb命令中对adb shell也有些许介绍。

1)获取app包名和类名

>adb shell dumpsys activity|findstr mFocusedActivity

2)获取启动时间

>adb shell am start -W –n <packageName>/<activityName>

通过比较,可以发现这两种方法获取到的时间是一样的。(注意:这两种方法都是同一次启动,非同一次启动,会有差异)

对于这几个时间,这里引用知乎作者Gracker答案中的结论:“如果只关心某个应用自身启动耗时,参考TotalTime;如果关心系统启动应用耗时,参考WaitTime;如果关心应用有界面Activity启动耗时,参考ThisTime。”

二.性能测试工具——Emmagee

Emmagee是一款简单易用的Android性能检测小工具,主要用于监控单个App的CPU,内存,流量,启动耗时,电量,电流等性能状态的变化。

1)通过官方网站安装(个别机型目前不支持),设置“应用退出后台后仍可监听”便于自动化测试。

2)通过adb命令在sdcard目录下pull出测试结果csv文档(也可通过app配置邮箱,发送到自己的邮箱)。

3)查看测试结果csv文档,这里以百度浏览器app为例,测试结果如下。

注释:

已知部分不支持的机型可在此查阅:https://github.com/NetEase/Emmagee/wiki/Some-devices-are-not-supported

电流: 小于0是放电大于0是充电

启动时间: 为空是应用已启动或者未搜集到启动时间

N/A: 不支持或者数据异常

4)利用excel的功能生成统计图,方便分析。

该工具测试的结果可作为测试参考,另外对于帧率还可以用FPS Meter工具进行测试。

三.利用adb命令监测app相关性能信息

在这里就不一一演示了。

//内存使用率
1.adb shell dumpsys meminfo <pakagename>
2. 通过android提供的API来测试(ActivityManager.MemoryInfo())

//CPU占有率
1.adb shell top
2.adb shell dumpsys cpuinfo

//功耗
1.adb shell dumpsys battery
2.通过android本身的API来测试(ProwerManager.WakeLock)

//查看总体的CPU占用
# cat /proc/stat

//查看进程的CPU占用
# cat /proc/<PID>/stat

//查看总体的RAM
# cat /proc/meminfo | head -n 4

//查看进程的RAM
# dumpsys meminfo <packagename>
# dumpsys meminfo <PID>

//查看进程的当前RAM
# procrank

//开机后的总流量(字节数)
# cat proc/self/net/dev

//上传流量/上行流量
# cat /proc/uid_stat/2000/tcp_snd

//下载流量/下行流量
# cat /proc/uid_stat/2000/tcp_rcv

四.稳定性测试/压力测试

在前面的博客常用的adb命令中介绍过adb shell monkey来对app进行压力测试,请参考。

五.其他

在这里推荐两个云测平台:

1.itestin

2.腾讯优测

时间: 2024-09-29 23:31:00

Android应用性能测试的相关文章

Android 终端性能测试——内存篇

前言 做Android QQ性能测试时,内存测试中遇到不少困惑,"各种"内存术语,到底什么意思,怎么获取,这里总结一下. 进行的内存测试主要有两个方面,一,OOM的发现和定位,二,同历史版本或竞品的对比测试.关于oom可以用MAT进行分析,具体分析方法参见susanwu在km上的文章<如何使用Memory_Analyzer分析内存泄漏>.下面主要总结一下Android性能测试中常用的方法及解释 一:running services"查看service进程内存 从A

Android应用性能测试(客户端-服务端)平台实现

Android应用性能测试(客户端-服务端)平台实现 东海陈光剑 2014年5月23日 2:01:05 开源项目代码: https://github.com/universsky/EmmageePlus (基于Emmagee) https://github.com/universsky/EmmageePlus/blob/master/src/com/netease/qa/emmagee/service/EmmageeService.java /* * Copyright (c) 2012-201

【转】Android APP性能测试

性能测试是通过自动化的测试工具模拟多种正常.峰值以及异常负载条件来对系统的各项性能指标进行测试.而app的性能也越来越被关注,下面我们就介绍一下app的性能测试方法.但是性能测试是参考值,不管什么测试方法都不可能精确地测试出被测试对象的真实性能指标,这一点要事先明确.一.内存泄露Android内存抓取步骤准备:电脑需安装android adb 并将adb的目录加入到系统环境变量中,通过电脑命令窗口来查看内存变化状况,并记录内存数值步骤:a.adb devices -l 查看手机设备是否连接上,如

转:Android应用性能测试

Android用户也许会经常碰到以下的问题: 1)应用后台开着,手机很快没电了——应用耗电大 2)首次/非首次启动应用,进入应用特别慢——应用启动慢 3)应用使用过程中,越来越卡——CPU能力不足/内存泄露 4)应用页面卡顿——帧率较低.页面卡顿 因此,对开发的Android应用,必须对其进行性能测试,不然将会直接影响用户体验. 一.启动时间 启动时间同样也遵循2-5-8原则,所谓2-5-8原则就是当用户能够在2秒以内启动应用进入第一帧,会感觉系统的响应很快:当用户在2-5秒之间得到响应时,会感

Android App性能测试

1.性能测试 启动时间,主要测试App在启动过程中的耗时情况 CPU, 主要测试App在使用过程中的CPU占比率 流量,主要测试App在使用过程中对流量的消耗情况 电量,主要测试App在使用过程中对电量的消耗情况 内存,主要测试 App在使用过程中对内存的消耗,验证使用过程中无内存泄露的情况 FPS(每秒的帧数),衡量流畅度,通过观察,可以发现流畅度异常的情况. 过度渲染,影响流畅度的一个方面就是过度渲染,通过过度渲染的测试,可以发现一些异常的情况 . 2.性能测试环境准备 Android SD

android app性能测试工具GT源码获取以及部署

GT是TMQ(腾讯移动品质中心)研发的一款app性能测试工具.官方地址:http://gt.qq.com/index.htmlgithub地址:https://github.com/Tencent/GT运行工具:eclipse ,我用的专门集成android环境的版本如下图eclipse下载地址:链接: https://pan.baidu.com/s/1csbzl0 密码: 3633 第一步 去github clone代码在cmd命令行中进入到事先创建好的项目存放文件夹下执行 git clone

Android移动客户端性能测试浅谈——电量

本文由作者张迎贞授权网易云社区发布. APP性能测试除了需要监控PCU.内存占用.流量等,还需要获取APP的电量数据,测试在可接受范围内,避免APP出现过度消耗电量的现象.手机有很多硬件模块:CPU,蓝牙,GPS,显示屏,Wifi,射频(Cellular Radio)等,在手机使用过程中,这些硬件模块可能处于不同的状态,譬如WIFI打开或关闭,屏幕是亮还是暗,CPU运行或休眠. 硬件模块在不同的状态下的耗电量是不同的.Android在进行电量统计时,并不是采用直接记录电流消耗量的方式,而是跟踪硬

移动端 - Android客户端性能测试常见指标

rom版本的性能测试 一般关注功耗(不过 rom 版本的功耗测试跟应用的功耗测试会有所差异,当然只是用例设计方面的差异,工具仍然采用安捷伦电源仪进行) 应用的性能测试 包括很多测试项,如启动时间.内存.CPU.GPU.功耗.流量等. 对于启动时间.内存.cpu 一般都使用外部提供的第三方工具来辅助测试,如GT.安测试,这些工具的原理都是基于调用 android 底层的一些 api 来获取到测试所用到的值,当然我们也可以采用其他方法,如使用 android 本身提供的一套 adb 即可完成上述测试

安卓性能测试工具-GT,安测试

GT: 是腾讯出品的一款APP的随身调测平台,它是直接运行在手机上的“集成调测环境”(IDTE,  Integrated  Debug&Test  Environment).利用GT,仅凭一部手机,无需连接电脑,您即可对APP进行快速的性能测试(CPU.内存.流量.电量.帧率/流畅度等等).开发日志的查看.Crash日志查看.网络数据包的抓取.APP内部参数的调试.真机代码耗时统计等等:更重要的是,您可以在任意真实场所.任何时候做如上的系列事情,这就是“APP的场测”.如果您觉得GT提供的功能还