为什么做弱网测试?怎么做

2023-11-14

为什么要做弱网测试?

弱网测试,属于健壮性测试的内容,为什么要做呢?尤其是现在的人们更习惯在地铁里,公交上,甚至是电梯,车库等等的场景里去关注一些新闻,看看小说,直播,玩游戏等等。在这个时候,我们就需要针对这些场景,去关注一下应用的运行状态,以及弱网环境下,出现丢包、延时软件的处理机制,避免造成用户的流失。

最近做了一次移动APP的弱网和中断测试,接下来分享一下遇到的一些问题:

1、 现象:用户登录应用时下载初始化数据,下载过程中因网速太慢点击取消并重新登录,数据初始化完成后出现重复,造成数据不一致。
  原因:数据下载过程中、下载失败后,未进行数据回滚,中止后重新下载,出现数据重复
  解决方案:通过事务处理数据下载逻辑,下载失败后,应用本地数据库进行数据回滚。

2、 现象:用户点击数据上传,数据上传过程中网络弱且不稳定,基于联网状态自动触发数据上传,导致出现数据重复写入,形成脏数据
  原因:数据上传过程中,由于失败重传机制,会出现连续两次写操作,并且未做唯一识别处理
  解决方案:根据数据特性,对可能造成脏数据的地方,通过关键字段,例如创建时间,key-value值等生成hash键,标记记录唯一性,即数据写入时,检查hash键是否存在,如果已经存在,当前重复数据丢弃。

3、 现象:在弱网环境下,用户输入用户名和密码点击登录,应用链接超时返回用户名和密码错误提示。
  原因:在弱网环境下的连接超时后,按照强网业务逻辑处理,导致返回超时异常。
  解决方案: 弱网连接超时后,检查应用本地数据库是否有用户登录信息,若存在,获取应用本地用户信息进行登录。

4、 现象:在弱网环境下,用户输入用户名和密码后点击登录,登录过程中应用崩溃并且闪退。
  原因:弱网环境下数据下载超时,加载数据严重依赖于后来的异步加载。数据还没来得及返回,应用跳转到下个activity,导致崩溃。
  解决方案:健壮数据加载流程,通过标记后台数据下载状态加载界面,依赖数据下载完成后,再进行页面跳转。

5、 现象:弱网络环境下,用户请求页面响应时间较长,等待的过程中,页面上的部分控件仍然可以操作,当用户点击控件时,出现应用闪退现象;
  原因:没有对数据加载流程进行判断,直接暴露控件可控,当出现依赖数据的控件操作时,没有在数据返回前做兼容处理。
  解决方案:在数据加载过程中,设置页面对外暴露的控件为“不可操作”,当数据加载完再释放。

6、 现象:在弱网环境下,用户第一次输入搜索关键字没有得到响应后,再次输入全新关键字并发送请求,等待搜索结果返回后,当前结果页被之前的关键字搜索结果刷新覆盖
  原因:中间的请求返回较慢,显示最终的结果后,之前请求返回的数据应不做处理。
  解决方案:对异步请求未完成的任务进行cancel.
 

所以综上所述,对于移动APP测试,从功能、性能、稳定、异常处理等几个维度来归纳场景特性,弱网测试主要集中在如下场景:2G/3G/4G wifi-移动网络切换等。

那么我们来看看弱网环境下主要出现的几个问题:

1、丢包。丢包应该是最常见的问题。在TCP协议中,需要不停的发送请求,来确认连接状态,一旦发生丢包,就需要重传。这个时候就需要去检查产品的处理机制,给予什么提示,如果未响应怎么处理这些。
2、延时。延时也是很常见的问题。由于网络太差,产生了网络波动,导致数据包在传输的时候出现抖动。可能导致请求出现超时的现象。这个时候就需要给予相应的提示,或者是其他的处理方式。

一般我就是看这两种现象。检查弱网条件下,产品的运行状态,处理机制,提示信息,包括网络恢复后的重连等等。弱网其实也就是一种异常场景,主要的作用还是辅助我们检查产品的健壮性。也并没有想象的那么复杂和难。无非就是需要处理好各种网络条件下产品的运行状态,给予对应的处理。

