注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

网易杭州 QA Team

务实 专注 分享 做有态度的QA

 
 
 
 
 

日志

 
 

移动端流量测试基本方法  

来自成艳艳   2016-03-29 09:30:45|  分类: 默认分类 |举报 |字号 订阅

  下载LOFTER 我的照片书  |

                     

移动互联产品可以随时随地的使用,这个特性带来便利的同时也带来了问题,目前的一段时间内移动网络的带宽还是比较有限的,流量也需要付费,用户自然会关心app使用了多少流量。一些不好的app设计或者缺陷,比如频繁在后台联网去服务端获取信息,可能带来意外的流量,导致用户卸载app或引起投诉。

另外流量的减少不只是减少用户的流量消耗,通常也会因为更少的网络传输带来更好的性能和响应。在移动产品测试中,很有必要对app使用的流量进行度量。大致来说主要是用户操作直接导致的流量和后台即在用户没有直接使用的情况下的流量消耗。

后一种情况在目前的android系统更易出现,目前android的消息推送机制不是借助统一的管道,而是各个app定时启动后台进程到自己的服务端去询问是否有新消息,有就拉去到客户端,而这个询问本身就会带来流量的消耗。

以下方法中的实践数据皆来自网易云课堂和中国大学Mooc。

 

对于androidapp有一些特有的流量测试的方法。

Android系统自带了统计功能。通过直接读取android系统上的两个文件的内容:

Proc/uid_stat/{UID}/tcp_sndtcp_rcv,其中UID是每个app安装时分配的唯一编号用于识别该apptcp_snd中的数据表示法术的数据累计大小,单位是字节,tcp_rcv表示接收到的数据累计大小。

通过adb命令进入shell可以获取到这些数据。

首先通过包名获取appPID

移动端流量测试基本方法 - 网易杭州QA - 网易杭州 QA Team

          

再访问/proc/{PID}/status文件查找app对应的UID,再查看上述的2个文件:

移动端流量测试基本方法 - 网易杭州QA - 网易杭州 QA Team

 

移动端流量测试基本方法 - 网易杭州QA - 网易杭州 QA Team

 

这个做法也是很多手机安全软件的做能比较简单的给出各个app的流量消耗情况,不过这个方法没有其他维度的区分,只有统计总数据。

 

还能通过系统API来获取基本的流量数据。TrafficStats类提供了多个方法获取不同角度的流量数据:

移动端流量测试基本方法 - 网易杭州QA - 网易杭州 QA Team

 

还可以在app内部往来访问的接口代码加上相关的统计功能来获取流量的数据。

 

移动端流量测试基本方法 - 网易杭州QA - 网易杭州 QA Team
 

 

以上代码中getContentLength获取了本次响应的数据量并在日志打印了出来。

实际应用中很多app会将借口访问的功能做一些封装,上层应用可以复用,针对这些情况可以在借口访问的代码封装中插入流浪统计的功能,可以详细区分每个接口的访问次数和数据量。

但是这种方法统计不到一些系统的DNS等流量,还有不使用接口封装的模块产生的流量会被遗漏。

 

还有一些通用的流量测试方法主要是在手机上抓包或通过网络代理来统计。

手机抓包

常用的在手机上抓包的工具是wiresharkliunx下的tcpdumpTcpdump抓包需要root权限,ios的话需要越狱。

在一台root手机上先下载tcpdump可执行文件,通过adb push命令上传到手机上。一般选择/data/local目录,其他目录下的权限问题较多。然后可以进入tcpdump所在目录执行命令抓包了:

 

移动端流量测试基本方法 - 网易杭州QA - 网易杭州 QA Team

 

下方这个got的数据会随着访问不断变化。

关于tcpdump的命令可以参考命令手册,不再展开,上面的几个参数的含义:

-s 0:默认抓取长度是68字节,加上-s 0过后可以抓到完整的数据包。

-w ./t1.pcap:将抓到的内容存入t1.pcap文件。

-v:在抓包过程中显示抓到包的数量。就是got旁的数据。

抓包结束后,将t1.pacp传到电脑用pcap分析工具进行查看和分析。

移动端流量测试基本方法 - 网易杭州QA - 网易杭州 QA Team

 

通过http过滤词,筛选出所有的HTTP请求,关注到某一个请求,如图这是晕客厅视频播放时视频资源的一个请求,可以查看对应的请求和响应的数据量,对于length字段。

也可统计所有请求的数据量:

移动端流量测试基本方法 - 网易杭州QA - 网易杭州 QA Team

 

 

WIFI代理抓包

另外对于wifi代理的方式获取流量数据,这个就是我们在实际工作中经常用到的方法,更加简便,对于以http协议为主的系统来说更为合适。

Windows下常用的fiddlerios下常用的charles,都很常用不做赘述。

 

另外对于iosapp还可以通过Instrument自带NetWork来查看网络流量,在xcode下打开open菜单选择developer tool打开Instrements,选择network功能即可。

移动端流量测试基本方法 - 网易杭州QA - 网易杭州 QA Team

 

 

移动端流量测试基本方法 - 网易杭州QA - 网易杭州 QA Team

 

 

可以通过进程方式查看app的网络吞吐和包的数量等,多数情况下看这个维度的数据。(此处使用的是中国大学mooc的数据)

移动端流量测试基本方法 - 网易杭州QA - 网易杭州 QA Team

 

也可以按tcp连接查看不同ip的网络请求流量:

移动端流量测试基本方法 - 网易杭州QA - 网易杭州 QA Team

 

也可以通过活动的接口查看整体流量,支持wifi和蜂窝网络接口,但无法区分app

移动端流量测试基本方法 - 网易杭州QA - 网易杭州 QA Team

 

以上是Instruments提供的基本网络流量分析手段,但都是基于TCP/ IP连接来统计的,数据上比 HTTP流量统计更精确,特别适合应用蜂窝数据时的流量统计。

 







参考文档:

《移动App测试实战》邱鹏著

  评论这张
 
阅读(752)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016