Fiddler 模拟弱网环境测试

Posted 程序员二黑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fiddler 模拟弱网环境测试相关的知识,希望对你有一定的参考价值。

  • 📢 我是二黑,一个快要秃头的测试人

  • 📢 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

  • 📢 我收集了一些软件测试资料,关注我公众号:程序员二黑,免费领取!

  • 📢 最困难的时候,也就是我们离成功不远的时候!


为什么要进行弱网环境测试?

由于用户自身的网络环境波动,或者是本身网络环境就较为恶劣,导致会出现一些意想不到的非功能性bug,影响用户体检。比如

利用Fiddler,Charles等具有代理服务器功能的网络流量分析软件来实现。

fiddler模拟限速的原理

Fiddler限速是以网络延迟的方式实现的,网络延迟时间*网速=传输字节数。

fiddler本来就是个代理,它提供了客户端请求前和服务器响应前的回调接口,我们可以在这些接口里 面自定义一些逻辑。Fiddler的模拟限速正是在客户端请求前来自定义限速的逻辑,此逻辑是通过延迟发送数据或接收的数据的时间来限制网络的下载速度和 上传速度,从而达到限速的效果。

如何利用Fiddler来模拟恶劣的网络环境?

1、启用 “模拟Modem速度”

Rules – Performances – Simulate Modem Speeds

默认未勾选,网络正常。勾选该选项后,所有通过Fiddler代理的流量都会变得和多年前的56k小猫时上网一般的慢。

注意:开启限速前后,配合测速工具speedtest(speedtest.net 国外/ speedtest.cn 国内),能够看到ping、download、upload都会受到影响,如下图:

限速前:

限速后:

2、配置限速参数( 网络环境参数)

采用默认的配置模拟出来的环境过于恶劣,并不一定符合需求,此时就需要对限速的参数进行调整。

(法一)Rules – Customize Rules…

就会用文本编辑器打开CustomRules.js文件,其默认位于用户目录的文档目录下的\\Fiddler2\\Scripts 位置,后缀名是js。然后,找到一个m_SimulateModem标志位(如下图),并设置请求延迟、相应延迟 ,单位为ms.


如上,为oSession的两个参数。request-trickle-delay中的值代表1KB的数据被上传时会被延时多少毫秒;response-trickle-delay则对应下载时1KB的数据会被延时多少毫秒。比如你要模拟上传速度500KBps的网络,那上传延迟就是1KB/500KBps=0.002s=2ms,就改成2。

(法二)或者,直接打开右侧监控面板的“FiddlerScript”选项卡,如下:


如果本身网速相当快,这里设置的值就可以近似地推算出开启模拟后的上传和下载带宽,比如默认设置下上传延时为300ms下载延时为150ms,可以推算出大致的模拟带宽为:

  • → 上传带宽=(1 * 8/1000) /0.300 ≈ 0.027Mbps

  • → 下载带宽=(1 * 8/1000) /0.150 ≈ 0.053Mbps

科普1:用来衡量带宽的单位,指每秒钟传输的二进制位数;

Mbps 即 Milionbit pro second(百万位每秒);

Kbps 即 Kilobit pro second(千位每秒);

bps 即 bit pro second(位每秒);

1 Mbps =1000 Kbps =1000000 bps

科普2:而通常软件上显示的速度则是指每秒种传输的字节数(Byte)通常用B(大写)表示;

MB即百万字节也称兆字节;

KB即千字节;

B即字节;

之间关系为1MB=1024KB=1024*1024B;

1B=8b;

→ 所以1M带宽即指1Mbps=1000Kbps=1000/8KBps=125KBps;

3、编写自定义脚本
即扩展或新增CustomRules.js里的逻辑。比如实现新增一个随机延时量,使得网络带宽不是如上一步般恒定为一个低速的值,而是会在一定范围内随机抖动,如下,将代码段1,改为 代码段1 :

代码段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进行通信和交互的服务,对于其他协议的应用不支持

最后为方便大家学习测试,特意给大家准备了一份13G的超实用干货学习资源,涉及的内容非常全面。


包括,软件学习路线图,50多天的上课视频、16个突击实战项目,80余个软件测试用软件,37份测试文档,70个软件测试相关问题,40篇测试经验级文章,上千份测试真题分享,还有2021软件测试面试宝典,还有软件测试求职的各类精选简历,希望对大家有所帮助……

关注我公众号:【程序员二黑】即可获取这份资料了!

如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入我们的群:785128166 大家一起讨论交流,里面也有各种软件测试资料和技术交流。

推荐阅读

高薪程序员也躲不过35岁这一关…当能力与年龄脱节,我们该如何自救

大学毕业开始销售…不甘于现状,转行测试的自救之路

从销冠到失业,最后选择软件测试,回头看看这段路,我很幸运!

以上是关于Fiddler 模拟弱网环境测试的主要内容,如果未能解决你的问题,请参考以下文章

Fiddler 模拟弱网环境测试

性能测试-3.Fiddler进行弱网测试

fiddler弱网测试

fiddler 的弱网测试

APP模拟弱网测试-Fiddler+clumsy(windows平台下)

Fiddler-弱网测试设置