Android性能测试 | 启动时间篇

背景介绍

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

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

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

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

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

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

Android应用性能测试通常包括:启动时间、内存、CPU、耗电量、流量、流畅度等。我们将在这个月陆续为大家简单介绍一下每个测试点的常见测试方法及简单的定位思路,仅供参考。之前两周内,我们为大家介绍了启动时间内存&CPU内存泄漏&卡顿"测试方法,本期我们介绍Android性能测试白皮书的最后一章——流量、电量、弱网环境的测试方法。

耗电

耗电操作主要包含CPU、WIFI、流量、传感器(GPS NFC),以及应用屏幕wakelock等操作。我们更多的是关注应用本身是否劫持了系统的屏幕wakelock操作,没有及时释放屏幕wakelock,导致耗电。

电量测试监控方法可以简单的从设置->电池->使用情况中查看,手机中的每个部件运行时对应的能耗值都放在power_profile.xml文件中,而系统的设置->电池->使用情况中,统计的能耗使用情况也是以power_profile.xml的value作为基础参数的。通过命令监控app个部件的使用时长,然后结合设备耗电的基础参数进行加权计算,即可得到app使用的耗电量。至于更详细的耗电量测试,可以专门把耗电这一性能指标拿出来,专项测试。

流量

针对流量测试,首先要搞明白什么是流量?我们的收集通过运营商的网络访问Internet,运营商替我们的手机转发数据报文,数据报文的总大小(字节数)即流量,这里的数据报文包含手机上下行的报文。由于数据报文采用IP协议传输,运营商计算的流量一般是包含IP头的数据报文大小。

下面就介绍两种流量的测试方法:

1、tcpdump+Wireshark抓包测试法

流量测试最直接的方法就是抓包。在App运行期间,把手机收发的所有报文度抓取下来,再计算收发报文总大小,即App消耗的流量。但是如果我们需要测试某一个App消耗的流量需要禁用其他APP的连网权限。

1)限制其他app的联网权限,因为有些App的进程是常驻后台的,即使不运行,也会有网络报文。可以借助一些手机管家软件禁用网络。

2)手机上抓包,下载tcpdump,手机连接电脑,获得root权限。

3)将 tcpdump (forAndroid)上传至Android手机上,在命令提示符窗口中输入命令:adbpush     /data/local/tcpdump

4)给 tcpdump 增加可执行权限

adb shell

su

chmod 6755 /data/local/tcpdump

5)启动抓包,使用命令/data/local/tcpdump-v -i any -s 0 -w /sdcard/zhangyu.pcap

Got后面的数字表示当前抓到的包的数量。如果有变化,表示有网络流量。

6)导出抓包结果adb pull /sdcard/zhangyu.pcap

7)用Wireshark打开刚才的抓包结果,点击StatisticsàSummary,流量的数值为Bytes一行的Displayed一栏。

2、使用安卓自身提供的TCP收发长度统计功能

一般APP和后台服务器之间的通信都是基于TCP的,所以我们可以利用此统计来测试我们APP的流量,而且安卓提供的该统计功能是按照APP纬度来统计的,不需要禁止其他app的连网权限。

操作步骤如下:

1)使用ps命令查看所测app的uid,例如贴吧的uid为10000+191=10191

adbshell

su

ps |grep com.baidu.tieba

2)进入/proc/uid_stat/1191目录,cat获取当前tcp_snd和tcp_tcv的初始值

3)此时可以开始测试了,测试完成后再次获取tcp_snd和tcp_tcv的值

4)所测时间内的流量计算

发送流量:tcp_snd_new-tcp_snd_old=2032150-893233=1128917bytes

接收流量:tcp_rcv_new-tcp_rcv_old=18648825-1350829=17297996bytes

弱网环境

在进行手机应用测试时,经常需要模拟网络不稳定的状态下对测试执行的影响。调研了几款工具,可以通过手动设置数据丢包率,以及网络时延等参数,模拟弱网环境。如Charles、clumsy、netlimite、atc等。

1、几款工具的比较

1)Charles、Fiddler这样的软件只支持短连接,也就是说只有走短连接的接口才生效,长连接的不能使用。

缺点:不支持长连接

2)Atc工具和苹果自带的ios developer (开发者选项)的使用方法是一样的,需要在手机端操作,atc工具需要搭建一系列环境后,手机访问一个ip地址就能看见控制页面,然后修改相应的参数即可。

缺点:不宜操作,每次修改网络场景需要把被测app置于后台,切换到网络模拟界面改参数,然后再切回被测app。影响被测app的操作连贯性。

3) clumsy、netlimite等这类软件易安装,安装在电脑端,手机通过共享网络连接电脑,实时的将系统接收和发出的网络数据包拦截下来,人工的造成延迟,掉包和篡改操作后再进行发送。

4)购买一些仪器,在全公司范围搭建一个弱网环境。

