APP测试弱网测试
Posted qq_492448446
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了APP测试弱网测试相关的知识,希望对你有一定的参考价值。
1、为什么要做弱网测试
当前APP网络环境比较复杂,网络制式有2G、3G、4G网络,还有越来越多的公共Wi-Fi。不同的网络环境和网络制式的差异,都会对用户使用app造成一定影响。
另外,当前app使用场景多变,如进地铁、上公交、进电梯等,使得弱网测试显得尤为重要。
2、如何做弱网测
1、SIM卡的网络切换:手机-设置-移动网络设置-网络类型选择
2、具体弱网场景测试,常见场景包括:地铁/巴士、电梯、楼梯间、停车场
3、使用虚拟机模拟网络速度,如用树莓派搭建的弱网测试仪
4、使用软件进行网络代理,模拟不同的网络带宽、延时率、丢包率
3、弱网模拟常用工具
①fiddler主要用来抓包定位bug
②Charles
抓包原理:通过控制发送数据或接收数据的大小来限制网络的上传和下载
Charles测试配置步骤:
首先,打开Charles,在Throttle Settings中设置网络状况,点击proxy—》throttling settings
勾选【enable throttling】使得限制网速可用,相当于开启了限制网宿的功能
关于网速的选择:
概念介绍:Bandwidth(带宽)、Utilistation(利用百分比)、Round-trip(往返延迟)、MTU(最大传输单元)
3G:300k-2Mbps左右
2.5G(GPRS)一般在100kbps
2G(GSM)一般在5-9kbps
如果不习惯自定义设置带宽等,可直接在Throttle Preset下拉列表中选择,按照顺序,网速逐渐提升
只对某地址的请求进行弱网测试,勾选【only for selected hosts】
4、常见错误现象
1、用户登录应用时下载初始化大数据,下载过程中因网速太慢点击取消重新登录,数据初始化完成后出现重复,导致数据不一致
原因:数据下载过程中,下载失败后,未进行数据回滚,中止后重新下载,出现数据重复
解决:通过事务处理数据下载逻辑,可以是下载失败后,应用本地数据库进行数据回滚
2、用户点击数据上传,数据上传过程中网络弱或不稳定,基于联网状态自动触发数据上传,导致出现数据重复写入,造成脏数据
3、原因:数据上传过程中,由于失败重传机制,会出现连续2次写操作,并且未做唯一识别处理
解决方案:根据数据特性,对可能造成脏数据的地方,通过关键字段,例如创建时间,key-value值等生成hash值,标记记录唯一性,即数据写入时,检查hash键师傅存在,如果存在不在新增
4、在弱网环境下,用户输入用户名和密码点击登录,应用链接超时返回用户名和密码错误提示
原因:在弱网环境下的连接超时后,按照业务逻辑处理,导致返回超时异常
解决方案:弱网连接超时后,检查应用本地数据库是否有用户登录信息,若存在,获取本地用户信息登录
5、在弱网环境下,用户输入用户名和密码点击登录,登录过程中应用崩溃并闪退
原因:弱网环境下数据下载超时,加载数据严重依赖于后来的异步加载,数据还没来得及返回,应用跳转到下个activity,导致崩溃
解决:健壮数据加载流程,通过标记后台数据下载状态加载界面,依赖数据下载完成后,再进行页面跳转
6、弱网环境下,用户请求页面响应时间较长,等待的过程中页面部分控件仍然可以操作,当用户点击控件时,出现闪退现象
原因:没有对数据加载流程进行判断,直接暴露控件可控,当出现依赖数据的控件操作时,没有再数据返回前做兼容处理
解决:再数据加载过程中,设置页面对外暴露的控件为“不可操作”,当数据加载完再释放
7、弱网环境下,用户第一次输入搜索关键字没有得到响应后,再次输入全新的关键字并发送请求,等待搜索结果返回后,当期结果页被之前的关键字搜索结果刷新覆盖
原因:中间的请求返回较慢,显示最终的结果后,之前的请求返回的数据应不做处理,客户端经常做一种处理,请求对象发送返回失败,客户端会重试,请求必须是异步进行的,此时可 能会出现重试失败,仍然一直在发请求,重试策略有问题
解决:对异步请求未完成的任务进行cancel
8、弱网下,页面加载过程中程序闪退
原因:webview超时处理未在UI线程。Toast、关闭页面等操作需要再UI线程。
9、302跳转页面,达到内置超时阀值后,webview自动关闭
原因:业务员有页面加载超市自动关闭的逻辑,超时机制未考虑302场景
5、测试要点
应用
1.场景:互联网金融APP,申购流程中创建订单后是否支付成功,用户关注度最高(涉及扣费)。
测试点:弱网环境,创建订单失败,用户关注是否被扣费;创建订单成功后支付失败,再次支付是否重复扣费等。
2.场景:弱网环境下直至超时,ui界面友好&app是否稳定
测试点:弱网环境直至超时时,判定为断网专题,UI界面和提示友好(若容错机制主要是考虑弱网情况下带来的不稳定,常见的问题是:loading超时导致ANR :application not respanding)or crash
3.场景:断网后环境下,是否自动重发请求
测试点:断网后恢复网络,是否堆积网络请求(目前来说 理财模块 当10s左右无返回 则会重发请求),此时请求和返回正常情况下,是否出现异常情况。比如1次支付操作,断网后堆积多个支付请求,恢复网络后因堆积多个支付请求,是否完成多次支付。
4.场景:微信希望在线升级某些内容,会自动监听用户是否插着电 or 连着wifi,一旦监听符合上述场景,APP自动升级
测试点:
1)插电场景 确保升级过程中,耗电不会导致手机低电量甚至没电。
2)wifi场景,确保升级过程中,流量消耗不会使用用户话费中流量包,不会导致因消耗话费流量伤害用户体验
6、网络测试的一般流程
step1:首先要考虑网络正常的情况
① 各个模块的功能正常可用
② 页面元素/数据显示正常
step2:其次要考虑无网络的情况
① APP各个功能在无网络情况下是否可用
② APP各个页面之间切换是否正常
③ 发送网络请求时是否会导致闪退、卡死等异常情况
④ APP各个页面是否显示完整美观,未刷新的页面是否做了相应的提示和处理
⑤ 在无网络情况下数据是否会丢失
⑥ 无网络提示信息是否友好
step3:再次考虑弱网情况
① 弱网情况下APP是否针对请求做了超时处理
② 网络延迟的情况下,操作app进行数据同步、OTA升级是否会发生Crash、ANR等严重错误
③ 弱网情况下,APP请求回调未完成时,执行其他动作以及交互时,是否会出现APP闪退(如:驾考ios开屏闪退)等异常。
④ 弱网情况下,原始数据是否出现丢失的情况(弱网下载时会出现丢包情况)
⑤ 弱网环境下,是否会出现请求堆积的情况
⑥ 弱网环境下,APP各个页面是否显示完整
⑦ 系统超时,提示信息是否清晰明确
⑧ 弱网情况下APP的响应时间是否在一个合理的时间范围内
⑨ 请求回调未完成–XXX项目XX难题攻克弹窗
⑩ 这个弹窗是服务器说了算,服务器知道该用户啥时候弹弹窗。若用户在做题页面时返回了,则该用户下次进入且在服务器缓存时间内,应该给出弹窗(产品逻辑:弹窗出现后用户必须看到才消失)
⑪ 请求堆积:水池注水排水问题
step4:最后考虑网络状态之间的转变
① 断开网络连接以后,操作APP各个功能是否正常
② 同步数据过程中,断开网络连接,APP是否出现异常情况
③ 传输数据过程中,网络由wifi切换到gprs,APP是否出现异常情况
④ 弱网环境下发送的请求是否在恢复网络以后出现重复提交的情况
app专项测试:app弱网测试(网络测试流程)
app专项测试:app弱网测试(网络测试流程)
一、网络测试的一般流程
step1:首先要考虑网络正常的情况
① 各个模块的功能正常可用
② 页面元素/数据显示正常
step2:其次要考虑无网络的情况
① APP各个功能在无网络情况下是否可用
② APP各个页面之间切换是否正常
③ 发送网络请求时是否会导致闪退、卡死等异常情况
④ APP各个页面是否显示完整美观,未刷新的页面是否做了相应的提示和处理
⑤ 在无网络情况下数据是否会丢失
⑥ 无网络提示信息是否友好
step3:再次考虑弱网情况
① 弱网情况下APP是否针对请求做了超时处理
② 网络延迟的情况下,操作app进行数据同步、OTA升级是否会发生Crash、ANR等严重错误
③ 弱网情况下,APP请求回调未完成时,执行其他动作以及交互时,是否会出现APP闪退(如:驾考IOS开屏闪退)等异常。
④ 弱网情况下,原始数据是否出现丢失的情况(弱网下载时会出现丢包情况)
⑤ 弱网环境下,是否会出现请求堆积的情况
⑥ 弱网环境下,APP各个页面是否显示完整
⑦ 系统超时,提示信息是否清晰明确
⑧ 弱网情况下APP的响应时间是否在一个合理的时间范围内
⑨ 请求回调未完成--驾考科四难题攻克弹窗
⑩ 这个弹窗是服务器说了算,服务器知道该用户啥时候弹弹窗。若用户在做题页面时返回了,则该用户下次进入且在服务器缓存时间内,应该给出弹窗(产品逻辑:弹窗出现后用户必须看到才消失)
? 请求堆积:水池注水排水问题
step4:最后考虑网络状态之间的转变
① 断开网络连接以后,操作APP各个功能是否正常
② 同步数据过程中,断开网络连接,APP是否出现异常情况
③ 传输数据过程中,网络由wifi切换到gprs,APP是否出现异常情况
④ 弱网环境下发送的请求是否在恢复网络以后出现重复提交的情况
tips:gprs---就是咱们通常所说的流量
二、背景介绍
弱网测试作为健壮性测试的重要部分,对于移动端的测试来说必不可少。
目前的网络并非完全的流畅WiFi,目前使用最多的是2G,3G,4G,且使用场景多变,如近地铁,上公交,进电梯,进山区等是的弱网测试显得尤为重要。
总结:
1、弱网测试主要进行特殊网络状态下的功能测试,同时关注用户体验。
2、弱网测试主要包括弱网功能测试、无网状态测试、网络切换测试等
三、弱网功能测试
① 这一部分主要是在各种非wifi网络环境下进行的功能测试,同时模拟高延时和高丢包的异常网络环境进行健壮性测试。
② 2G/3G/4G的网络可以通过使用电话卡移动/联通/电信等网络进行模拟,关注页面的响应时间、页面呈现是否完整一致等。
③ 高延迟和高丢包的网络环境需要借助工具来模拟,如Charles。
④ 弱网功能测试建议将整体的功能测试用例在弱网环境下进行一轮测试,相同模块下的功能可以分多个网络条件进行测试。这部分发现的问题可能会有:
页面图片在弱网环境下加载不出来(图片加载逻辑需优化)
需要模版的页面版式结构混乱(模版文件在弱网环境的加载需优化)
页面响应时间较长没有任何显示(页面显示逻辑待优化、重试机制加入)
四、弱网UI测试
弱网情况下:
APP很可能出现UI刷新不及时或者不刷新的情况,此时就可能会导致呈现在用户面前的是一个残缺的页面;
偶会也会导致出现页面UI元素错乱的情况;
五、无网状态测试
无网状态测试则是在切换网络的情况下进行的测试,主要关注页面的显示与交互、本地数据的存储、断网功能的使用等,经常该部分也需要与网络切换部分协同进行。
断网情况下请求非本地数据的页面需要设定一定的时间等待上限,及时提示网络异常以及提示重试;
断网情况下请求部分本地数据的页面需要观察本地数据的部分是否加载显示正常,待请求的部分是否符合交互给的缺省样式一致;
断网情况下请求完全本地数据的页面是否显示正常。这里还需考虑本地数据存储的情况,有些需要联网后上报服务器的数据本地是否正确存储,联网后这些数据能否正常上报。
无网状态测试建议按照页面划分进行,针对每个页面单独测试无网状态的显示,页面间跳转的显示,页面内功能的点击和显示,同时关注无网到有网时的页面恢复显示状态、数据上报情况是否正常。
注:以驾考课件视频为例做个补充
无网无缓存时做题页面不显示课件视频模块;
无网有缓存,且在缓存时间内,点击视频时可以正常播放;
六、网络切换测试
这部分主要是进行几个不同网络场景的切换,包括:
wifi-2G/3G/4G、wifi-无网、2G/3G/4G-wifi、2G/3G/4G-无网、无网-2G/3G/4G、无网-wifi
主要关注页面的显示与交互,尤其:
弱网到wifi
wifi到弱网
以上两种情况验证是否会有页面的crash以及显示的错乱、session是否一致、请求堆积处理等。
七、用户体验关注
弱网测试的目的就是尽可能保证用户体验,测试点如下:
(1)页面响应时间是否可接受,关注包括热启动、冷启动时间,页面切换,前后台切换,首字时间,首屏时间等。
(2)页面呈现是否完整一致
(3)超时文案是否符合定义,异常信息是否显示正常。
(4)是否会有超时重连
(5)安全角度:是否会发生dns劫持
(6)大流量事件风险:是否会在弱网下进行更新apk包、下载文件等大流量动作。
热启动:已经启动过APP了,然后切换到后台,或者退出,但是这时候应用并没有完全退出,可能应用还有一些服务在后台启动
冷启动:就是之前没启动过APP
dns劫持:又称域名劫持,是指在劫持的网络范围内拦截域名解析的请求,分析请求的域名,把审查范围以外的请求放行,否则返回假的IP地址或者什么都不做使请求失去响应,其效果就是对特定的网络不能访问或访问的是假网址。常见的分为2种:网页劫持/运营商劫持
比如:输入www.baidu.com,结果打开了淘宝网,就说明百度的dns被劫持了;
Android驾考宝典进入vip页面时被劫持;
八、响应时间
安卓手机一般超过5秒钟无响应就会报ANR的错误
ios手机响应时间过长也会报错
2-5-10原则(或3-5-8):
用户能够忍受的最佳响应时间是2秒以内;
超过5秒无响应的话,一般性子比较急躁的用户很可能就会直接退出页面了;
如果超过10秒无响应,很多人都会选择杀掉APP;
APP经常处于无响应或者响应时间过长的状态,会导致大批的用户转移到竞争对手的产品上。
九、异常测试
异常测试是指验证APP针对各种网络异常情况是否做出了容错处理,这里面包括:
① 异常提示信息
② 出错容错机制
③ 超时判断处理机制(代码级别)
④ 出错以后自动重连等
tips:
容错机制---简单点可理解为: 我快速点击多次,但是就响应一次
出错后重连---就是访问网络,没得到数据,在错误的地方重新访问网络。
原文地址:
https://blog.csdn.net/wangjuan_0216
https://blog.csdn.net/wangjuan_0216/article/details/86588293
以上是关于APP测试弱网测试的主要内容,如果未能解决你的问题,请参考以下文章