工具网络
正文socket
其实想知道一款应用费不费流量,大部分Android4.x版本系统已经能够简单的查看了:tcp
关注流量比较粗的话,看一下上面这里也就够了,但从测试的需求看,这里只能观察到宏观的流量状况,到1天的流量消耗就无法再细化了,若是想知道具体一个业务操做或一段时间内的流量消耗呢?若是想知道应用一次启动的流量消耗呢?这时就该使用前面介绍的工具了。工具
比前面稍微深刻一些,咱们可能须要知道一个业务操做过程内,消耗的流量,及发出请求的流量、收到响应结果的流量各有多少,而且流量的消耗曲线是怎样一个走势。这时就该使用GT,关于GT的基本使用和为何用GT,GT网站有详细的说明,这里只介绍和流量相关的部分。GT提供了一种简单的测试方式,也提供了一个严谨但麻烦的测试方式。测试
1. 先将应用运行起来,而后启动GT并在GT上选中被测应用及被测项NET(流量)。优化
2. 业务操做前,启动数据采集,将会记录选中应用的流量的变化,为了方便统计,能够先把业务操做前发生的流量记录归零。网站
3. 退到应用界面,执行需测试的业务操做。spa
4. 业务操做后,回到GT界面,中止流量数据的采集,查看本次业务操做流量的变化。3d
到这里,从前面一张图咱们已经能够知道一个业务操做过程当中消耗的流量,包括发出请求的流量、收到响应结果的流量、流量消耗曲线是怎样一个走势了。调试
5. 咱们能够保存本次测试结果到文件,以备后面更深刻的分析。
来围观一下这个文件:
用强大的Excel把GT应用里显示的趋势图还原出来不是难事。
若是只是纯粹测测流量,上面的方式也足够了,那咱们为何须要麻烦而严谨的方式呢?这里有两个缘由,一个是仅仅知道流量的大小和趋势,还不足以对后续的流量优化进行明确的指导,即知道流量可能有点多,但不知道该如何着手优化。另外一个是缘由是弥补上面方式的一个不足:有的应用,使用了本地socket和手机里其余进程产生交互,有时Android系统会把这种手机内部的socket传输的数据量也计算到应用消耗的流量里(好比常见的视频应用很多都有这个问题),此时上面的方式就显得不够准确了,要得到真是网卡上发生的流量,就须要抓包这种终极方法了。注意掌握这种方法的前提是您得先掌握基础的TCP和HTTP网络知识。
手机抓包是针对手机的网卡,因此这种方式没法单独抓一个应用的包,须要后续将归属于应用的包分析出来,而为了后续分析减小工做量,测试时候应尽可能把其余能消耗流量的应用都关了。Android手机的抓包是Wireshark提供的实现,GT上面作了封装,使手机能够没必要连着PC便可抓包,方便在室外测试的场景。
1. 先从GT启动抓包。
2. 以后仍是执行测试的业务操做。
3. 被测业务操做结束后,点击stop,即中止抓包,并把抓包文件保存在对应的目录中。
将抓到包文件导入到PC,用Wireshark便可分析抓包文件。关于Wireshark的使用,和PC上的使用没有区别,请你们自行在网上搜索,这里仅对使用Wireshark的要点提示下:
(1)咱们最早须要知道咱们的应用发出了哪些请求,对应了上行流量,能够在Wireshark左上角【过滤】框输入"http"或"tcp"(若是确认过被测应用都是http请求,就只须要按http过滤),确认测试场景GET和POST的请求类型和个数(过滤结果可按【Info】分类更方便统计)。
(2)在具体请求上能够右键“follow tcp stream”,等同于过滤条件tcp.stream eq xx,这样能够过滤出和它在同一个TCP流的消息。
(3)过滤条件出来后再点击【统计】->【概要】,对应Bytes栏【显示】列的数据即为流量。
(4)经过对包的过滤分析,咱们天然就能够获得流量的大小,产生流量的类型和缘由,请求的频率,这样就可以对后续的流量优化进行指导了。
(5)更谨慎的,抓包和GT采集流量数据能够相互对照,避免分析时有所遗漏。