《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(11)-Charles如何模拟弱网环境
1.前言
张三:“我写的软件好奇怪啊,在网络好的时候一点问题也没有,但是信号差的时候明显卡顿,看来我只能一直蹲在卫生间、电梯或者地铁(信号差)调bug了”。
Charles:“哈哈哈,傻孩子,我就自带弱网工具呀,在Proxy-->Throttle Setting下,使用前要记得勾选Enable Throttling 。”
Charles眨眨眼:“如果你想指定网站,可以勾选Only forselected hosts,然后在对话框的下半部分设置增加指定的hosts项。”
2.简介
在线上环境通常有些因为网速慢导致的bug,在本机无法重现,那时候就很抓瞎,如果嫌远程麻烦,推荐使用throttle。支持对Bandwidth(带宽)、Utilistation(利用百分比)、Round-trip(往返延迟)、MTU(字节)进行配置,并且支持3G/4G或者其他网络模式。
APP的应用场景根据人的使用情况密切相关,所处的网络环境多变,APP的弱网测试变得很重要;所以在我们做APP测试的时候需要对不同的网络格式、无网的情况进行测试,模拟多变的APP应用场景。在做移动开发的时候,我们常常需要模拟慢速网络或者高延迟的网络,以测试在移动网络下,应用的表现是否正常(如模拟应用在网络较慢时的响应时间等情景)。Charles 对此需求提供了很好的支持。
3.网络测试用例
我们首先来简单的了解一下,网络测试用例,如下图所示:

4.弱网测试关注点
根据网络测试用例,我们来看看我们需要重点关注的几点如下:
APP反应慢的时候是否有友好的提示信息
APP弱网情况下,提交数据不会产生重复数据
APP 不会出现Crash、ANR 的情况
好了通过前边的理论知识,我们大致知道网络测试是怎么回事了,下面宏哥讲解一下,如何用Charles模拟弱网环境。
5.Charles设置弱网环境
1.打开Charles,点击【Proxy】-->【Throttle Settings】 。如下图所示:

2.勾选【 Enable Throttling】,开启了限速模式。如下图所示:

Throttle Setting配置参数字段说明:
Only for selected hosts :表示仅选择的域名做弱网限制,如上图所示,只限制localhost:9999域名的请求,其他的请求不做限制;若不勾选,那么对所有的请求都进行限制;
Throttle preset :可以选择要模拟的网速,是Charles预设的网络设置 ,下拉选项由上到下,网速越来越好。
ADSL:属于DSL技术的一种,全称Asymmetric Digital Subscriber Line( 非对称数字用户线路),亦可称作非对称数字用户环路。是一种新的数据传输方式。
VDSL:是一种非对称DSL技术,全称Very High Speed Digital Subscriber Line (超高速数字用户线路)。和ADSL技术一样,VDSL也使用双绞线进行语音和数据的传输。VDSL是利用现有电话线上安装VDSL,只需在用户侧安装一台VDSL modem。最重要的是,无须为宽带上网而重新布设或变动线路。
ISDN:综合业务数字网(Integrated Services Digital Network,ISDN)是一个数字电话网络国际标准,是一种典型的电路交换网络系统。在ITU的建议中,ISDN是一种在数字电话网IDN的基础上发展起来的通信网络,ISDN能够支持多种业务,包括电话业务和非电话业务。
Bandwidth —— 带宽,即上行、下行数据传输速度
utilisation —— 带宽利用率,利用率是总带宽的百分比,大部分modern是100%。
round-trip latency ——请求往返延迟,单位是ms。往返延迟测量客户端和远程服务器之间第一次往返通信的毫秒延迟。它用于客户端向服务器 和 服务器向客户端的每一次请求 。
MTU —— 最大传输单元,即TCP包的最大size,可以更真实模拟TCP层,每次传输的分包情况。
Releability —— 指连接的可靠性,常说的丢包。这里指的是10kb的可靠率。用于模拟网络不稳定。
可靠性是衡量连接完全失败的可能性。这是非常有用的模拟不可靠的网络条件。
可靠性是指定为成功发射10kib消息的可能性。如何值为50%,意味着所有10kib传输一半会成功。较大的邮件或更小的消息或多或少都有可能失败,所以20kib传输将只有25%(1/2 * 1/2)的成功率和5kib传输成功率约70% (0.5开平方)。
Stability —— 连接稳定性常说的网络抖动。也会影响带宽可用性。用于模拟移动网络,移动网络连接一般不可靠。
稳定性是衡量一个连接的可能性是不稳定的,因此降低了质量。
这是非常有用的模拟网络,如移动网络,定期连接质量差。如果连接不稳定,则连接的质量会在不稳定的质量范围内随机下降。此质量值,然后应用作为另一个缩放因子的可用带宽。
unstable quality range(不稳定质量范围)
此处设置主要针对于Stability中设置中的范围。例如stability稳定性设置了70%,那不稳定性则可以设置20~30之间。
3.设置【Thottle preset】,选择不同的网络环境。如下图所示:

