APP性能测试——流量测试(一)

写在前面:

        第一期主要介绍如何通过anyproxy工具进行流量测试,二期介绍如何通过adb 命令实时监控wifi、4G下的上行以及下行流量值。

 

        app的流量测试是性能测试中重要的指标,也是用户体验的重要部分,目前了解到的有三种方法:

    1、通过安卓自带命令行获取,可能需要root权限,获取到的数据比较多、杂乱、不利于进一步的数据分析;

    2、通过其他工具软件获取,例如 腾讯GT,腾讯的PerfDog、Emmage、android profiler工具等,可能无法获取详细的网络流量信息;

    3、通过代理抓包,winshark、fiddler等代理来获取流量详细信息,缺点是对于非WIFI 情况下需要想其他办法来处理,可能无法获取流量值的大小。

 

        AnyProxy是一个开放式的基于nodejs的一款可以高度定制的代理服务器,支持https明文代理,提供web界面,随时观测请求情况,同时适用于IOS设备,不足点:由于需要设置代理,本地测试无法抓取4G情况下的流量信息。

Github主页:https://github.com/alibaba/anyproxy

了解AnyProxy:http://anyproxy.io/cn/

 

本文介绍如何使用AnyProxy代理抓包方法来测试流量:

 

测试App:某安全类手机app

测试环境:Python3.6+Nodejs+Anyproxy开源框架

测试机型:Nexus 5X(安卓6.0.1)

 

一、环境安装:

    python以及nodejs 安装这里就略过,主要讲下AnyProxy的安装,windows和linux都可以通过以下命令安装(建议使用cnpm,以免出现timeout):

 

'cnpm install -g anyproxy'

 

二、代理设置

    手机需要与电脑在同一个局域网,如需要查看https请求,需要电脑和手机端同时安装证书文件:rootCA.crt ,手机代理主机设置成PC主机的ip,端口默认8001.

 

三、修改rule.js规则

    我们过滤了:请求类型、请求地址、请求数据大小(字节)、接受数据大小(字节)):

图片

 

四、启动服务:

    命令行启动(默认端口是8001,web查看地址是http://127.0.0.1:8002 )“--intercept”参数表示获取https流量:

 

'anyproxy --rule rule.js --intercept --port 8001'

    测试中我们主要操作场景:打开app,随机点击几个功能模块进行测试

 

获取到的log.txt文件大致格式如下:

图片

然后把得到的数据插入到Mysql:

图片

 

五、数据统计分析

    由于可能涉及到app的隐私数据,敏感数据打了马赛格处理。

    我们把得到的log文件插入到数据库后,可以分析出一些有用的数据:

 

总体消耗流量占比:

图片

请求次数排行:

 

图片

 

总体数据流量消耗排行:

图片

 

请求app、jar包消耗的流量:

 

图片

 

请求图片消耗的流量:

图片

 

请求js、json和css消耗的流量:

图片

 

请求网页消耗的流量:

图片

 

其他资源消耗的流量:

图片

 

六、结论

    从上面的结果我们可以看出本次测试中消耗了约90MB的网络流量;其中apk文件和jar包消耗了大量的流量,占比约80%,原因可能是由于测试当中有下载apk或者一些功能插件下载导致的,请求次数在某一个接口高达64次,可能是在我们打开某个工具的时候都会优先去检测升级导致,本次测试中并没有发现严重的流量消耗。

 

七、总结:

    在实际测试当中,我们会细分场景、细分app板块,保存不同的流量信息,并多次测试,来针对性分析,如果某个场景流量超出一定的阀值,表示这部分模块异常,则需要重点关注。当然,我们也可以结合遍历工具来测试app,这样可以做成自动化,节约时间人力成本,及时发现问题并解决,提高产品质量。

 

 

*完整代码,关注公众号后,留言获取!

-▼-

长按二维码关注QuTest,定期分享技术干货,欢迎投稿!

图片

QuTest


版权声明:本文为u010637662原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。