弱网测试

[toc]

第1节:弱网测试

本文中有引用的文章:

本文核心:

前言

网络测试:

序号 类型 问题示例 期望结果
1 无网 没有提示 提示”请求失败”
2 弱网 没有提示 提示”请求超时”
3 复网 显示的还是无网的页面 自动发起请求,恢复显示正常页面
4 切网 —- —-

1、无网

问题示例:没有提示

优化方案:

1、Toast提示”请求失败”(与2不共存)

2、页面显示无网络页面,内含刷新按钮(与1不共存)

没有退出操作页面,支持退出。而不是无网络时候,卡住不动。

序号 描述 举例 正常 异常 其他
1 没有退出操作页面 网页游戏加载页 OK 新增退出

2、弱网

具体可优化问题:详见下节 弱网问题与优化

一、弱网测试的关注点

1、关注点

弱网测试的目的就是尽可能保证用户体验,关注的关键点包括:

以下摘自:腾讯-AllTests软件测试-弱网测试工具-QNET

1、页面响应时间是否可以接受,关注包括热启动、冷启动时间、页面切换、前后台切换、首字时间,首屏时间等。

2、页面呈现是否完成一致。

3、超时文案是否符合定义,异常信息是否显示正常。

4、是否有超时重连。

5、安全角度:是否会发生DNS劫持、登陆IP更换频繁、单点登陆异常等。

6、大流量事件风险:是否会在弱网下进行更新Apk包、下载文件等大流量动作。

2、实际测试点总结

以下摘自:浅谈APP如何进行弱网测试

弱网环境测试点总结

完成弱网环境搭建后,一起来梳理下弱网测试场景和测试点。

场景一

弱网环境下某个操作响应时间

「原因」APP
用户对等待时间容忍度低,如果弱网环境Loading
超过5s,用户很容易Kill
应用后再次进入应用

「测试点」性能测试中,加入弱网环境测试点,检测各个场景网络请求的API
消耗时间

场景二

弱网环境下直至超时,UI
界面友好度&APP
是否稳定

「原因」容错机制主要是考虑弱网情况下带来的不稳定,常见的问题是:Loading
超时导致ANR or Crash

「测试点」弱网环境直至超时,判定为断网状态,界面提示友好且理解无歧义

场景三

断网环境下,是否自动重发请求

「原因」不同模块,开发对请求处理不同。测试前可了解,代码是否支持自动重复请求,自动重发请求的频率是什么?

「测试点」断网后恢复网络,是否堆积网络请求(目前来说理财模块10s左右无返回,则会重发请求),此时请求和返回正常情况下,是否出现异常情况。比如1次支付操作,断网后堆积多个支付请求,恢复网络后因堆积多个支付请求,是否完成多次支付

PS
:断网后恢复网络,考虑APP
进行操作目的是否伤害用户体验,通过哪种手段可以达到操作目的同时用户体验无感或者低伤害

比如,微信希望在线升级某些内容,会自动监听用户是否插着电or
连着WiFi
,一旦监听符合上述场景,APP
自动升级:

  • 插电场景:确保升级过程中,耗电不会导致手机低电量甚至没电
  • WiFi
    场景:确保升级过程中,流量消耗不会使用用户话费中流量包,不会导致因消耗话费流量伤害用户体验

场景四

网络请求中,kill
进程 (导致APP登录状态掉线)

  • 登录同一个账号成功,应该不继续相同网络请求
  • 登录不同账号成功,应该不继续相同网络请求

常见弱网问题和原因分析

场景一

上传大图或者多图时,在弱网络环境下出现进度条走到一半卡住,然后又从头开始

「原因」采用分段上传方式,直至请求超时,分段传输没有结束,代码逻辑不对,导致每次重试都重头上传,一直循环

场景二

在弱网络环境下,容易出现登录不上或者登录后立即掉线

「原因」登录没有缓冲机制,而请求超时时间的设置没有区分同网络情况

「解决方案」建议开发针对WiFi、2G、3G、4G、5G
设置不同的超时时间

场景三

弱网络环境下,请求的数据返回时间较长,等待的过程中,如果页面上的相关控件仍然可以操作,则容易出现闪退现象、触发底部时获得原页面请求数据。

「原因」依赖数据的控件操作,在数据返回前没有做兼容处理

场景四

搜索时输入关键字会连续发请求,停下时,显示最终的关键字搜索结果,但很快又会被前面的关键字搜索结果覆盖了。

「原因」中间的请求返回较慢,显示了最终的结果后,之前的请求返回的数据应不做处理。

其他问题场景补充:

1、用户登录应用时下载初始化数据,下载过程中因网速太慢点击取消并重新登录,数据下载过程中、下载失败后,未进行数据回滚,中止后重新下载,出现数据重复。

2、用户点击数据上传,数据上传过程中网络弱且不稳定,基于联网状态自动触发数据上传,导致出现数据重复写入,形成脏数据

