马哥的小弟 发表于 2019-2-2 14:27:01

APP如何进行流量测试?常见测试方法全面解析 (上)

 随着人们生活水平的日益提高,手机已经成为了我们生活中的一部分,无论是在家里、工作中、地铁上或是在聚会中等等,都会有手机的身影。所以手机软件也便一步步崛起,购物、外卖、新闻、娱乐、视频等,我们已经离不开APP。
  http://dingyue.nosdn.127.net/jy9XGITzkUM6pwpgxNZo7zNeJTLPNquY9JKFgpAGnTwWw1536307680457.jpeg  但APP在带给我们便利的同时也会带来一些不必要的问题,比如:一些不好的app设计或缺陷,有些App会频繁在后台联网去服务端获取信息,可能带来意外的流量,导致用户卸载app或引起投诉,直接影响用户体验,造成不必要的麻烦,因此在移动产品测试中,很有必要对app使用的流量进行度量!  用户没有直接使用的情况在android系统更易出现,因为目前android的消息推送机制不是借助统一的管道,而是各个app定时启动后台进程到自己的服务端去询问是否有新消息,有就拉去到客户端,而这个询问本身就会带来流量的消耗。  对于android的app有一些特有的流量测试的方法。  Android系统自带了统计功能。通过直接读取android系统上的两个文件的内容:  Proc/uid_stat/{UID}/tcp_snd和tcp_rcv,其中UID是每个app安装时分配的唯一编号用于识别该app,tcp_snd中的数据表示法术的数据累计大小,单位是字节,tcp_rcv表示接收到的数据累计大小。  通过adb命令进入shell可以获取到这些数据。  首先通过包名获取app的PID:  http://dingyue.nosdn.127.net/auifNJXZlTIQvJ9bshwNHtDCFe9IRvDwLvw5in7UdQeGD1536307681986.png  再访问/proc/{PID}/status文件查找app对应的UID,再查看上述的2个文件:  http://dingyue.nosdn.127.net/A3jxtiYd1ubMtkpaKQM8XdTAg74lvldpoGpsNa0I3=vjT1536307683476.png  http://dingyue.nosdn.127.net/CEAXDEu=U4dXzmtst1dcClXKvj=X5ZAuYIS7GxAX4rQOz1536307684399.png  这个做法也是很多手机安全软件的做能比较简单的给出各个app的流量消耗情况,不过这个方法没有其他维度的区分,只有统计总数据。  还能通过系统API来获取基本的流量数据。TrafficStats类提供了多个方法获取不同角度的流量数据:  http://dingyue.nosdn.127.net/SXyVC3r662Jn8bRQoZwI2JJcIupfQo09niZmi1edWAu311536307685398.png  还可以在app内部往来访问的接口代码加上相关的统计功能来获取流量的数据。  http://dingyue.nosdn.127.net/7ZROgf=Jbkd3ORmRORoAqh9VVFktPE2BWQ4NtJcwpLqXP1536307686821.png  以上代码中getContentLength获取了本次响应的数据量并在日志打印了出来。  实际应用中很多app会将借口访问的功能做一些封装,上层应用可以复用,针对这些情况可以在借口访问的代码封装中插入流浪统计的功能,可以详细区分每个接口的访问次数和数据量。  但是这种方法统计不到一些系统的DNS等流量,还有不使用接口封装的模块产生的流量会被遗漏。
页: [1]
查看完整版本: APP如何进行流量测试?常见测试方法全面解析 (上)