本文章转载于搜狗测试
小编踩过的坑:在项目后期对搜狗输入法某版本的泛灵犀功能做流量测试时发现流量消耗特别大。
原因:1)泛灵犀的总流量=泛灵犀的显示流量+点击详情跳转后的流量,泛灵犀显示流量较小,但点击详情是跳转的搜狗输入法内置浏览器,且显示的内容较大;2)在移动网络下,点击详情时没有给出相应的提示。
开发填坑方案:改为跳转手机默认浏览器。
测试填坑方案:总结学习中。。。。。。
一、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格式要小。