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

匿名 · 2016年07月07日 · 最后由 lixingdeyongyuan 回复于 2017年03月22日 · 2822 次阅读

应用耗流量的测试目前对于移动端的来说已经很普及了。
目前我参考的大量的资料,发现主流的两种思想无非就是根据记载应用耗流量的文件,但是目前这个文件都是记录的总数。然后根据开始时间跟结束时间的差值来计算的。
第一种:
查看当前应用的 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 · 2016年07月07日

#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 · 2016年07月07日

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

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

匿名 #10 · 2016年07月07日

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

12楼 已删除

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

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册