流量测试中的小经验

坑:在项目后期短视频APP某版本的做流量测试时发现流量消耗特别大。

一、Android App流量测试方法

1、读取Android系统上的两个文件内容

proc/uid_stat/{UID}/tcp_snd 
proc/uid_stat/{UID}/tcp_rcv 
参数释义: 
{UID}是每个Android App在安装时分配的唯一编号,用于识别该App。获取UID的方法有: 
1) 方法一
①获取当前App进程的PID 
ps | grep 包名 
②通过PID查找该App对应的UID 
cat /proc/{PID}/status 
2)方法二

cat /data/system/packages.list | grep 包名,注:需要root权限 
tcp_snd文件中的数据表示发送的数据累计大小,单位是字节(Byte); 
tcp_rcv文件中的数据表示接收的数据累计大小,单位是字节(Byte)。 
举例说明如何获取这个数据:

1)get App UID

2)获取流量数据

2、Fiddler代理工具

1)在手机上设置代理

2)通过Fiddler代理工具可以看到手机上发出的请求和收到的响应,其中包含了每个请求和响应的流量大小

 

3、Wireshark工具分析

1)手机上抓包,具体操作详见Android移动网络如何抓取数据包》

2)使用Wireshark工具分析,下图是查看单个请求和响应的数据量

 

4、自动化流量统计之哆啦A梦

1)打开哆啦A梦→性能监控→开始监控(若没有设置被测App,则可以通过哆啦A梦中的应用管理进行设置);

2)设计动作对App进行相应的操作;

3)操作完成后停止监控,文件保存至/sdcard/DoraemonBox/PerformanceTest下。

哆啦A梦之流量监控原理是直接读取Android系统上的两个文件内容,如图

 

二、流量测试注意事项

作为测试人员,越早发现问题越好,所以在产品需求、开发实现上就应该关注流量问题,以下是常见的节省流量方法。

产品需求上:

1)针对移动网络给出相应的提示

比如在搜狗输入法泛灵犀最新需求中,点击详情时会判断当前用户的网络类型,若为移动网络,则给出提示;点击详情跳转后,当前页面中的内容是视频,若为移动网络,点击播放按钮不直接播放,而是先给出提示;

2)不同的网络类型给出相应的策略

比如搜狗输入法热词接口,wifi下一天下发一次,移动网络下7天下发一次,该接口包含统计数据的上传、热词和扩展词的下发、数据流通知等。通过判断当前的网络状况,控制数据访问的频率。

开发实现上:

1)数据压缩

减少传输的数据量是一个最基本的节省流量的方法,比如在搜狗输入法emoji后下载中,下发给用户的emoji就是经过压缩后的。

2)数据缓存

比如在搜狗输入法中触发泛灵犀图片后 ,会将这些图片暂时缓存至sdcard的某个目录下,等以后再使用相同关键词触发泛灵犀图片时,就不再去拉取相关的数据,直接使用缓存中的数据。

3)不同数据格式的采用

作为接口数据返回,JSON格式通常比XML格式要小,在大数据传输上,protobuf格式比JSON格式要小。

不因未知而恐惧
原文地址:https://www.cnblogs.com/kummer9056/p/9702527.html