坑:在项目后期对短视频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格式要小。