针对流量测试,首先要搞明白什么是流量?
流量是指手机上网产生的流量数据,用手机打开软件或进行互联网操作时,会和服务器之间交换数据,手机流量就是指这数据的大小。我们的收集通过运营商的网络访问Internet,运营商替我们的手机转发数据报文,数据报文的总大小(字节数)即流量,这里的数据报文包含手机上下行的报文。由于数据报文采用IP协议传输,运营商计算的流量一般是包含IP头的数据报文大小。
我们使用安卓自身提供的TCP收发长度统计功能
一般APP和后台服务器之间的通信都是基于TCP的,所以我们可以利用此统计来测试我们APP的流量,而且安卓提供的该统计功能是按照APP纬度来统计的,不需要禁止其他app的连网权限。
操作步骤如下:
1) 使用ps命令查看所测app的uid, 以京东app为例,adb shell ps | findstr jd
u0_a开头的都是Android的应用进程,Android的应用的UID是从10000开始,到19999结束,可以在Process.java中查看到(FIRST_APPLICATION_UID和LAST_APPLICATION_UID),u0_a后面的数字就是该应用的UID值减去FIRST_APPLICATION_UID所得的值,所以,对于com.jingdong.app,它的user是u0_a332,按前面的规制,它的UID就是332 + FIRST_APPLICATION_UID = 10332。所以京东的uid为10000+332=10332。如果对这个uid不放心,还可以进目录查看
2)获取到app的uid之后,进入/proc/uid_stat/10332目录,cat获取当前tcp_snd和tcp_tcv的初始值
3) 此时可以开始测试了,打开APP之后,点击要测模块,进入tab列,测试完成后再次获取tcp_snd和tcp_tcv的值
4)所测时间内的流量计算
发送流量:tcp_snd_new-tcp_snd_old=2636783-2573939=62844bytes
接收流量:tcp_rcv_new-tcp_rcv_old=117147054-114987186=2159868bytes
这个方法没有其他维度的区分,只有统计总数据,我下次再用其他方法测试流量,未完待续……
原文地址:https://www.cnblogs.com/feimaoyuzhubaobao/p/8994495.html