缺点:搭建成本高,需要有专门的技术人员支持。

综合比较以上四类工具,第三类推荐在日常测试过程中使用。下面就拿clumsy举例,介绍一下环境的搭建及使用。

2、clumsy环境搭建及使用

1)环境准备

windows笔记本,clumsy安装文件,共享网络

2)安装clumsy

clumsy免安装程序,下载完成后,直接点击exe可执行文件即可。

下载地址:https://pan.baidu.com/s/1pLAjm2J密码: mk8i

3)创建共享网络

a、电脑连接网线,打开网络和共享中心

b、点击本地连接---属性---共享---勾选第一个,并选择一个家庭网络连接(此时本地连接会显示共享的字样)

c、cmd--输入命令(启动cmd,最好用管理者身份启动)

netshwlan set hostednetwork mode=allow ssid=zhangyu1 key=123456789(ssid和key对应共享网络的名称和密码,key不能低于8位)

netshwlan start hostednetwork

至此手机就会搜索到电脑共享的网络,然后连接即可。

3、clumsy参数说明及使用

界面如下:

clumsy

首先根据用户选择的 filter 来拦截指定的网络数据。在 filter

中可以设定你感兴趣的协议(tcp/udp),端口号,是接收还是发出的端口。你也可以通过简单的逻辑语句来进一步缩小范围。当 clumsy

被激活时,只有符合这些标准的网络数据会被进行处理,而你不感兴趣的数据仍然会由系统正常传输。

当被 filter 的网络数据包被拦截后,你可以选择 clumsy 提供的功能来有目的性的调整网络情况:

1.   延迟(Lag),把数据包缓存一段时间后再发出,这样能够模拟网络延迟的状况。

2.   掉包(Drop),随机丢弃一些数据。

3.   节流(Throttle),把一小段时间内的数据拦截下来后再在之后的同一时间一同发出去。

4.   重发(Duplicate),随机复制一些数据并与其本身一同发送。

5.   乱序(Out of order),打乱数据包发送的顺序。

6.   篡改(Tamper),随机修改小部分的包裹内容。

类似模拟网络环境的软件很多,大家可以针对自己的情况选择,不要找环境搭建过于繁琐的工具,简单易用就好。

定位常用软件

在发现问题后,定位分析时,可以借助以下常用软件。

1、traceview使用简介

TraceView 是 Android 平台特有的数据采集和分析工具,它主要用于分析 Android 中应用程序的 hotspot,可以方便的查看线程的执行情况,某个方法执行时间、调用次数、在总体中的占比等,从而定位性能点。

使用方法:

使用Android studio->Android Device Monitor->进入DDMS->点击开始按钮

Case:在微粉首页上下滑动,滑动过程中等待图片、视频加载完成 。

点击结束按钮出现结果如下(划分为上下两个面板,即Timeline Panel(时间线面板)和Profile Panel(分析面板):

Timeline Panel又可细分为左右两个部分:

(1)左边显示的是测试数据中所采集的线程信息。

(2)右边所示为时间线,时间线上是每个线程测试时间段内所涉及的函数调用信息。

(3)可以在时间线中移动时间线纵轴。纵轴上边将显示当前时间点中某线程正在执行的函数信息。

Profile Panel(分析面板)

按调用次数由高到低排列结果如下图

按照占用CPU时间从高到低排列结果如下图:

2、Systrace使用简介

Systrace是Android4.1中新增的性能数据采样和分析工具。它可帮助开发者收集Android关键子系统(如surfaceflinger、WindowManagerService等Framework部分关键模块、服务,View系统等)的运行信息,从而帮助开发者更直观的分析系统瓶颈,改进性能。Systrace的功能包括跟踪系统的I/O操作、内核工作队列、CPU负载以及Android各个子系统的运行状况等。

使用方法:

使用Android studio->Android Device Monitor

进入DDMS->打开微粉APP->点击开始systrace

设置参数->点击OK

case:在微粉首页滑动列表,滑动过程中需等待图片视频加载完成

在chrome地址栏中输入chrome://tracing 点击load打开trace.html文件

通过工具抓取的数据用浏览器打开后显示如下:

查看Frames这一行,可以看到这里展示了被绘制出来的每一帧,并且用绿、黄、红三颜色来区分它们在绘制时的性能

选一个红色帧在底部给出Alter信息:

展开“Inflation during ListViewrecycling”这条警告(警告部分的总耗时155毫秒,远高于了我们对保障60fps所需的16毫秒绘制时间):

选择这一帧中最长的一块,对其进行进一步分析整个区块耗时98毫秒,而在这之中CPU只消耗了65毫秒的时间去运算

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,378评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,356评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,702评论 0 342
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,259评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,263评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,036评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,349评论 3 400
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,979评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,469评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,938评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,059评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,703评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,257评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,262评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,485评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,501评论 2 354
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,792评论 2 345

推荐阅读更多精彩内容