移动端弱网测试实践

弱网测试作为健壮性测试的重要部分,对于移动端测试来说必不可少。这是因为目前移动端产品的使用用户所处的网络并非完全的流畅WIFI环境,仍有相当体量的用户主要使用4G、3G、2G等网络,另外因移动端产品使用场景多变,如进地铁、上公交、进电梯等,使得弱网测试显得尤为重要。毕竟考虑到各种场景的客户端展示及容错,能极大提升产品印象和用户体验。

一、弱网测试的思路篇

弱网测试概要思路

总结了下(如上图所示),弱网测试主要进行特殊网络状态下的功能测试同时关注用户体验,具体来说,弱网测试包括弱网功能测试、无网状态测试、网络切换测试等,测试的同时关注用户体验的诸多方面。

1.弱网功能测试

这一部分主要是在各种非wifi网络环境下进行的功能测试,同时模拟高延时和高丢包的异常网络环境进行健壮性测试。2G/3G/4G的网络可以通过使用电话卡移动/联通/电信等网络进行模拟,关注页面的响应时间、页面呈现是否完整一致等。高延迟和高丢包的网络环境需要借助工具来模拟,在windows环境下可以使用fiddler和network emulator for windows toolkit来模拟,在mac环境下则可以使用charles和Xcode自带的开发环境网络异常模拟工具进行。工具的使用在工具篇具体介绍。
弱网功能测试建议将整体的功能测试用例在弱网环境下进行一轮测试,相同模块下的功能可以分多个网络条件进行测试。这部分发现的问题可能会有:页面图片在弱网环境下加载不出来(图片加载逻辑需优化)、需要模版的页面版式结构混乱(模版文件在弱网环境的加载需优化)、页面响应时间较长没有任何显示(页面显示逻辑待优化、重试机制加入)等。

2.无网状态测试

无网状态测试则是在切段网络的情况下进行的测试,主要关注页面的显示与交互、本地数据的存储、断网功能的使用等,经常该部分也需要与网络切换部分协同进行。通常来说,(1)断网情况下请求一个非本地数据的页面需要设定一定的时间等待上限,及时提示网络异常以及提示重试;(2)断网情况下请求一个部分本地数据的页面需要观察本地数据的部分是否加载显示正常,待请求的部分是否符合交互给的缺省样式一致;(3)断网情况下请求一个完全本地数据的页面是否显示正常。这里还需考虑本地数据存储的情况,有些需要联网后上报服务器的数据本地是否正确存储,联网后这些数据能否正常上报。
无网状态测试建议按照页面划分进行,针对每个页面单独测试无网状态的显示,页面间跳转的显示,页面内功能的点击和显示,同时关注无网到有网时的页面恢复显示状态、数据上报情况是否正常。

3.网络切换测试

这部分主要是进行几个不同网络场景的切换,包括wifi-2G/3G/4G、wifi-无网、2G/3G/4G-wifi、2G/3G/4G-无网、无网-2G/3G/4G、无网-wifi等。主要关注页面的显示与交互,尤其是弱网到wifi,wifi到弱网的情况,是否会有页面的crash以及显示的错乱、session是否一致、请求堆积处理等。

4.用户体验关注

弱网测试的目的就是尽可能保证用户体验,关注的关键点包括:
(1)页面响应时间是否可接受,关注包括热启动、冷启动时间,页面切换,前后台切换,首字时间,首屏时间等。
(2)页面呈现是否完整一致
(3)超时文案是否符合定义,异常信息是否显示正常。
(4)是否会有超时重连
(5)安全角度:是否会发生dns劫持、登录ip更换频繁、单点登录异常等。
(6)大流量事件风险:是否会在弱网下进行更新apk包、下载文件等大流量动作。

二、弱网测试的工具篇

在安卓产品测试的过程中,使用到的弱网测试工具主要是fiddler模拟网络延迟,以及network emulation for windows toolkit模拟网络丢包场景。MAC环境下的charles等抓包工具的实现原理是相同的。这里主要介绍下安卓弱网测试场景下使用到的工具。

1.fiddler

fiddler主要是使用Rules->Performance->Simulate Modem Speeds功能进行的网络延迟模拟,点击Rules->Customize Rules进行设置,打开自定义脚本编辑器,如下图所示:


