弱网测试方案探索


最近在搞一个智能穿戴项目。
手环手表等智能穿戴项目中最核心的功能是运动计步功能。

计步功能的业务逻辑是主要流程是通过手环设备采集运动数据,通过app提交采集的数据并发送到服务端,在服务端的算法库解析以后,回传给app显示出来。

由此可见,在整个业务逻辑过程中,数据的传输是很重要的一环。

因此有必要针对app开展网络测试。

[TOC]


​ 当前app的网络环境比较复杂,在网络制式上就存在2G3G4G网络,以及越来越多的公共wifi。不同的网络环境以及网络制式的差异,都会对用户使用app造成一定的影响。如果app没有针对各种异常的网络状况进行兼容处理,那么用户就很有可能在日常使用中碰到app闪退ANR数据丢失等严重的问题。

测试维度

图片1.jpg

1、功能测试

对于功能测试,要考虑在各种网络制式下app的功能体验。虽然现在4G网络越来越普及了,但是作为测试,依然要考虑到所有可能发生的场景。虽然不可能把所有网络制式都覆盖到,但是我认为还是有必要在弱网环境下,针对app开展基本的功能测试,保证app在弱网环境下能够把整个业务流程跑一遍。弱网环境下,有时候会对app的功能造成严重的影响,例如:在弱网环境下,同步跑步数据,如果app没有针对这个方面做处理,那么很可能导致app把设备的数据同步过来,但是却无法上传,如果开发人员没有针对这种情况做处理,那么这段数据就可能丢失。

2、响应时间

响应时间这个指标在性能测试中出现比较多,对于用户体验以及app的市场占用率都有很重要的影响。安卓手机一般超过5秒钟无响应就会报ANR的错误,ios手机响应时间过长也会报错。

据调查显示,用户能够忍受的最佳响应时间是2秒以内,超过5秒无响应的话,一般性子比较急躁的用户很可能就会直接退出页面了,如果超过10秒无响应,很多人都会选择杀掉app。app经常处于无响应或者响应时间过长的状态,会导致大批的用户转移到竞争对手的产品上。

3、异常测试

异常测试是指验证app针对各种网络异常情况是否做出了容错处理,这里面包括异常提示信息、出错容错机制、超时判断处理机制、出错以后自动重连等。

从一个app的异常测试结果,就可以看出开发人员对这款app投入的精力以及负责程度。

4、无网测试

无网测试测试主要针对断网的情况下,app各个功能是否受到影响。例如:公司的手环app在开始某个版本出现断网以后,进入周数据统计页面,从服务器请求数据时出现闪退问题。

5、弱网UI测试

​ 弱网的情况下,app很可能出现UI刷新不及时或者不刷新的情况,这时候就可能会导致呈现在用户面前的是一个残缺的页面。偶会也会导致出现页面UI元素错乱的情况。

6、网络切换测试

​ 现在的公共wifi越来越多,用户使用app中很可能发生这种情况:用着4G网络时, 走上十几米突然连上一个咖啡厅的公共wifi,再走一段距离又断开了连接重新切换到4G模式。针对这种情况,我们在测试过程中也要考虑到不同的网络切换是否会引发一些问题。

​ 手环app和其他常规的app存在很大的不同。像淘宝微信等app,其中嵌入了大量的H5页面,和服务端交互很频繁,而手表的app在网络交互这一块,并不是那么频繁,只有在几个模块上需要和服务端进行交互。因此,结合以上在网络测试中的测试方向,针对公司app的情况,可以设计出app的网络测试方案的测试点。

图片2.jpg

1、网络测试中,首先要考虑无网络的情况。

  • app各个功能在无网络情况下是否可用
  • app各个页面之间切换是否正常
  • 发送网络请求时是否会导致闪退、卡死等异常情况
  • app各个页面是否显示完整美观,未刷新的页面是否做了相应的提示和处理
  • 在无网络情况下数据是否会丢失
  • 无网络提示信息是否友好

2、然后应该考虑弱网情景

  • 弱网情况下app是否针对请求做了超时处理
  • 网络延迟的情况下,操作app进行数据同步、OTA升级是否会发生Crash、ANR等严重错误
  • 弱网情况下,app请求回调未完成时,执行其他动作以及交互时,是否会出现app闪退等异常。
  • 弱网情况下,原始数据是否出现丢失的情况
  • 弱网环境下,是否会出现请求堆积的情况
  • 弱网环境下,app各个页面是否显示完整
  • 系统超时,提示信息是否清晰明确
  • 弱网情况下app的响应时间是否在一个合理的时间范围内

