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

然而实际情况下却得到了两倍于这个值的带宽,推测可能是Fiddler的内部实现上有一些和描述上的不同,为何为造成这个现象现在还不是很清楚,所以上述公式最后还需要修正一个2.0的系数,即:

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

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

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

最后作为一位过来人也是希望大家少走一些弯路,在这里我给大家分享一些软件测试的学习资料和我花了3个月整理的软件测试自学全栈,这些资料希望能给你前进的路上带来帮助。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1125098.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Postman如何做接口测试:如何导入 swagger 接口文档

↵在使用 postman 做接口测试过程中,测试工程师会往界面中填入非常多的参数,包括 url 地址,请求方法,消息头和消息体等一系列数据,在请求参数比较多的情况下非常花时间。我们可以使用 postman 的文档导入功能&#xff…

基于Java的安防监管智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ?安防监管智慧管理系统结合了现代科技与安全管理需求,旨在提升传统安防系统的智能化管理水平。该系统不仅涵盖了设备管理、区域划分和视频监控等基础功能模块,还深入到报警规则设定及事件处理等多个维度,能…

基于大数据爬虫+Python+机器学习的电商农产品销售预测系统设计与实现(精品源码+论文+答辩PPT)

博主介绍:CSDN毕设辅导第一人、靠谱第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交…

大数据领域存算分离的改进措施

大数据领域存算分离的改进措施:从"夫妻店"到"智能物流网"的进化之路 关键词:存算分离、大数据架构、数据本地化、网络优化、云原生存储 摘要:本文从"夫妻店"到"智能物流网"的生活类比出发,深入解析大数据领域存算分离的核心概念与…

vue基于springboot框架的在线求医问诊问药系统小程序_0gus2y33

目录系统概述核心功能技术实现特色与创新开发技术核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统概述 基于…

格雷厄姆的工作资本策略:关注流动性

格雷厄姆的工作资本策略:关注流动性关键词:格雷厄姆、工作资本策略、流动性、价值投资、财务分析、股票估值、投资决策摘要:本文深入探讨了格雷厄姆的工作资本策略,重点关注其对流动性的考量。首先介绍了该策略提出的背景和目的&a…

基于智能AI大模型+大数据爬虫采集+机器学习预测算法的农产品销售预测系统设计与实现(精品源码+论文+答辩PPT)

博主介绍:CSDN毕设辅导第一人、靠谱第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交…

性价比高的口腔种植机构排名

性价比高的口腔种植机构排名:如何选择与极简口腔的价值分析随着口腔健康意识的提升和种植牙技术的普及,越来越多的缺牙患者开始寻求一种既可靠又经济的牙齿修复方案。市场上口腔种植机构众多,价格、技术和服务水平参差不齐,如何甄…

FastAPI 的执行模型、Python 并发语义、事件循环(event loop)与线程池调度

FastAPI 的执行模型、Python 并发语义、事件循环(event loop)与线程池调度 文章目录 FastAPI 的执行模型、Python 并发语义、事件循环(event loop)与线程池调度一、核心背景:FastAPI 是如何执行路由函数的二、逐个分析…

vue基于springboot框架的大中型企业职工信息化企业员工奖惩打卡平台设计_8j8g1y51

目录系统概述技术架构核心功能创新点应用价值开发技术核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统概述 …

工业摄像头是专为工业场景设计的高性能视频图像

工业摄像头是专为工业场景设计的高性能视频图像采集设备,其工作原理、核心部件、技术特性、应用领域及工作流程如下:工作原理工业摄像头通过光电转换原理,将光信号转化为电信号。当被摄物体的光线通过镜头聚焦到感光传感器(如CCD或…

vue基于springboot框架的智慧托儿所管理系统_53mr51pf

目录系统概述核心功能技术亮点应用价值开发技术核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统概述 智慧托…

知识图谱增强大模型:构建可解释的行业智能搜索引擎

摘要:本文深度揭秘知识图谱与大语言模型融合的企业级搜索架构。通过动态图神经网络(Dynamic GNN)实现实体关系实时编码,结合LLM的生成能力,打造具备"推理溯源"能力的智能搜索系统。在医疗领域实测中&#xf…

ArcGIS大师之路500技---054字段顺序调整

文章目录前言一、需求说明二、合并工具前言 本文主要介绍通过合并工具实现字段顺序的调整。 一、需求说明 在要素类中添加一个字段,字段会自动添加到最后,如下图 我们虽然可以通过鼠标拖动的方式调整字段顺序,但是这种调整顺序只是临时的&…

强化学习推荐系统实战:从DQN到PPO的演进与落地

摘要:本文揭秘强化学习在工业级推荐系统中的工程化落地路径。通过改造传统DQN模型为SlateQ架构,并引入PPO-Rec离在线训练框架,在某短视频平台成功将用户停留时长提升23%,长尾内容曝光占比增加41%。提供完整的状态表征、奖励塑形、…

python3可以执行,但是python命令不行,怎么解决

只有 python3 命令,没有叫 python 的可执行文件,所以 zsh 才会提示 command not found: python。让 python 也能用,常见有 3 种做法(推荐第 1 种)。 ⸻ 方案 1(推荐):用 alias 让 py…

博士助教不会公开说,但一定会提醒熟人的论文细节

有些话,博士助教一般不会在公开场合说。 不是因为复杂,而是因为——说了容易让人误会。但如果是熟人、同门, 我往往会在论文快交的时候, 私下提醒几句。这些细节,不是写作技巧, 而是决定论文能不能顺利走完…

vue基于springboot框架的汉服文化交流商城平台设计_26t5m844

目录汉服文化交流商城平台设计摘要开发技术核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!汉服文化交流商城平台…

基于Java的宗教信用智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ? 基于Java的宗教信用智慧管理系统的设计与实现,旨在为宗教机构提供一个全面、高效的信息管理平台。相比传统选题,“烂大街”的毕设往往缺乏创新性和实用性,而本系统则针对宗教组织的实际需求进行设计开发…

基于Spring Boot+Vue的居民健康档案管理系统_26h816k3

目录居民健康档案管理系统概述技术架构与功能模块系统特点与优势开发技术核心代码参考示例1.建立用户稀疏矩阵,用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度总结源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式&am…