App 流量测试(Fiddler)

概览

对于移动端的 App,除了 App 本身的功能外,用户还会非常关心 App 流量的消耗情况如何,因此,流量测试作为保障 App 整体质量的重要一环,需要我们进行重视。伴随 Android 系统的升级,Android 权限也进一步收紧,Android6.0 及以上的操作系统,传统的性能检测工具 App 都已无法再收集应用的流量信息,因此我们需要新的测试工具,来帮助我们进行流量测试

新的工具

Fiddler 是一个 http/https 协议调试代理工具,它能够记录并检查所有你的设备与互联网之间的http/https 通讯,设置断点,查看所有的 “进出”  Fiddler 的数据(包括cookie,html,js,css,image等文件)。 Fiddler 要比其他的抓包工具体量更小(最新版本v4.6.20172.31233,文件大小4.12MB)、操作更为简单,是普遍使用的抓包工具。使用 Fiddler 进行流量测试,一方面适用于所有的 Android 机型,另一方面可以抓取详细的请求信息,满足我们对测试工具的需要,因此,新的流量测试方案中,我们将选取 Fiddler(版本号v4.6.20172.31233,下文提到的 Fiddler 均是该版本),作为我们的测试工具。

Fiddler 配置

使用 Fiddler 对手机抓包前,需要对 Fiddler 及手机进行配置。首先配置 Fiddler,安装完成 Fiddler后,打开软件,点击 Fiddler 的配置项 ”Options…”,如下图所示:

在 Fiddler 的 Connections 配置项中,勾选 ”Allow remote computers to connect” ,如下图所示: 

接下来,是配置手机。如果想使用 Fiddler 对手机进行抓包,必须保证电脑手机在同一局域网下这里需要配置的是无线热点的代理服务器,把代理服务器的 ip 配置为电脑的 ip,端口号为上文中默认的 8888,如下图所示:

重启 Fiddler,关手机关闭 wifi 热点,然后再次打开。此时,Fiddler 可抓取手机的 http 请求

如果想抓取手机的 https 请求,还需安装证书,进一步配置。

第一步,关闭 Fiddler,在pc端下载并安装Fiddler的证书管理器,下载地址:

http://www.telerik.com/docs/default-source/fiddler/addons/fiddlercertmaker.exe?sfvrsn=2

第二步,傻瓜式安装完成 fiddlercertmaker.exe后,重新打开 Fiddler,配置 Fiddler 的 https 选项(Tools----Options…----HTTPS),如下图所示:

备注:次点击会弹出是否信任 Fiddler 证书和安全提示,直接点击 yes 就行

第三步:打开手机浏览器,输入http://192.168.18.64:8888(即上文中配置的代理服务器地址),会出现如下界面: 

点击链接 ”FiddlerRoot certificate”,下载手机端的数字证书,给数字证书命名,例如 ”Fiddler”,点击确认,安装证书。如下图所示:

备注:如果下载完成数字证书后,没有弹出上图中的证书安装界面,可在手机的设置菜单中,手动安装。以三星 S6 为例,打开设置----锁定屏幕与安全----其他安全设置----从设备存储安装,选择下载的数字证书,填写证书名称,即可完成安装,如下图所示: 

为了确认手机是否成功安装数字证书,可在设置菜单中查看。以三星 S6 为例,点击设置----锁定屏幕与安全----其他安全设置----查看安全证书----用户,即可查看 Fiddler 数字证书是否成功安装,如下图所示:

 以上的 https 配置项,配置完成后,重启 pc 端的 Fiddler 软件,手机端关闭并重新连接网络热点,即可抓取 http 和 https 请求。如下图所示: 

对于流量测试,由于我们主要关注某次场景操作,产生了那些网络请求,这些网络请求消耗了多少流量,因此我们这里重点关注 Fiddler 的 Statistics 标签页,如下图所示:

Statistics 标签页,对于某次网络请求过程中产生的流量有非常详细描述的信息。首先看左侧的请求列表界面,如下图所示:

这条网络请求的服务器 Host 为:61.191.24.229:5028,访问的服务地址为:/mserver/rest/ms,访问返回的响应码为 200(意味着请求正常返回,其他请求失败响应码为非200,例如404),网络请求协议为 http( Fiddler 也可以捕获 https 的网络请求),返回的数据 Body 长度为 31104 个字节,网络请求的 Content-Type 类型为 application/json; charset=UTF-8。再看这条网络请求的Statistics 标签页,如下图所示:

Request Count 表示请求次数,Bytes Sent 表示本次网络请求发送数据消耗的流量 1572 字节(其中 headers 422 字节,body 1150 字节),Bytes Received 表示接收服务器返回的数据 31303 字节(其中 headers 199 字节,body 31104 字节)。接下来的信息主要描述本次网络请求各种动作的时间,例如:ClientConnerted 表示客户端与服务器建立链接的时间、ClientBeginRequest 表示客户端开始请求服务的时间…..等等,由于流量测试主要流量消耗信息,网络请求动作信息暂不是我们的关注重点。

如何使用 Fiddler 测试流量

对于 App 的某个场景进行抓包,可能会存在这些情况:第一次有很多次请求,包括一部分图片请求,请求完毕后对图片进行缓存;第二次请求,请求总数减少,图片从缓存中读取(不用再次进行图片请求);第三次请求情况和第二次一致。因此,做流量测试,至少应该进行三次抓包并统计结果,次数更多,结果更为准确。另外还需要考虑 App 是否会根据机型、用户账号等标识信息返回不同的数据,如果返回数据的差异性较大,同样会影响测试结果准确性。

另一方面 Fiddler 也存在一定的局限性。Fiddler 目前只能捕捉到使用 http/https 应用层传输协议的网络请求,对于使用其他应用层传输协议(例如ftp、smtp、ssh等)的网络请求,无法捕获,这意味着:如果 App 使用了这些协议(非 http/https)进行数据传输,将无法正常抓取到流量消耗

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值