3、最后考虑网络状态之间的转变

  • 断开网络连接以后,操作app各个功能是否正常
  • 同步数据过程中,断开网络连接,app是否出现异常情况
  • 传输数据过程中,网络由wifi切换到gprs,app是否出现异常情况
  • 弱网环境下发送的请求是否在恢复网络以后出现重复提交的情况

​ 以上的测试类型里面,弱网测试是值得关注的重点。

很多时候,app在正常网络环境中运行良好,但是在弱网情景下则频繁出问题。

弱网又称为网络环境不良、网络传输延迟,我们俗称网络卡的现象。

​ 通常我们在咖啡厅或者车站的时候,连接公共wifi都有一种体会:网页打不开、微信无法发送、qq消息延迟等,这些现象大多是网络环境不良造成的。

​ 当我们使用公司手环app时,下拉同步一次数据,app有时会在同步界面停顿超过10秒以上,如果app在同步数据时,未做超时处理机制的话,很可能会一直卡在数据同步界面,给用户造成不良的使用体验。

弱网测试就是通过各种工具和手段来模拟网络延迟,来验证软件产品在弱网环境下的工作情况是否符合产品预期定义。

搭建测试环境

如果要做弱网测试,那么首先必须先搭建一个弱网的环境。

搭建弱网环境有几种方法:

  1. 采用天然的弱网场所。
  2. 购买网络损伤仪等硬件设备。
  3. 使用软件模拟产生弱网环境。

​ 天然的弱网环境有电梯GPRS盲点可控隔离箱等,这些环境不太适合我们日常的测试工作,购买网络损伤仪价格又比较贵,还有另一种方式就是通过各种工具模拟来模拟弱网环境。其中比较简单的方法是使用笔记本电脑创建一个假热点,但是不是每个人都随身带着一个笔记本电脑,所以我们可以采用软件模拟的方式来搭建弱网环境。

可以模拟弱网环境的软件比较多,在window环境下使用比较多是使用抓包工具Charles和Fiddle或者微软的工具Network Emulator for Windows Toolkit以及Facebook的开源工具ATC。

由于ATC配置较为麻烦且需要linux环境,因此本文只介绍如何用Fiddler和NEWT来搭建弱网环境。

Fiddle模拟

​ 首先我们可以采用Fiddle这个工具简单模拟弱网环境。Fiddler模拟弱网环境的原理是通过设置代理来延迟发送或接收数据的时间来模拟限速。

​ 首先需要注意的是,模拟弱网环境手机连接的wifi的ip地址必须和我们PC机的ip地址或者网关处于同一个网段。

手机wifi的ip地址是:192.168.2.1,那么我们的PC的ip地址也必须在192.168.2.xxx,否者Fiddle无法通过代理的方式来监听到通过这个网关的请求。

如何才能保证我们的手机IP地址和PC的IP地址在同一个网段?

  • 方法一、手机和电脑同时连接同一台wifi,在代理设置里面使用DHCP的方式自动获取ip地址,这样二者都是处于同一个网段内。
  • 方法二、使用拥有无限网卡的PC机或者笔记本,创建一个wifi热点,通过手机连接热点,也可以在同一个网段内。创建Wifi热点的步骤这里就不再详述了。

因此我们最好在测试之前准备好一块无线网卡或者随身Wifi。

操作步骤

以上准备工作完成以后,打开Fiddle工具。

点击菜单栏内的RulesCustom Rules,或者开发Fiddle后直接按Ctrl + R可以直接打开一份JS文本文件。在文本文件内查找类似下面的内容。

if (m_SimulateModem) {
            // Delay sends by 300ms per KB uploaded.
            oSession["request-trickle-delay"] = "300";
            // Delay receives by 150ms per KB downloaded.
            oSession["response-trickle-delay"] = "150";
}

oSession["request-trickle-delay"] = "300" #代表上行速率,发送1KB需要300ms

oSession["response-trickle-delay"] = "150" #代表下行速率,接受1KB需要150ms

Fiddle默认的上传/下载1KB的数据需要300ms和150ms,要达到模拟弱网的情况,只需要把后面的数值改大即可。

Fiddler的算法: 1000/下载速度 = 需要等待的时间(毫秒)

​ 我们设置1000ms,那么可以大致计算出网速为1Kbps。这里我们分别设置上行和下行参数为1000和800。

​ 设置好参数以后保存退出custom.js文件,这时不要忘记查看菜单内RulesPerformanceSimulate Modem Speeds选项有没有被勾选,一般设置完custom.js文件以后,此选项被默认为未勾选状态。

