移动测试基础 关于应用耗流量测试的想法跟探讨!

小萨 · July 07, 2016 · Last by lixingdeyongyuan replied at March 22, 2017 · Last modified by admin Monkey · 1741 hits

应用耗流量的测试目前对于移动端的来说已经很普及了。
目前我参考的大量的资料,发现主流的两种思想无非就是根据记载应用耗流量的文件,但是目前这个文件都是记录的总数。然后根据开始时间跟结束时间的差值来计算的。
第一种:
查看当前应用的UID:adb shell ps | grep “你想测试的应用的包名”
(1)、执行adb pull /proc/$pid/status ,在status文件里面存储的就是UID。
(2)、执行adb pull /proc/$UID/tcp/rcv 和adb pull /proc/uid_stat/$UID/tcp_snd(目前确定在这个目录里面,文件名字是“tcp_snd”和“tcp_rcv”),记得把其中的$UID替换成自己应用的UID,这样子我们就可以拿到请求数据耗费的流量和收到的的流量了。

该种方式的弱点:对应文件记录流量变化不是实时的。对于只需要测试一段时间耗流量总和的可以用下。

第二种:
adb shell cat /proc/net/xt_qtaguid/stats | grep (uid#)
如: adb shell cat /proc/net/xt_qtaguid/stats | grep 10127
48 wlan0 0x0 10127 0 316574 2279 472562 3651 316574 2279 0 0 0 0 472562 3651 0 0 0 0
49 wlan0 0x0 10127 1 6172960 4936 415951 5215 6172960 4936 0 0 0 0 415951 5215 0 0 0 0
50 wlan0 0x3792d5b400000000 10127 0 29678 208 32168 296 29678 208 0 0 0 0 32168 296 0 0 0 0
51 wlan0 0x3792d5b400000000 10127 1 226170 222 25745 265 226170 222 0 0 0 0 25745 265 0 0 0 0
56 wlan0 0xfa1dcc4b00000000 10127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
57 wlan0 0xfa1dcc4b00000000 10127 1 3014885 2127 139857 2117 3014885 2127 0 0 0 0 139857 2117 0 0 0 0

该种方式的优点:相对于第一种来说,算出的流量消耗相对比较及时,但是跟我用fiddler抓包计算出的有较大差异。

基于上面两种方法:
我希望能有个更好的更实时更精确的统计,
大概思想:操作应用的时候,用类似fiddler对他抓包。然后记录应用跳转页面的时候,代码里面去跟页面映射请求的接口,最后从抓包软件记录的日志文件中分析得出每个接口请求发送跟接受的字节数,最后把这个页面对应的接口请求消耗的字节数加起来就是加载当前页面消耗的流量,

目前存在的问题:
有类似的抓包软件,会存储有相应的日志文件吗?具体在哪里?这些我目前没有找到。希望大家可以一起在这个思想上探讨下。

转载请说明出处!!!

共收到 11 条回复 时间 点赞

额。。为啥是bug广播站。。。不是很明白。。。我换了

请使用markdown编辑帖子

我说下我的感想吧

目前情况

就我了解目前的情况,的确大家使用的是adbcharleswireshark等工具。但如果关注于流量的话除了wireshark以外基本上都有很多问题。或者说相比其他工具而言,wireshark会好很多。

如果希望存储文件的话可以使用AnyProxy,但它与其它大部分工具也都有一个很大的问题,就是只支持http/https,现在很多公司走spdy 甚至自定义协议的,就没有办法了。虽然抓包软件不会报警,但实际上流量是很不准的。

所以就我个人建议的话,如果要抓还是要准,所以建议用wireshark。或者现在很多公司的做法还是自己插桩,然后协议降级测试,这样是最保险的

小萨 #3 · July 07, 2016 作者

#2楼 @monkey 我需要把他弄成自动化的,wireshark抓包后,会存储对应记录请求的日志文件吗?

#3楼 @lrw3716740 可以手动导出成你需要的格式:https://www.wireshark.org/docs/wsug_html_chunked/ChIOSaveSection.html,命令行的话估计也有,你找下。

我写过很多抓流量的工具,用tcpdump抓,fiddlerCore,chrome插件都做过。相对还比较准确。tcpdump需要越狱或root。

只是看流量数据的话,腾讯的GT(http://gt.qq.com/)可以实时显示,不知道是不是能满足楼主的需求?
当然如果结合数据包分析的话就要用wireshark或tcpdump了。

安卓的话可以看下TrafficStats,和uiautomator2.0一块,还是可以的.只是不能区分移动流量和wifi

小萨 #8 · July 07, 2016 作者

#6楼 @roger_yang 我需要的是加载页面的时候,访问对应每个接口的消耗流量情况,这个需要最后出现在文件里面,我脚本分析文件得出数据,达到自动化的目的。

AT&T ARO可以做到数据抓包,瀑布式时序图操作分析,支持http,udp数据包。看了下说明,是集成了TCPDUMP/LIBPCAP,可以参考下。fyr
source reference: https://github.com/attdevsupport/ARO

小萨 #10 · July 07, 2016 作者

#5楼 @lucasluo 关键是能把整个集成到自动化里面去吗?

11Floor has been deleted

@lrw3716740 为什么应用未启动的情况下,我执行adb shell cat /proc/net/xt_qtaguid/stats | grep (uid#),仍然有数据?另外
这些问题,楼主解决了吗?如果解决了,能说一下吗?谢楼主

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up