Android 中流量、电量、弱网环境怎么测?
在使用安卓机时,可能又是会经常感受到以下问题:
1、应用后台开着,手机很快没有电了---应用耗电大;
2、首次/非首次启动应用,进入应用特别慢---应用启动慢;
3、使用使用过程中,越来越卡---CPU能力不足/内存泄漏;
4、应用页面卡顿---帧率较低,页面卡顿
所以对安卓要进行一些性能测试,不然将会直接影响用户体验
android应用性能测试通常包括:启动时间、内存、CPU、耗电量、流量、流畅度
一、耗电
耗电操作主要包括cpu、wifi、流量、传感器,以及应用屏幕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 <LocalPath of tcpdump> /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 <LocalPathof PcapFile >
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毫秒的时间去运算
Android 中流量、电量、弱网环境怎么测?相关推荐
- App-IOS与Android弱网环境测试
弱网环境下App的功能是否正常使用,是否会发生Crash的等情况? 1.IOS ios系统一般自带弱网环境测试,可以通过设置各种网络环境,模拟弱网环境,如3G,wifi,very bad Networ ...
- 如何使用弱网环境来验证游戏中的一些延迟问题
关于弱网 在当今移动互联网盛行的时代,网络的形态除了有线连接,还2G/3G/Edge/4G/Wifi等多种手机网络连接方式.不同的协议.不同的制式.不同的速率,使移动应用运行的场景更加丰富. 从测试角 ...
- android弱网模拟路由器,Mac 下使用命令行模拟弱网环境
做音视频开发,我们经常需要模拟弱网环境,观察 app 在弱网下的表现,比如,丢包.延迟.抖动.限制带宽条件等,Mac 系统有一个弱网工具 APP,叫做 "Network Link Condi ...
- 网易云信即时通讯推送保障及网络优化详解(三):如何在弱网环境下优化大数据传输
对于移动 APP 来说,IM 功能正变得越来越重要,它能够创建起人与人之间的连接.社交类产品中,用户与用户之间的沟通可以产生出更好的用户粘性. 在复杂的 Android 生态环境下,多种因素都会造成消 ...
- IM 推送保障及网络优化详解(三):如何在弱网环境下优化大数据传输?
对于移动 App 来说,IM 功能正变得越来越重要,它能够创建起人与人之间的连接.社交类产品中,用户与用户之间的沟通可以产生出更好的用户粘性. 在复杂的 Android 生态环境下,多种因素都会造成消 ...
- 手机怎么模拟弱网_手游测试之模拟弱网环境测试
为什么要做弱网环境测试? 其实现在不论是端游.手游还是页游,在国内范围来说,我们一般情况下网速都不算差了.而且随着5G的逐渐普及,相信网速对于玩家的制约会更小,玩家的体验也会有一个质的变化. 那我们为 ...
- Facebook ATC弱网环境搭建
本文记录如何利用facebook ATC使用搭建一个弱网环境,与前一篇Dash net(网速控制,可变)类似,但是这个弱网环境不能动态变化,相比DASH_NET好处在可以连接多个设备,分别控制网速 为 ...
- 弱网环境搭建之 Linux tc iptables 详解
弱网环境搭建之 Linux tc 详解 0. 背景 1. 工具选择 2. 搭建流程 2.1 Linux tc 简介 2.2 弱网搭建思路 2.3 完整代码展示 0. 背景 笔者有一个需要搭建弱网环境来 ...
- Android抓包-Charles弱网环境模拟
移动端产品使用场景多变,如进地铁.上公交.进电梯等,用到的网络并非都是流畅5G或者WIFI,有可能使用到4G.3G.2G等网络.因此应用开发过程中需要充分考虑到弱网环境下的客户端展示效果,从而提升用户 ...
最新文章
- mysql压缩配置_MySQL压缩版安装配置
- python写文件读文件-python--文件流读写
- ALGO-117_蓝桥杯_算法训练_友好数
- 巧用linux服务器下的/dev/shm/,避开磁盘IO不给力!
- VTK:可视化之NamedColors
- linux常用命令(用户篇)
- adf4350配置_配置MySQL以进行ADF开发
- iview 输入框_使用iview框架,如何进行输入框或者按钮的关联验证
- python计算累计收益率的函数,在Python中计算累积密度函数的导数
- ab plc软件_从GuardLogix 和 CIP Safety认识安全PLC控制器
- python有趣的代码-介绍wtfPython—Python中一组有趣微妙的代码【收藏】
- AWS 挂了 11 个小时:因多处光缆被挖断
- JDK源码学习之 java.util.concurrent.automic包
- 单元格中指定内容标红_你一直都不知道,键盘上“F4”在office中的强大功能
- 谷歌多账号 桌面快捷方式
- Python语言的适用范围
- rto净化效率计算公式_rto废气处理原理
- IPC Send timeout detected模拟和总结
- 程序员必学电脑计算机专业英语词汇 04 (200 单词)
- android安装并启用新输入法