红框内标出的就是设置延迟时可以操作的上行和下行网络延迟时间,意为每上传/下载1KB的数据要延迟多少毫秒。这里我把请求(上行)时间延迟设置为3000ms,响应(下行)时间延迟设置为1000ms(模拟了2G网络的速度)。
这里通过计算上行和下行的网络延迟时间,可以模拟出想要的网络效果。利用 (1KB/下载速度)x1000 = 要delay的毫秒数 来计算。比如我们要模拟2G的网络。2G网络上行和下行的网络速度如下图所示:



我们看到在各种制式下上行速度都是2.7kb/s,下行速度是9.6kb/s,根据1KB=8kb,可以计算出上行延迟为(1/(2.7/8))x1000=2962ms ,同理下行延迟未(1/(2.7/8))x1000=833ms。这里我取了近似整值3000ms和1000ms,模拟了2G网络。同理也可以通过计算模拟3G网络,附3G网络制式及速度图如下:



设置完成后,在fiddler里将Rules->Performance->Simulate Modem Speeds选中即可使设置生效。
2.Network Emulation for Windows Toolkit

fiddler只能设置延迟,无法进行丢包的设置。在windows上有个简单易用的工具Network Emulation for Windows Toolkit可以用来设置网络丢包情况。设置丢包有两个关键步骤,一是设置电脑网络,二是将移动设备接入电脑共享的网络。详细看下每个步骤:
(1)设置电脑网络
工具简单界面如下所示:


最上方是本地应用,最下方的本地网络。中间的两块区域上部分需要建立链路,下部分可以对特定IP进行过滤。因为我们需要进行的是网络丢包设置,所以过滤器这边就可以不做设定。我们点击顶部菜单栏Configuration->New Filter,在弹出的设置框里点击Add,新增一个过滤器,如下图所示:

接着点击Configuration->New Link新增一条链路,此时界面显示如下:


我们没有对网络做任何限制,此时网络是畅通的,ping一下看:


果然没有任何丢失,且无超时发生。
此时我们设置网络丢包,在新建链路点击右键,选择Upstream设置上行网络。这里我们设置了随机丢包率为40%:

同理也可以设置下行网络。设置完成后要点击Action->Start开始使设置生效。生效后我们再来ping一下网络看看:


可以看到此时有丢包和超时发生了。
除了设置随机丢包率,我们也可以设置周期丢包率、引入错误等网络异常情况。甚至也可以设置延时。总之该工具在弱网测试中可用性还是很强。
(2)移动端设备接入电脑网络
设置完PC端网络环境,由于我们是移动端设备,需要移动端设备接入PC的网络,因而需要做网络共享。当PC有无线网卡的情况下,可以首先利用无线网卡共享有线网络的数据,然后利用Connectify或者360wifi等共享wifi工具,让移动端设备共享PC的网络。当PC没有无线网卡的情况下(我们的办公PC就没有网卡--),安卓端手机可以使用usb连接电脑使用PC的网络。这里有个简单易行的办法,就是使用小米手机助手的一键开启共享上网功能(当然了目前只能支持共享给小米手机,且系统安卓版本低于6.0)。在电脑上安装小米手机助手,小米手机通过usb开启usb调试连接电脑,就可以共享电脑的网络了。如下图所示:


点击一键开启后,可以看到小米手机的网络全部关闭,此时设备使用的就是电脑共享出来的网络。
至于非小米手机的其他设备,也可以使用usb线连接电脑共享其网络。可参考网上的设置教程。
总之,弱网测试作为健壮性测试的一种,是测试过程中必不可少的重要环节。考虑到弱网测试的各项要点以及合理使用各项工具模拟出复杂、严苛的网络环境,能极大提高产品的可用性,保证产品上线后应对各种应用场景的使用质量。以上是我在安卓产品弱网测试过程中总结出的一点经验,还有许多未考虑周全的测试点,还需要在后续的测试中继续加强经验和总结,与大家共同探讨。

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

推荐阅读更多精彩内容

  • 最近在搞一个智能穿戴项目。手环手表等智能穿戴项目中最核心的功能是运动计步功能。 计步功能的业务逻辑是主要流程是通过...
    Dodol阅读 3,540评论 1 22
  • 【背景】 弱网测试,属于健壮性测试的内容。随着国内移动端迅猛发展,大大增加用户碎片化使用移动端的概率。想象一下,用...
    siyu8023阅读 23,086评论 3 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,100评论 18 139
  • 实际生活中,电梯里 or 地铁里 模拟用户体验测试是个不错的选择 【实际操作】具有代理服务器功能的网络流量分析软件...
    有钱且幸福阅读 24,422评论 4 14
  • 海芬/画 坚持学画钢笔画,我的花鸟系列
    海语天籁阅读 405评论 4 15