1、模拟弱网环境

打开Fiddler,Rules->Performance->勾选 Simulate Modem Speeds,勾选之后访问网站会发现网络慢了很多

2、Fiddler弱网的原理

Rules—>Cutomize Rules打开CustomRules.js 文档

在文件中搜索关键字,m_SimulateModem

让我们来分析一下这几行代码:

  • 首先来判断m_SimulateModem是否为true,也就是是否设置了弱网模式。

  • 如果为弱网模式。则分析代码

  • oSession[“request-trickle-delay”] = “300”; 注释的也很明白,Delay sends by 300ms per KB uploaded.上传1KB需要300ms,转化一下上传速度:1Kb/0.3s = 10/3(KB/s)

  • 如果你想设置上传的速度为50KB/s,你则需要设置Delay 时间为 20ms

  • 同样的方法,也可以限制上传的速度,调整oSession[“response-trickle-delay”]即可。

设置完成后,清空原有的log,并使用你的app进行弱网条件下的操作,

选择第一个请求和最后一个请求,可获得整个页面加载所消耗的总体时间。从条形图表中还可以分别出哪些请求耗时最多,从而对页面的访问进行访问速度优化

如下图:

 

不同请求耗时多少的图形表,获取那种资源耗时最大,进而进行优化:

如下图

总结:

感谢每一个认真阅读我文章的人!!!

我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家评论区留言333免费领取,千万不要错过哦。

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么做弱网测试?怎么做 的相关文章

