当前位置: 首页 > news >正文

十五:Fiddler抓包教程(15)-Fiddler弱网测试

一.简介

1.现在这个时代已经属于流量时代,用户对于App或者小程序之类的操作界面的数据和交互的要求也越来越高。对于测试人员弱网测试也是需要考验自己专业技术能力的一种技能。一个合格的测试人员,需要额外关注的场景就远不止断网、网络故障等情况了。还要对于弱网的数据定义,不同的应用所界定的含义是不一样且不清晰的,不仅要考虑各类型网络最低速率,还要结合业务场景和应用类型去划分。按照移动的特性来说,一般应用低于2G速率的都属于弱网,也可以将3G划分为弱网。除此之外, 弱信号的Wifi通常也会被纳入到弱网测试场景中。无论是做web端还是app端的测试,我们都需要对弱网进行测试,对于弱网方法有很多种,如:Fiddler模拟弱网,控制电脑的网速等,今天介绍下Fiddler如何进行测试弱网。

二.什么是弱网?

1.弱网看字面意思就是网络比较弱,通称为信号差,网速慢、卡。通常低于3G网络速率和弱信号的Wifi都属于弱网。现在这个科技时代大量的用户会在地铁、隧道、电梯和车库等场景下使用APP 。这种场景下,网络会出现延时、中断和超时等情况。

三.什么是弱网测试?

1.弱网测试主要是对网络带宽、丢包、延时等进行模拟弱网环境去测试不同应用软件,属于健壮性测试。

2.根据大部分用户使用移动端软件模拟弱网测试,调研而得出来的网络数据情况, 弱网环境控制上行速率为10 下行速率为30这个范围内都算弱网测试。

四.为何要进行弱网测试?

1.国内移动智能设备迅速普及,大大增加了用户碎片化使用智能设备的概率,用户可能会在车站、地铁、高铁、公交、电梯间、楼梯间、隧道、地下车库等弱网环境下使用互联网应用。我们需要针对这些弱网环境,验证应用软件的健壮性和容错性,提高用户体验,避免因用户体验不友好造成核心用户的流失。

五.如何做弱网测试?

1.对于测试人员来说,要高效的进行弱网测试,就需要借助第三方工具搭建出各种弱网的环境,模拟一个弱网环境即可。这里主要讲解和分享第三方工具Fiddler。

2.通过工具对数据链路层进行干扰,设置不同的网络带宽、丢包、延时参数来模拟弱网环境,进行测试。

3.首先,只要搭建出来弱网环境, 模拟一个弱网环境即可。可以通过软硬件方式两种。软件方式利用 模拟网络参数来配置弱网环境,就可以达到目的。

4.也可以选择第三方,比如:Charles , Network link Conditioner 。在各类网络软件中,主要就是对带宽、丢包、延时等进行模拟弱网环境。但是方式是由一定的弊端的,不是非常接近弱网络环境,想要更接近弱网环境。在windows环境下我们通常可以使用fiddler和network emulator for windows toolkit来模拟,在mac环境下则可以使用Charles和Xcode自带的开发环境网络异常模拟工具进行测试。

5.例如大多数专项测试,会更倾向于通过 硬件方式来协助测试,但这种方式又会变得很麻烦,都是通过「树莓派」网维协助搭建!如果出现有些无法模拟的情况,只能靠人工移动到电梯、地铁等信号比较弱的地方。补充一点, 软件方式的成本低且实施起来容易操作。

六.弱网测试工具

1.常用的弱网测试工具有:Fiddler、Charles、Clumsy、弱网仪等。

七.Fiddler模拟限速的原理

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

2.那么我们的算法就是:

1000/下载速度 = 需要delay的时间(毫秒) //比如50kb/s 需要delay200毫秒来接收数据。

八.参考常见网络制式的上行、下载速度表

1.常见网络制式的上行、下载速度表在这里插入图片描述

九.弱网测试思路

1.弱网测试思路简单归纳

1.1.网络正常情况下功能正常使用。

1.2.无网络情况下功能是否可用。

1.3.弱网网络情况下功能是否可用:

(1)后端服务器是否做了超时处理、提示是否友好;