4.如果要对个别域名进行限速,则勾选【Only for selecte hosts】, 然后添加相应的域名即可。
5.最后点击【OK】就行了。
6.配置好后,此时,Charles上的小乌龟图标被点亮了,表示弱网模拟开启,可以使用弱网进行测试了。使用完毕再次点击小乌龟即可解除弱网。如下图所示:

6.自定义网络预设
1.设置好各项数值,点击 Add Preset ,如下图所示:
2.填写 Preset 的名称,点击OK ,即可保存成功,之后就可以在Throttle preset 的下拉选项中找到自定义的网络设置,如下图所示:

3.可以将自己常用的网络设置进行自定义保存,不用每次都重新设置。如下图所示:

7.弱网测试实践
互联网的产品,规则就是请求响应时间应小于3秒,认为是优秀;如果是3-5秒,认为是可以接受的。接口测试的请求响应时间其实就是 一个HTTP完整的请求时间之和。
1.未开启弱环境模拟一个请求,先看下正常的网路请求时间,Duration是请求响应时间是2ms,如下图所示:

2.开启弱网环境-设置56kbps Modem 网络环境,查看响应时间,如下图所示,响应时间为13ms,接口明显慢了很多,如下图所示:
8.小结
当前APP网络环境比较复杂,网络制式有2G、3G、4G、5G网络,还有越来越多的公共Wi-Fi。不同的网络环境和网络制式的差异,都会对用户使用app造成一定影响。另外,当前app使用场景多变,如进地铁、上公交、进电梯等,使得弱网测试显得尤为重要。如果app没有对各种网络异常进行兼容处理,那么用户可能在日常生活中遇到APP闪退、ANR(Android Not Response)、数据丢失等问题。因此,app网络测试,特别是弱网测试尤为重要。本文梳理了网络测试要点(主要针对APP)和使用Charles做弱网测试的方法,让大家对网络测试有一个初步的认识。好了,今天时间也不早了,宏哥就讲解和分享到这里,感谢您耐心的阅读,希望对您有所帮助。
《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(11)-Charles如何模拟弱网环境的更多相关文章
- 《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(3)-再识Charles
1.简介 上一篇通过宏哥的介绍想必各位小伙伴或者童鞋们对Charles已经有了一个理性地认识,今天宏哥在从Charles的外貌介绍和分享一下,让小伙伴们或者童鞋们再对Charles有一个感性的认识,今 ...
- 《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(4)-Charles如何设置捕获会话
1.简介 前边几篇宏哥介绍了Charles界面内容以及作用.今天宏哥就讲解和分享如何设置Charles后,我们就可以愉快地捕获会话,进行抓包了.因为上一篇许多小伙伴看到宏哥的Charles可以分开看到 ...
- 《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(5)-Charles如何设置捕获Https会话
1.简介 在大数据时代,互联网时代,个人信息安全尤为重要,网络安全在近日多起电信诈骗事情发酵下的情况下,引起国家,企业,个人对于互联网安全进一步的重视.而之前很多以http协议传输的网站出现的网站信息 ...
- 《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(6)-Charles安卓手机抓包大揭秘
1.简介 Charles和Fiddler一样不但能截获各种浏览器发出的 HTTP 请求,也可以截获各种智能手机发出的HTTP/ HTTPS 请求. Charles也能截获 Android 和 Wind ...
- 《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(2)-初识Fiddler让你理性认识一下
1.前言 今天的理性认识主要就是讲解和分享Fiddler的一些理论基础知识.其实这部分也没有什么,主要是给小伙伴或者童鞋们讲一些实际工作中的场景,然后隆重推出我们的猪脚(主角)-Fiddler. 1. ...
- 《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(7)-Fiddler状态面板-QuickExec命令行
1.简介 Fiddler成了网页调试必备的工具,抓包看数据.Fiddler自带命令行控制,并提供以下用法.Fiddler的快捷命令框让你快速的输入脚本命令. 除了输入默认命令,也可以自定义命令,你可以 ...
- Fiddler系列教程2:手机抓包图文教程
上篇Fiddler教程,我们教了大家Fiddler安装配置及如何使用Fiddler进行基本的Http抓包及模拟请求,今天给大家介绍下如何使用Fiddler进行手机抓包. 运行环境为Windows 10 ...
- 《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(4)-会话面板和HTTP会话数据操作详解
1.简介 按照从上往下,从左往右的计划,今天就轮到介绍和分享Fiddler的会话面板了. 2.会话列表 (Session list) 概览 Fiddler抓取到的每条http请求(每一条称为一个ses ...
- 《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(5)-Fiddler监控面板详解
1.简介 按照从上往下,从左往右的计划,今天就轮到介绍和分享Fiddler的监控面板了.监控面板主要是一些辅助标签工具栏.有了这些就会让你的会话请求和响应时刻处监控中毫无隐私可言.监控面板是fiddl ...
- 《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(6)-Fiddler状态面板详解
1.简介 按照从上往下,从左往右的计划,今天就轮到介绍和分享Fiddler的状态面板了. 2.状态面板概览 Fiddler的状态面板概览,如下图所示: 3.状态面板详解 Fiddler底端状态栏面板详 ...
随机推荐
- developer mode
PS C:\Windows\system32> reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersio ...
- async await和promise的区别,和使用方法
async和promise都是异步方法,区别是async生成的结果是promise对象,async是promise的终结版. await只能在async中使用,await是阻塞的意思,就是暂停,你一起 ...
- 网络IO模型_01
4种情况: 1.输入操作:等待数据到达套接字接收缓冲区: 2.输出操作:等待套接字发送缓冲区有足够的空间容纳将要发送的数据: 3.服务器接收连接请求:等待新的客户端连接请求的到来: 4.客户端发送连接 ...
- OC底层知识之 性能优化
一.CPU和GPU 的介绍 1.1.在屏幕成像的过程中,CPU和GPU起着至关重要的作用 CPU(Central Processing Unit,中央处理器),对象的创建和销毁.对象属性的调整.布局计 ...
- Debug --> python list.sort()食用方法
list.sort(key=lambda x:x[1] , reverse=True) 参数 key 指明按照什么进行排序.lambda是匿名函数,参数的第一个x表示列表的第一个元素,如表示列表中的元 ...
- DE 算法的变体python实现
上演化计算课的时候老师讲了一种DE算法的改进算法CoDE,于是看了下CoDE的论文中的算法步骤: 算法中使用的三种交叉策略: 根据不同的交叉策略采取不同的变异策略: 超参数的三种不同组合(一一对应): ...
- js-label
js中的label就像一个对已有语句块的命名,函数有了函数名我们可以随时调用它,语句块有了语句名我们也可以随时调用它,将他运用到循环中可快速跳出 循环. var num = 0;for (var i ...
- 线程池使用、countDownLatch、以及数据库批量插入 添加配置优化插入与计算
//新建线程池ThreadPoolExecutor cpuThreadPoolExecutor = ThreadUtil.getCpuThreadPoolExecutor(); //使用Countdo ...
- 工控小工具 snmp 、opc ua 、modbus 、tcp、bacnet 开发环境Net6.0
下载地址 https://files.cnblogs.com/files/blogs/745639/net6.0-windows.rar?t=1674114312
- jquery.axios
概念:通过 HTTP 请求加载远程数据. *注:所有的选项都可以通过$.ajaxSetup()函数来全局设置. 回调函数:要处理$.ajax()得到的数据,则需要使用回调函数.beforeSend.e ...