《爆肝整理》保姆级系列教程-玩转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或者其他网络模式。

如果我们只想模拟指定网站的慢速网络,Charles就可以帮你排忧解难,这就今天重点分享和介绍的。

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做弱网测试的方法,让大家对网络测试有一个初步的认识。好了,今天时间也不早了,宏哥就讲解和分享到这里,感谢您耐心的阅读,希望对您有所帮助。