弱网测试属于健壮性测试,用户在地铁里,巴士上甚至电梯,车库等场景碎片化使用APP,我们需要针对这些场景的弱网环境下,验证出现丢包、延时,软件的处理机制,避免因用户体验不友好造成用户的流失。
一、弱网测试场景
1. 结合APP本身属性
比如社交类APP(聊天,抢红包)对网络环境依赖性大且用户关注度高,弱网环境下需要重点关注
比如互联网金融APP,申购流程中创建订单后是否支付成功。例如弱网环境下,创建订单失败,是否被扣费,创建订单成功后支付失败,再次支付是否重复扣费等
2. 使用频率,易遇到弱网的场景
比如微博APP【观看小视频】,用户在碎片时间极易观看小视频(APP用户喜欢使用碎片化时间进行娱乐操作)
比如金融APP,用户在碎片时间使用金融APP,领取奖品,查看理财类新闻,查看收益
二、弱网环境测试点总结
1. 场景:弱网环境下某个操作响应时间
原因:APP用户对等待时间容忍度低,若弱网环境loading超过5s,用户很容易kill应用后再次进入应用
测试点:性能测试中,加入弱网环境下,检测各个场景网络请求API消耗时间
2. 场景:弱网环境下直至超时,UI界面友好度和APP是否稳定
原因:容错机制主要是考虑弱网情况下带来的不稳定,比如loading超时导致没有响应或者Crash
测试点:弱网环境直至超时,判断为断网状态,UI界面和提示,友好且理解无歧义
3. 场景:断网后恢复,是否自动重发请求
原因:不同模块,开发对请求处理不同,代码是否支持自动重复请求,自动重发请求的频率是什么?
测试点:断网后恢复网络,是否堆积网络请求(理财模块,当10s左右无返回,则会重发请求),此时请求和返回正常情况下,是否出现异常情况,比如1次支付操作,断网后堆积多个支付请求,恢复网络后因堆积多个支付请求,是否完成多次支付
测试点:断网后恢复网络,考虑APP进行操作目的是否伤害用户体验,通过哪种手段,可以达到操作目的的同时,用户体验无感或者低伤害
比如,微信希望在线升级某些内容,会自动监听用户是否插着电,连着wifi, 一旦监听到了,就马上告诉你可以升级
1)插电可确保升级过程中,耗电不会导致低电量甚至没电
2)wifi确保升级过程中,流量消耗不会使用用户话费中流量包,不会导致因消耗话费流量而伤害用户体验
4. 场景:网络请求中,kill进程(导致APP状态掉线)
登陆同一个账号成功,应该不继续相同网络请求
登陆不同账号成功,应该不继续相同网络请求
三、常见弱网问题和原因分析
- 场景:上传大图或者多图时,在弱网环境下出现进度条走到一半卡住然后又从头开始
原因:采用分段上传方式,甚至请求超时,分段传输没有结束,代码逻辑不对,导致每次重试都重头上传,一直循环 - 场景:在弱网情况下容易出现登陆不上或者登陆后立即掉线
原因:登陆没有缓冲机制,而请求超时时间的设置没有区分网络情况
解决方案:建议开发针对wifi, 2g, 3g,4g设置不同的超时时间 - 场景:刷新网页很快就给出暂无内容的提示,明显没有到请求超时时间
原因:可能是连接超时时间太短,wifi下设置两秒,在弱网下设置需要更长 - 场景:弱网环境下,请求的数据返回时间较长,等待的过程中,如果页面上的相关控件仍可以操作,则容易出现异常
原因:依赖数据的控件操作,在数据返回前没有做兼容处理
解决方案:在数据加载过程中,设置页面对外暴露的控件为不可操作,当数据加载完再释放 - 场景:搜索时输入关键字会连续发送请求,停下时,显示最终的关键字搜索结果,但很快又会被前面的关键字搜索结果覆盖了
原因:中间的请求返回较慢,显示了最终的结果后,之前的请求返回的数据应不做处理
解决方案:对异步请求未完成的任务进行cancel