3、在弱网环境下,用户输入用户名和密码点击登录,应用链接超时后,按照强网业务逻辑处理,导致返回超时异常。

4、在弱网环境下,用户输入用户名和密码后点击登录,数据下载超时,加载数据严重依赖于后来的异步加载。数据还没来得及返回,应用跳转到下个activity,导致崩溃。

二、弱网网络测试方案

常见方案:

序号 方案 描述 缺点
1 前往弱网环境 电梯、地下室、隧道 不实际
2 搭建弱网环境 购买一些路由网络设备,在全公司范围搭建一个弱网环境。
(相关的技术方案有Facebook的ATC和腾讯的WeTest-WiFi。)
搭建成本高
3 使用网络代理 在PC上安装网络抓包工具,将设备的网络代理到PC上。
通过设置PC上抓包工具的延时来进行弱网络模拟。
(比如Fiddler,Charles,NET-Simulator)
4 安装弱网工具 苹果弱网测试工具-Network Link Conditioner(支持手机和Mac)
腾讯弱网测试工具-QNET(目前仅支持Android手机)

三、弱网相关术语

1、衡量网络好坏的标准

(1)带宽(吞吐量):单位时间内传输的数据量(bps),反映网络的传输能力

(2)丢包:数据丢包个数=发送的数据包数-接受的数据包数,反映为网络的可靠性

(3)时延:数据包从发送开始到接受到该数据所耗费的时间,反映网络速度

(4)抖动:指时延的变化,反映网络的稳定性

(5)乱序:指接受到的数据包顺序和发送顺序不一致的次数,反映网络稳定性。乱序比较 严重时,丢包也会比较严重,所以一般以丢包

2、术语

2.1、上/下行带宽Bandwidth(kbps—千比特每秒)

上行带宽(上行速率):本地信息上传到网络的速率
下行带宽(下行速率):网络信息下载的本地的速率
注:上行速率不等于下行速率,在大多数情况下,下行与上行带宽的比率可达到10:1

2.2、上/下行丢包率packet loss(%)

数据在网络上是以数据包未单位传输的,由于一些原因不能百分百得完成,这时网络会自动根据协议来补办,网速快线路好得时候,包得损失会非常小,补包就会很容易完成,但是线路较差得时候,数据得损失量就会很大,补包就不可能百分之百完成,这种情况下就会造成丢包。
丢包率 = 1 - 单位时间内接收得数据包数 / 发送的数据包数

查看丢包率可以通过ping命令来查看。
在这里插入图片描述
在这里插入图片描述

2.3、上/下行延迟delay(ms)

1-30ms:极快,几乎察觉不出有延迟
31-50ms:良好,没有明显的延迟情况
52-100ms:普通,能感觉出网络有明显延迟
大于100ms:差,有卡顿,丢包并掉线现象

在这里插入图片描述

2.4、DNS延迟(ms)

DNS是域名解析服务器,延迟就是和这个服务器的连接速度,DNS的作用就是把网址解析成IP地址,因为电脑网络连接只能通过IP连接。

3、各个网络环境参数

常见网络设置参考:

网络环境 上/下行带宽(kbps) 上/下行丢包率(%) 上/下行延迟(ms) DNS延迟(ms)
2G 20/50 0/0 500/400 0
3G 330/2000 0/0 100/100 0
wifi 33000/40000 0/0 1/1 0
4G 40000/80000 0/0 15/10 0
无网(飞行模式或关闭网络)
带宽有限环境 32/32 0/0 200/100 0

网络超时设置参考:

网络环境 上/下行带宽(kbps) 上/下行丢包率(%) 上/下行延迟(ms) DNS延迟(ms)
网络超时(请求) 33000/40000 100/0 100/100 200
网络超时(完全丢包) 33000/40000 100/100 100/100 200
网络超时(响应) 33000/40000 0/100 100/100 200

特殊网络设置参考:

网络环境 上/下行带宽(kbps) 上/下行丢包率(%) 上/下行延迟(ms) DNS延迟(ms)
低丢包率、低时延的环境(上行) 33000/40000 10/0 100/100 200
低丢包率、高时延的环境(上行) 33000/40000 10/0 350/350 350
低丢包率、低时延的环境(下行) 33000/40000 0/10 100/100 200
低丢包率、高时延的环境(下行) 3000/40000 0/10 350/350 350
低丢包率、低时延的环境 33000/40000 10/10 100/100 200
低丢包率、高时延的环境 33000/40000 10/10 350/350 350
高丢包率的环境(上行) 33000/40000 90/0 100/100 200
高丢包率的环境(下行) 33000/40000 0/90 100/100 200
高丢包率的环境 33000/40000 90/90 100/100 200

四、网络测试工具

1、可直接安装的弱网工具

如下图:

1、进入设置找到开发者(Developer)选项。(如果没有该选项,请将手机接入开发人员电脑Xcode,即可自动生成。)

2、在开发者(Developer)选项中 –> Network Link Conditioner