(2)APP 是否会发生 Crash 或者 ANR 情况;

(3)数据是否会丢失;

(4)前端页面展示是否完整.....

1.4.网络转变:由 4g 到 3g 、由强 WiFi 到弱WiFi、断网情况下功能是否可用。

2.思维导图

在这里插入图片描述

十.弱网测试点

1.根据测试思路可以罗列测试要点

在这里插入图片描述

十一.弱网测试用例

1.根据测试要点可以编写弱网测试用例

在这里插入图片描述

十二.弱网模拟常用工具

1.360免费WiFi

1.1.前提准备

1.1.1.电脑插入无线网卡(台式需要一般需要插入网卡,笔记本一般不需要)

1.1.2.电脑安装360免费WiFi软件

1.2.部署环境

1.2.1.在360免费WiFi 设置中配置WiFi名称和WiFi密码

在这里插入图片描述

1.2.2.手机连接此无线WiFi。

1.2.3.在360免费WiFi 中打开已连接的手机,点击图标,就能清楚的看到下载和上传的网速。

在这里插入图片描述

1.2.4.在360免费WiFi 中打开已连接的手机,点击限速管理图标,开始设置下载速度和上传速度,下载速度2KB/s,上传速度10KB/s,那么表示下载的最大速度为每秒2KB/s,上传的最大速度为每秒10KB/s。

1.2.5.以上方法通过限制下载上传的网络请求,来达到测试弱网的目的。

在这里插入图片描述

2.浏览器限速,打开F12控制台

2.1.Edge:Edge的设置如下,如果要自己设置网速,就点击自定义设置

在这里插入图片描述

2.2.Chrome:Chrome网络设置

在这里插入图片描述

3.Fiddler

3.1.Fiddler中启动弱网:打开Fiddler,Rules->Performance->勾选 Simulate Modem Speeds。

3.2.勾选之后访问网站会发现网络慢了很多。

在这里插入图片描述

4.设置弱网的参数:打开Fiddler,Rules—>Cutomize Rules。

在这里插入图片描述

4.1.首先来分析一下这几行代码

if (m_SimulateModem) {
 // Delay sends by 300ms per KB uploaded.
  oSession["request-trickle-delay"] = "300"; 
  // Delay receives by 150ms per KB downloaded.
  oSession["response-trickle-delay"] = "150";
  }

4.2.首先来判断m_SimulateModem是否为true(是否开启),也就是是否设置了弱网模式。在前边我们可以找到这样的代码默认没有开启, 当勾选了Simulate Modem Speeds时, var m_SimulateModem: boolean = false;会变成 var m_SimulateModem: boolean = true;有兴趣的小伙伴或者童鞋们可以自己验证一下说的正确不。

// Cause Fiddler Classic to delay HTTP traffic to simulate typical 56k modem conditions
public static RulesOption("Simulate &Modem Speeds", "Per&formance")
var m_SimulateModem: boolean = false;

4.3.Delay sends by 300ms per KB uploaded:上传1KB内容需要300ms,转化一下上传速度:1Kb/0.3s = 3.3KB/s,也就是说网络上行速度只有3.3KB。

oSession[“request-trickle-delay”] =300;

4.4.Delay receives by 150ms per KB downloaded:下载1KB内容需要150ms,转化后的下载速度:1KB/0.15s=6.6KB/s,也就是说网络下载速度只有6.6KB。

oSession["response-trickle-delay"] = "150";

4.5.如果你想设置下载的速度为50KB/s,你则需要设置Delay 时间为 20ms。也可以限制上传的速度,调整oSession[“response-trickle-delay”]的值即可。

5.编写自定义脚本:可以扩展CustomRules.js里的逻辑,参照Jscript的文档可以在模拟弱网环境中加入更多自定义的逻辑,这里实现了一个随机延时量设置,使得网络带宽不是恒定为一个低速的值,而是会在一定范围内随机抖动,这里的randInt(1,50)应该很好理解,代表1-50中的一个随机整数,这样就会出现偶尔有延迟偶尔网络又良好的情况。

