App项目测试实战(九)--Fiddler弱网测试
弱网测试
概念
在当今移动互联网盛行的时代,网络的形态除了有线连接,还有2G/3G/Edge/4G/Wifi等多种手机网络连接方式。不同的协议、不同的制式、不同的速率,使移动应用运行的场景更加丰富。
从测试角度来说,需要额外关注的场景就远不止断网、网络故障等情况了。对于弱网的数据定义,不同的应用所界定的含义是不一样且不清晰的,不仅要考虑各类型网络最低速率,还要结合业务场景和应用类型去划分。按照移动的特性来说,一般应用低于2G速率的都属于弱网,也可以将3G划分为弱网。除此之外,弱信号的Wifi通常也会被纳入到弱网测试场景中。
为何要进行弱网测试?
例如:进地铁、上公交、进电梯等,如果app没有对各种网络异常进行兼容处理,那么用户可能在日常生活中遇到APP闪退、ANR、数据丢失等问题。因此,app网络测试,特别是弱网测试显得尤为重要。
当前所在项目的产品是一款适配于低资源环境的医疗IT系统,目前主要是在坦桑尼亚地区使用。根据资料显示,在坦桑尼亚等东非国家,普遍使用的都是2G网络,覆盖率达到40%以上,3G网络的覆盖都非常少,并且稳定性较差。由此,对于当前的App应用交付要求即至少在弱网以及无网状态下能正常运行。
原理
通过Fiddler来模拟限速
- Fiddler本来就是个代理,它提供了客户端请求前和服务器响应前的回调接口
- Fiddler的模拟限速是在客户端请求前自定义限速,通过延迟发送数据或接收的数据的时间来限制网络的下载速度和上传速度,从而达到限速的效果
步骤
-
打开Fiddler,设置代理,并允许远程连接
-
手机连接电脑的热点网络,或者同在一个局域网内
-
手机网络连接中,设置网络代理,IP是电脑的同网段IP地址,端口是8888
-
打开网速模拟模式开关(Rules → Performances → Simulate Modem Speeds )
-
手机访问APP,或者用手机浏览器访问网络,观察功能响应或者页面刷新速度
-
如果需要自定义网络的速度,需要到自定义规则中配置(Rules → Customize Rules)
网络环境测试机带宽参考测试数据 -
弹出来了Fiddler Script页面,找到以下代码进行修改
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded.
oSession["request-trickle-delay"] = "300"; # 每上传lKB 数据,延时0 3 秒
// Delay receives by 150ms per KB downloaded.
oSession["response-trickle-delay"] = "150"; # 每下载lKB 数据,延时0.15 秒
2G网络:
-
上行:2.7K
下行:9.6K
上行:[1/(2.7/8)]X1000=2962ms
下行:[1/(9.6/8)]X1000=833ms
- 3G网络:
-
电信:上行:1.8M 1.8x1024
下行:3.1M 3.1x1024
上行:{1/[(1.8x1024)/8]}x1000=4.34ms
下行:{1/[(3.1x1024)/8]}x1000=2.52ms
-
移动:上行:384k
下行:2.8M
上行:[1/(384/8)]x1000=20.8ms
下行:{1/[(2.8x1024)/8]}x1000=2.79ms
-
联通:上行:5.76M
下行:7.2M
上行:{1/[(5.76x1024)/8]}x1000=1.35ms
下行:{1/[(7.2x1024)/8]}x1000=1ms
- 原文地址:https://blog.csdn.net/dpl12/article/details/104474480
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义