2、打开Enable,并选择需要测试的网路开始测试

3、选择完毕后ios手机及会变更成指定网络环境(全局变更),可以开始测试弱网情况。

image-20230516164829914

4、如果需要自定义
①、选择某个Profile,进入其详情

②、在该Profile的详情里,选择Duplicate Profile,修改对应数值后,即新增完成。

image-20230518120557481

每个类型中可以查看对应的数据。数据内容包括如下部分。

序号 类型 描述 其他
1 in Bandwidth 下行带宽,即下行网络速度
2 In packet loss 下行丢包率
3 in delay 下行延迟,单位ms
4 out bandwidth 上行带宽
5 out packet loss 上行丢包率
6 out delay 上行延迟
7 DNS delay DNS解析延迟
8 protocol 支持Any,IPV4、IPV6
9 interface 支持Any,WI-Fi,cellular(蜂窝网)

Xcode弱网测试工具的下载及安装过程如下:

1、进入 https://developer.apple.com/download/all/

2、搜索 Network Link Conditioner

image-20230516171948118

虽然没有Network Link Conditioner的选项。但其实其实包含在Additional Tools for Xcode 中的。

3、下载与自己xcode版本匹配的插件。如 Additional_Tools_for_Xcode_14.1.dmg

4、安装 Additional_Tools_for_Xcode 。安装过程如下图:

image-20230516171241524

5、安装完后,即会在你的系统设置里新增一个Network Link Conditioner选项。

image-20230516171406364

6、Mac版的Network Link Conditioner使用与iOS版没什么差别。

image-20230516171549486 image-20230516171650795

1.2、腾讯弱网测试工具-QNET(目前仅支持Android)

1、工具下载:

QNET官网(已失效):https://wetest.qq.com/products/qnet

其他地址(亲测有效-2023.05.17):http://www.5577.com/s/563515.html

2、工具使用/测试步骤:

①打开工具,授权登录

②选择应用,开启模拟

③在应用内,可自行按需切换模拟环境

image-20230518110844670 image-20230518105919986 image-20230518111702681

2、网络抓包代理工具

序号 工具名 工具描述 其他
1 Charles 抓包工具,PC端安装,作为代理服务器,可以支持延迟、丢包、带宽等弱网配置。弱网配置项只支持HTTP/HTTPS。
2 Fiddler 抓包工具,PC 端安装,作为代理服务器,设置延迟参数,模拟不同的网络情况。只能模拟延迟,如丢包、带宽等等是无法支持的。

2.1、Charles

详见:Charles弱网模拟

2.2、

五、移动端下各类诊断方法与工具

以下内容摘自:移动端下各类诊断方法与工具

工具/方法 OS 使用场景及使用说明 优点 缺点 工具地址
华佗ping诊断 android/ios/pc 获取客户端IP,ldns,域名请求ip,请求耗时
https://cloud.tencent.com/developer/article/1489036
无需客户端,直接浏览器请求 有时会获取不到ip,dns信息,或不准确 https://ping.huatuo.qq.com/
腾讯云诊断APP android 分析dns劫持,http 302劫持。获取客户端IP,ldns,域名请求ip,请求耗时,可靠性高,信息较全
https://cloud.tencent.com/developer/article/1489043
无需root 需要安装app http://imgcache.gtimg.cn/huatuo/apks/capture.apk
iNetTools ios 获取dns解析,延迟,分析dns劫持
https://cloud.tencent.com/developer/article/1608239
可准确获取ping数据和域名解析信息 无法对url进行诊断,需要安装app https://itunes.apple.com/cn/app/inettools-ping-dns-portscan/id561659975?mt=8
笔记本共享热点,通过fiddler抓包 android/ios/pc pc共享热点,通过fiddler来进行抓包,分析业务的http请求 fiddler可抓https包 自己模拟可以,让用户来用比较困难 https://www.telerik.com/fiddler
手机WIFI接入,走云主机代理抓包 android/ios/pc 检查手机端问题,还是网络问题 对用户侧操作比较简单有些公司wifi有限制代理 网络环境变了,请求网络是云主机到服务端 https://www.telerik.com/fiddler
PC andorid模拟器 Nox android 在pc下用模拟器进行测试,抓数据包,分析业务的请求 可轻松root安装抓包软件 自己模拟可以,让用户来用比较困难 https://cn.bignox.com/
华佗抓包工具 android 需要真实获取用户请求数据包
https://cloud.tencent.com/developer/article/1489050
可直接移动端抓包,无需root 部分app无法进行抓包 http://imgcache.gtimg.cn/huatuo/apks/capture.apk
Stream 抓包工具【推荐】 IOS 需要真实获取用户请求数据包,可抓https请求
https://cloud.tencent.com/developer/article/2116252
可直接移动端抓包,无需root 部分app无法进行抓包 https://apps.apple.com/cn/app/stream/id1312141691
QuickSource 抓包工具 https://apps.apple.com/cn/app/quicksource/id1449472048

End