5.1.参考代码如下

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,50);
    // Delay receives by 150ms per KB downloaded.
    oSession["response-trickle-delay"] = ""+randInt(1,50);
}

5.2.此外,
(1)路由器修改上行和下行速度
(2)Charles弱网模拟(后期关于这个工具宏哥也可能出一个系列的文章)
(3)iOS手机自带Network Link Conditioner 弱网模拟。

十三.验证效果

1.为了更清楚地查看效果,就单独抓取百度网址的包,就把访问百度,然后搜索“北京-宏哥”的请求和响应抓取,看一下效果

2.具体操作步骤如下:

2.1.打开fiddler–选择过滤器

在这里插入图片描述

2.2.勾选“Use Filters”,选择“Show only the following Hosts(仅显示以下主机)”,在下边的编辑框中输入百度网址

在这里插入图片描述

2.3.点击“Action(动作)”,选择“Run Filterset now(现在运行筛选器)”

在这里插入图片描述

2.4.没有启动Fiddler弱网,开始抓包,访问百度,搜索“北京-宏哥”

在这里插入图片描述

2.5.Ctrl+A全选所有的会话,查看Statistics和Timeline

在这里插入图片描述
在这里插入图片描述

2.6.启动Fiddler弱网,再次重复第4步和第5步,是不是感觉比刚才很卡了,一直在加载转圈。

2.7.查看Statistics和Timeline

在这里插入图片描述
在这里插入图片描述

十四.恢复设置

1.完成测试之后,需要再次执行:打开Fiddler,Rules->Performance->勾选 Simulate Modem Speeds,关闭弱网模拟。否则上网的速度在一启动Fiddler就会有影响,切记切记!!!

十五.小结

1.Fiddler模拟弱网环境的局限性

2.Fiddler进行限速较为简单和灵活,配置也较为方便,但是由于它是一个应用层的HTTP的代理,只能模拟该层上的行为,对于一些复杂的网络层的丢包、重传等恶劣情况就不能很好的模拟出来,而且对于其他协议的应用也不支持。

相关文章:

  • 【最长公共子序列】两行字符串,不交叉相连,最多连线
  • 终端I/O.
  • MySQL触发器简介
  • 计算机SSM毕设推荐 40个高质量软件工程毕设项目分享【源码+论文】(四)
  • C语言利用函数解决问题:1.实现reverse函数完成数组元素的逆置;2.将两个数组的元素进行互换;3.统计二进制中1的个数
  • Html:网站设计的内容概览简介、网页设计流程/工具/内容组成、脚本代码之详细攻略
  • 网络安全笔记 -- XXEXML(利用、检测、绕过)
  • c语言小项目(静态通讯录)
  • 数据结构与算法——左程云09
  • C++异常
  • 【ASM】字节码操作 如何使用 visitFrame
  • 【Spring Boot 集成应用】 OAUTH2统一认证单点登录中的各种模式说明
  • 数据链路层的检错技术——循环冗余校验CRC(Cyclic Redundancy Check)
  • 【C++】IO流
  • Pytorch理解
  • GraphQL学习过程应该是这样的
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • Python学习之路13-记分
  • SegmentFault 2015 Top Rank
  • V4L2视频输入框架概述
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 对象管理器(defineProperty)学习笔记
  • 来,膜拜下android roadmap,强大的执行力
  • 利用jquery编写加法运算验证码
  • 前端
  • 前端路由实现-history
  • 区块链共识机制优缺点对比都是什么
  • 日剧·日综资源集合(建议收藏)
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 我的zsh配置, 2019最新方案
  • 因为阿里,他们成了“杭漂”
  • 阿里云服务器购买完整流程
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • # Apache SeaTunnel 究竟是什么?
  • (14)Hive调优——合并小文件
  • (2)(2.4) TerraRanger Tower/Tower EVO(360度)
  • (9)STL算法之逆转旋转
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (十)c52学习之旅-定时器实验
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (一)SpringBoot3---尚硅谷总结
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)Scala的“=”符号简介
  • (转)重识new
  • (转载)Linux网络编程入门
  • *Algs4-1.5.25随机网格的倍率测试-(未读懂题)
  • .NET 5种线程安全集合
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调