一、背景
随着网络技术的不断发展,Wi-Fi、4G甚至5G也已经开始普及,但是移动设备的网络环境复杂,易出现弱网环境,如骑手配送出入各种高楼之间、楼梯间、电梯、停车场、通勤地铁、高铁隧道、偏僻的景区、晚上wifi使用高峰期等,优化弱网体验始终是业务的重要诉求,也是一个很重要的测试方向。
二、弱网定义
弱网是个相对性的概念,3G时代2G算是弱网,4G时代3G也可以算是弱网。常用的衡量网络质量的指标有:
-
带宽:带宽指的是单位时间内的数据传输量,带宽越大,单位时间传输的数据量越大,数据的传输速率越高。
-
延时:报文从进入网络到最后离开网络所需要的时间,一般ping值越低,网速越快,延时越低;反之,延时过高将导致API数据迟迟不得返回,最终加长应用的页面加载时间,影响用户的使用体验。
-
抖动:抖动和延时有相对密切的关系,但抖动主要指的是在网络上连续传输的数据包具有不同的延时,抖动过高将导致数据丢包率增加和网络阻塞严重。
-
丢包:丢包指的是数据传输过程中,数据包的数据无法透过网络达到目的地,出现丢包是正常的现象,但如果丢包率过高,会严重数据的传输质量,造成数据的不完整。
弱网测试就可以针对以上这些指标进行模拟。
三、弱网测试的目的
-
提高不同网络场景下的用户体验
使用过程中,弱网的高延迟和高丢包,在实时性要求非常高的场景,容易损失用户体验。
-
验证应用在不同网络场景下表现是否符合预期,会不会触发未知的系统bug
在日常需求中,经常会遇到一些用户反馈一些无法简单复现的bug,有很大一部分的bug是由于用户自身的网络环境波动,或者是本身网络环境较为恶劣。而服务面对这种恶劣的网络环境的健壮性不够,导致会出现一些意想不到的bug。
具体地,弱网测试最重要的四个目的:
-
保证方案数据的一致性和准确性。例如:网络状况比较差时,不能发生方案内的数据丢失或者数据异常
-
保证请求不发生堆积,导致数据错乱。例如:弱网情况下,商家用户频繁触发充值,导致请求堆积,金额被扣但充值实际未到账,或被扣金额只有一笔,但实际充值到账多于预期的情况,涉及公司资损
四、弱网测试的关注点
-
弱网测试:功能在高丢包高延时下的实现等
-
无网状态:断网功能、本地数据存储
-
网络切换:wifi-有线-无网及之间切换。包括:wifi-2G/3G/4G、wifi-无网、2G/3G/4G-wifi、2G/3G/4G-无网、无网-2G/3G/4G、无网-wifi等等
五、如何进行弱网测试
-
SIM卡的网络切换:3G、4G卡都可以设置关闭3G/4G,只走2G网络。
-
具体弱网场景测试,包括高楼之间、楼梯间、电梯、停车场、通勤地铁、高铁隧道、偏僻的景区、晚上wifi使用高峰期等。
-
使用虚拟机模拟网络速度,如:树莓派搭建的弱网测试仪。
-
使用软件进行网络代理,搭建不同的网络带宽、延时率、丢包率。
六、弱网测试常用工具
通过设备连接到PC上进行弱网络测试,比如fiddler,Charles,NET,Clumsy,WANem等
在专有服务器上构建弱网络WiFi,移动设备连接该WiFi进行弱网络测试,相关的技术方案有ATC、WANem等
以独立 app 的方式,为用户提供弱网络模拟服务。比如QNET,在Android设备上直接安装使用
工具名称 |
描述 |
优缺点 |
使用链接 |
---|---|---|---|
抓包工具,PC 端安装,作为代理服务器,设置延迟参数,模拟不同的网络情况 |
只能模拟延迟,如丢包、带宽等等是无法支持的 |
||
Charles |
抓包工具,PC端安装,作为代理服务器,可以支持延迟、丢包、带宽等弱网配置 |
弱网配置项只支持HTTP/HTTPS |
|
NEWT |
微软早年推出的弱网测试工具,PC 端安装,作为代理服务器,支持延迟、丢包、带宽等弱网配置 |
在win10上按照配置步骤配置后未生效,后续未再尝试 |
|
Clumsy |
专门针对弱网测试的工具,PC 端安装,作为代理服务器,支持延迟、丢包、带宽等弱网配置 |
对比的这几款软件中使用最简单的软件 |
|
ATC |
Facebook推出,需要部署在 Linux 系统上,移动端设备通过浏览器访问就可以切换不同的网络环境,还可以同时支持多台设备连接 |
环境部署较为复杂 |
|
WANem |
广域网模拟器,支持从光盘启动,可以运行于虚拟机上,也可以直接刷到物理设备上 |
虚拟机部署不支持上下行网络设置 |
|
QNET |
仅适用于安卓 |
简单使用推荐使用Clumsy,环境部署简单,使用门槛低;要模拟完全真实环境推荐WANem,直接刷到交换机上;安卓app推荐使用QNET