​ 勾选Simulate Modem Speeds选项,你会发现,打开一个网页需要的时间已经慢了许多。

以上设置完毕以后,打开Fiddle菜单栏ToolsTelerik Fiddle Options

图片3.jpg

默认设置监听端口为8888,勾选Allow remote computers to connect

在手机wifi内修改网络(ios手机和andriod手机修改方式类似),选择高级选项,在代理服务器一栏填写你的电脑主机的ip地址,下方端口内填写Fiddle里设置的8888.

图片4.jpg

​ 这时候,你在手机上执行的网络请求操作在Fiddle界面已经显示出来了,手机发出的网络请求和接收的返回数据都已经处于延迟状态。

NEWT模拟弱网

虽然Fiddle可以通过模拟延迟的方式达到弱网环境,但是真实的网络环境是很复杂的,Fiddle无法模拟网络错误、丢包、数据包乱序、网络断断续续的情况。

这时候就需要使用另一个更强的工具Network Emulator for Windows Toolkit

准备

​ 使用这个工具之前,我们需要提前准备有AP功能的无线网卡,可以使用360wifi或者小米wifi等产品均可。连接无线网卡以后在电脑上创建一个热点Testwifi,并启动热点。手机连接Testwifi这个热点以后,我们开始配置NEWT

安装好NEWT以后,打开界面是这样的:

图片5.jpg

首先我们创建一个过滤器:点击菜单栏configuration选择new filter,或者点击上图工具栏内的沙漏图标。

图片6.jpg

选择为所有网络设置过滤All Network,也可以选择下方的IPv4为某个特定ip设置过滤器。这里勾选ALL Network,其他选择默认。

点击Add按钮后,下方表格内会出现一个新建的过滤器,点击close完成设置。

下一步设置一个新的连接,点击configuration——New Link,新建一个连接。

图片7.jpg

上图中新建的连接未配置时显示为灰色,在连接上右键点击,选择Set Upstream,弹出如下窗口。

图片8.jpg

上图菜单栏依次为LossErrorLatencyBW&Queuebg TrafficReorderDisconnected,依次代表可以设置丢包、网络错误、延迟、带宽和队列、背景传输、乱序数据、模拟断续网络

这里最常用的就是前三个。依次可以设置丢包、错误、延迟的网络状态。由于选项比较多,下面只介绍最常用的功能。

丢包设置

No Loss 不丢包

Periodic Loss 设置每多少个包丢失一个packets

Random Loss 设置随机丢包比率

图片9.jpg

当数据包经过网络传输时,包中的数据可能发生错误

Error设置

No Error:不模拟传输错误。

Random error:根据比率模拟随机发生传输错误。

图片10.jpg

延迟发送和接受数据的时间

No Latency 不模拟延迟状态

Fixed 延迟固定时间(单位:毫秒)

Uniform 按统一分布,延迟一定量的时间(时间控制在最大最小值之间)

Normal 按正态分布.延迟一定量的时间(average:平均值,Devation:偏差)

图片11.jpg

Bandwith 设置网络带宽

Queue 设置队列,下方为丢包规则,分为丢包头、丢包尾、随机丢包等

​ 其他选项使用的不多,不在这里详述。以上四个选项设置完成以后,点击确定按钮完成上传的设置。以同样的步骤,在Local Application下方的连接上右键点击,选择Set Downstream,设置下行连接的状态。

设置完成以后如下图

图片12.jpg

​ 点击菜单栏Action-Start,或者点击三角符号![](file:///C:\Users\XUEDON~1\AppData\Local\Temp\ksohtml\wps97AC.tmp.jpg),这时我们设置好的过滤器和连接已经启动,可以在cmd命令行ping一下百度的地址查看一下效果。

图片13.jpg

​ 如图显示出现请求超时、延迟发送、丢包等现象,说明我们配置已经生效了。

​ 最后,按照上文提到的方法,连接wifi热点以后,就可以按照之前规划好的网络测试方案和测试点进行测试了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,800评论 25 707
  • 弱网测试作为健壮性测试的重要部分,对于移动端测试来说必不可少。这是因为目前移动端产品的使用用户所处的网络并非完全的...
    隋胖胖LoveFat阅读 20,009评论 7 57
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,633评论 18 139
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,066评论 4 62
  • 阳光从地平线绽放进内心深处,蓝盈盈的天空中一万朵云飞舞,像精心镂刻的璞玉闪耀着无限光泽,小轩窗里姑娘们弄妆梳...
    海棠树子阅读 371评论 0 5