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

《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(11)-Charles如何模拟弱网环境的更多相关文章

  1. 《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(3)-再识Charles

    1.简介 上一篇通过宏哥的介绍想必各位小伙伴或者童鞋们对Charles已经有了一个理性地认识,今天宏哥在从Charles的外貌介绍和分享一下,让小伙伴们或者童鞋们再对Charles有一个感性的认识,今 ...

  2. 《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(4)-Charles如何设置捕获会话

    1.简介 前边几篇宏哥介绍了Charles界面内容以及作用.今天宏哥就讲解和分享如何设置Charles后,我们就可以愉快地捕获会话,进行抓包了.因为上一篇许多小伙伴看到宏哥的Charles可以分开看到 ...

  3. 《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(5)-Charles如何设置捕获Https会话

    1.简介 在大数据时代,互联网时代,个人信息安全尤为重要,网络安全在近日多起电信诈骗事情发酵下的情况下,引起国家,企业,个人对于互联网安全进一步的重视.而之前很多以http协议传输的网站出现的网站信息 ...

  4. 《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(6)-Charles安卓手机抓包大揭秘

    1.简介 Charles和Fiddler一样不但能截获各种浏览器发出的 HTTP 请求,也可以截获各种智能手机发出的HTTP/ HTTPS 请求. Charles也能截获 Android 和 Wind ...

  5. 《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(2)-初识Fiddler让你理性认识一下

    1.前言 今天的理性认识主要就是讲解和分享Fiddler的一些理论基础知识.其实这部分也没有什么,主要是给小伙伴或者童鞋们讲一些实际工作中的场景,然后隆重推出我们的猪脚(主角)-Fiddler. 1. ...

  6. 《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(7)-Fiddler状态面板-QuickExec命令行

    1.简介 Fiddler成了网页调试必备的工具,抓包看数据.Fiddler自带命令行控制,并提供以下用法.Fiddler的快捷命令框让你快速的输入脚本命令. 除了输入默认命令,也可以自定义命令,你可以 ...

  7. Fiddler系列教程2:手机抓包图文教程

    上篇Fiddler教程,我们教了大家Fiddler安装配置及如何使用Fiddler进行基本的Http抓包及模拟请求,今天给大家介绍下如何使用Fiddler进行手机抓包. 运行环境为Windows 10 ...

  8. 《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(4)-会话面板和HTTP会话数据操作详解

    1.简介 按照从上往下,从左往右的计划,今天就轮到介绍和分享Fiddler的会话面板了. 2.会话列表 (Session list) 概览 Fiddler抓取到的每条http请求(每一条称为一个ses ...

  9. 《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(5)-Fiddler监控面板详解

    1.简介 按照从上往下,从左往右的计划,今天就轮到介绍和分享Fiddler的监控面板了.监控面板主要是一些辅助标签工具栏.有了这些就会让你的会话请求和响应时刻处监控中毫无隐私可言.监控面板是fiddl ...

  10. 《吐血整理》保姆级系列教程-玩转Fiddler抓包教程(6)-Fiddler状态面板详解

    1.简介 按照从上往下,从左往右的计划,今天就轮到介绍和分享Fiddler的状态面板了. 2.状态面板概览 Fiddler的状态面板概览,如下图所示: 3.状态面板详解 Fiddler底端状态栏面板详 ...

随机推荐

  1. pandas用到的知识点总结

    pandas中文学习官网地址 https://www.pypandas.cn/ 我自己用到的知识点汇总 基础版: dates = pd.date_range('20130101', periods=6 ...

  2. element 换肤

    官网操作 https://element.eleme.cn/#/zh-CN/component/custom-theme 然后 执行 et -i 报错了!!! 查了一下,说的是node版本过高?那我就 ...

  3. Jmeter添加while控制器

    通过添加while控制器,可以实现条件+循环判断,使while控制器内的子线程根据之前线程的返回(while控制器内外变量皆可)进行触发+循环的控制. 原理如下:通过Condition判断条件语句是否 ...

  4. 使用 Application Loader 上传 IPA 包失败。提示信息:Please sign in with an app-specific password. You can create one at appleid.apple.com

    摘自:https://www.cnblogs.com/strengthen/p/10881085.html 更新APP,使用 Application Loader 上传 IPA 包失败.提示信息:Pl ...

  5. 【peewee】Python使用peewee时where中不同类型比较的问题

    问题 以学生表为例,TableStudents表中age字段是TextField类型,想要筛选出18岁以上的学生 TableStudents.select().where(TableStudents. ...

  6. 如何在Windows 10上使用VS2019 编译C

    一.安装VS 2019 首先VS官网上下载免费的VS2019 community.我们的目的是在Windows上使用该软件编译C,如下图所示,把使用C++的桌面开发打上勾 二.创建.C 项目 1.打开 ...

  7. Vuex----Getters

    Getter 用于对 Store中的数据进行加工处理形成新的数据. Getter 不会修改 Store 中的原数据,它只起到一个包装器的作用,将Store中的数据加工后输出出来. const stor ...

  8. Java mysql查询数据库重复数据(单个或多个字段)

    查询表重复数据: SELECT * FROM 表1 f WHERE (f.字段1,f.字段2) in (SELECT 字段1,字段2 FROM 表1 GROUP BY 字段1,字段2 HAVING c ...

  9. C语言II—作业03

    1.作业头 这个作业属于哪个课程 https://edu.cnblogs.com/campus/zswxy/SE2020-3 这个作业要求在哪里 https://edu.cnblogs.com/cam ...

  10. 4vue 属性绑定

    属性绑定v-bind <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...