随机推荐

  • html制作的一个钢琴(可以弹奏)

    html制作的一个钢琴 可以弹奏 可以上传曲谱弹奏 如下图所示 点我下载资源 https download csdn net download weixin 43474701 63403221
  • echarts图表 定时刷新

    在制作大屏可视化时 需要有种动的效果 大概的思想是通过定时器太改变 1 组件传递时间参数 由于每个图表都是都是封装成一个组件 在父组件中 通过 传递时间
  • 将ip改成域名方式登陆

    昨天有同学问我如何将ip修改成域名 这样的话可以使程序变得更加健壮 别人不能直接看见你的ip地址 后来总结下分享给大家 首先找到hosts文件的位置 这个文件是系统dns默认查找的文件 windows 系统 C WINDOWS system
  • cmd上可以执行的命令在VSCODE报错:无法加载文件,因为在此系统上禁止运行脚本;xx既不是内部或外部命令,也不是可运行的程序

    有时候好好的项目 在vscode等编辑器上突然无法正常启动 提示 什么既不是内部或外部命令 也不是可运行的程序 或者什么在此系统禁止运行 如下 这时候尝试一下直接打开cmd cd到对应的项目位置 运行一下看是否可以正常运行 如果可以 那基本
  • 【Threejs基础教程-点线精灵篇】 4.5 射线(Ray)与射线拾取(Raycaster)

    射线和射线拾取 学习ThreeJS的捷径 射线介绍 射线用途 射线拾取操作过程 射线拾取Raycaster 0 创建射线 1 绑定点击事件 2 获取点击时的位置并创建映射顶点 新手常见错误1 完全不理解计算公式导致的映射坐标计算错误 全屏的
  • Vue中如何实现ajax请求,VUE中如何发ajax请求

    vue中是推荐使用axios来发送请求的 而且在vue2 0之后也是使用axios来实现发送ajax请求的 1 安装 axios有好几种引用的方式 其中主要包括如下 使用 cdn 使用npm npm install axios 使用 bow
  • linux是一种开源的操作系统,又一个操作系统开源

    导读 9月18日 腾讯宣布开源自主研发的轻量级物联网实时操作系统 TencentOS tiny TencentOS tiny是腾讯面向物联网领域开发的实时操作系统 具有低功耗 低资源占用 模块化 安全可靠等特点 可有效提升物联网终端产品开发
  • 【牛客SQL】SQL7 查找薪水记录超过15次的员工号emp_no以及其对应的记录次数t

    题目描述 描述 有一个薪水表 salaries简况如下 请你查找薪水记录超过15次的员工号emp no以及其对应的记录次数t 以上例子输出如下 题解 本题考察分组GROUP BY和分组过滤HAVING操作 运行时间 17ms 超过52 75
  • Scala入门到精通——第一节 Scala语言初步

    本节主要内容 Scala简介 为什么要学习Scala Scala语言初步 1 Scala简介 Scala Scala Language的简称 语言是一种能够运行于JVM和 Net平台之上的通用编程语言 既可用于大规模应用程序开发 也可用于脚
  • 微信小程序应用”腾讯位置服务路线规划“插件

    1 申请路线规划插件 微信公众平台 微信小程序后台 设置 第三方设置 插件管理 里点击 添加插件 搜索 腾讯位置服务路线规划 选择添加插件即可 2 申请key 调用路线规划插件需要申请腾讯位置服务的服务账号 key是开发者的唯一标识 申请地
  • vue/webpack 引入 cdn 资源

    使用 vue 的 webpack 模版开发 spa 项目时 我们习惯使用 npm install 安装各种组件和依赖到本地 但引入的组件越来越多 打包时可能会导致 app js 过大的问题 对加载很不友好 准确的说 vue webpack
  • 嫖一嫖显示器的Over drive (OD) 功能

    1 背景 如下图 快速运动的画面会产生拖影现象 影响游戏体验 视觉观感 2 产生的原因 当响应时间大于刷新时间的时候 就会产生拖影 因为 上一帧还没有渲染完 又来了新的帧 3 首先明确上面两个时间的概念 3 1 Response time
  • es通过脚本来进行更新某个List字段

    Map
  • 软件测试最新“年薪50万”骗局来了,让我们来康康你们是如何上当受骗的

    小编热衷于收集整理资源 记录踩坑到爬坑的过程 希望能把自己所学 实际工作中使用的技术 学习方法 心得及踩过的一些坑 记录下来 也希望想做软件测试的你一样 通过我的分享可以少走一些弯路 可以形成一套自己的方法 并应用到实际中 小编整理了一些零
  • 【Java】基于哈希表的随机字符替换加密算法

    Java 基于哈希表的随机字符替换加密算法 一 简介 1 1 背景 1 2 目的 二 算法设计 2 1 HashTableCreator类 2 2 MessageEncryptor类 三 算法实现 3 1 HashTableCreator类
  • [UnityUI]UGUI自适应

    关键点 0 自适应的测试 通过设置多种的屏幕大小进行测试 测试时最好要打开Maximize on Play 在屏幕放大的情况下容易观察自适应情况 1 所谓的自适应 就是 a 保持相对位置不变 例如UI设计在屏幕的左上角 那么在各种的分辨率下
  • vue渲染数据时,v-html中的图片如何点击放大 以及 markdowm数据中的图片点击如何放大

    记录一下在部署博客的时候 文章中的内容点击图片不能放大的问题 效果展示 http zfc life sm 我先展示实现的代码 1 template 2 data 3 created 4 methods 上面的代码不是我写的 我只是在原有代码
  • C++实现通讯录管理系统(完整代码)课设或实验

    好久没写文章了 终于结束了满课的前三周以及烦人的考试 可以有多余的时间来自己学习 今天学习了利用C 实现通讯录管理系统 自己手敲了一遍 可以用来当实验题的答案或课设哦 具体的解释在代码注释当中 include
  • Qt中的d指针和q指针

    概述 如果程序从一个以前版本的库动态链接到新版本的库之后 能够继续正常运行 而不需要重新编译 那么我们就说这个库是二进制兼容的 如果一个程序需要重新编译来运行一个新版本的库 但是不需要对程序的源代码进一步的修改 这个库就是源代码兼容的 如果
  • 为什么做弱网测试?怎么做

    为什么要做弱网测试 弱网测试 属于健壮性测试的内容 为什么要做呢 尤其是现在的人们更习惯在地铁里 公交上 甚至是电梯 车库等等的场景里去关注一些新闻 看看小说 直播 玩游戏等等 在这个时候 我们就需要针对这些场景 去关注一下应用的运行状态