Fiddler 模拟弱网环境测试
Fiddler 模拟弱网环境测试
弱网环境测试是确保应用程序在各种网络条件下都能正常运行的重要环节。本文将详细介绍如何使用Fiddler工具模拟弱网环境,帮助开发者提前发现和解决潜在的网络相关问题。
为什么要进行弱网环境测试?
由于用户自身的网络环境波动,或者是本身网络环境就较为恶劣,导致会出现一些意想不到的非功能性bug,影响用户体验。通过模拟弱网环境,开发者可以在开发阶段就发现这些问题,从而提升应用的稳定性和用户体验。
Fiddler模拟限速的原理
Fiddler限速是以网络延迟的方式实现的,网络延迟时间*网速=传输字节数。Fiddler作为一个代理工具,提供了客户端请求前和服务器响应前的回调接口,我们可以在这些接口里自定义一些逻辑。Fiddler的模拟限速正是在客户端请求前来自定义限速的逻辑,此逻辑是通过延迟发送数据或接收的数据的时间来限制网络的下载速度和上传速度,从而达到限速的效果。
如何利用Fiddler来模拟恶劣的网络环境?
1. 启用 "模拟Modem速度"
在Fiddler中,可以通过以下步骤启用模拟Modem速度:
- 选择
Rules
->Performances
->Simulate Modem Speeds
- 勾选该选项后,所有通过Fiddler代理的流量都会变得非常慢,类似于多年前的56k Modem上网速度。
注意: 开启限速前后,配合测速工具speedtest(speedtest.net 国外/ speedtest.cn 国内),能够看到ping、download、upload都会受到影响。
限速前:
限速后:
2. 配置限速参数(网络环境参数)
采用默认的配置模拟出来的环境过于恶劣,并不一定符合需求,此时就需要对限速的参数进行调整。
方法一:通过CustomRules.js文件配置
- 选择
Rules
->Customize Rules…
- 这将打开CustomRules.js文件,其默认位于用户目录的文档目录下的
\Fiddler2\Scripts
位置,后缀名是js。 - 找到一个m_SimulateModem标志位,并设置请求延迟、相应延迟,单位为ms。
例如,要模拟上传速度500KBps的网络,可以这样设置:
oSession["request-trickle-delay"] = "2"; // 1KB/500KBps=0.002s=2ms
oSession["response-trickle-delay"] = "2";
方法二:通过FiddlerScript选项卡配置
如果本身网速相当快,这里设置的值就可以近似地推算出开启模拟后的上传和下载带宽,比如默认设置下上传延时为300ms下载延时为150ms,可以推算出大致的模拟带宽为:
→ 上传带宽=((1*8/1000)/0.300)*2.0≈0.053Mbps
→ 下载带宽=((1*8/1000)/0.150)*2.0≈0.106Mbps
3. 编写自定义脚本
可以扩展或新增CustomRules.js里的逻辑。比如实现新增一个随机延时量,使得网络带宽不是如上一步般恒定为一个低速的值,而是会在一定范围内随机抖动:
代码段1:
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded.
oSession["request-trickle-delay"] = "500";
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = "500";
}
代码段2:
static function randInt(min, max) {
return Math.round(Math.random()*(max-min)+min);
}
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded.
oSession["request-trickle-delay"] = ""+randInt(1,500);
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = ""+randInt(1,500);
}
PS:修改后保存配置文件(Ctrl+S)或者清掉缓存(Rules -> Performances -> Disable Caching),再次勾选Rules -> Performances -> Simulate Modem Speeds 进行测速。注意:每次编辑并保存配置文件后,Simulate Modem Speeds选项会被取消,请重新勾选。
遇到的问题:如上修订后Rules -> Performances 菜单可能会消失,回滚即可,或重启下。
Fiddler模拟恶劣网络环境的局限性
利用Fiddler来模拟恶劣的网络环境,实现简单,较为直观,缺点是只能支持那些利用HTTP进行通信和交互的服务,对于其他协议的应用不支持。