『言善信』Fiddler工具 — 14、使用Fiddler进行弱网测试
1、什么是弱网测试
从测试角度来说,需要额外关注的场景远不止断网、网络故障等情况,还需要关注弱网情况下测试。
弱网测试属于健壮性测试的内容。随着国内移动端迅猛发展,大大增加用户碎片化使用使用APP的。想象一下,用户在地铁里,甚至是电梯,车库等场景使用APP,我们就需要针对这些场景的弱网环境下,验证出现丢包、延时软件的处理机制,避免因用户体验不友好造成用户的流失。
2、弱网环境的影响
- 用户体验。
用户使用过程中,弱网的高延迟和高丢包,在实时性要求非常高的场景,容易伤害用户体验。 - 非正常情况下,出现bug概率会增加。
在解决日常的支持需求中,经常会遇到用户反馈一些无法简单复现的bug,有很大一部分的bug是由于用户自身的网络环境波动,或者是本身网络环境就较为恶劣,而服务在面对这些恶劣的网络环境的健壮性不够,导致会出现一些意想不到的bug。
3、弱网环境测试场景
- 场景:测试弱网环境下某个操作响应时间
原因:用户对等待时间容忍度低,若弱网环境加载超过5s,用户很容易kill应用后再次进入应用。
测试点:性能测试中,加入弱网环境测试点,检测各个场景网络请求的 API 消耗时间(此处可以放入性能测试中,做为衡量软件性能好坏的指标)。 - 场景:测试弱网环境下直至超时,UI界面友好度和APP是否稳定。
原因:容错机制主要是考虑弱网情况下带来的不稳定,常见的问题是:loading超时导致ANR(无响应)或者crash宕机。
测试点:弱网环境直至超时,判定为断网状态,UI界面和提示,友好且理解无歧义。 - 场景:测试断网后环境下,是否自动重发请求。
原因:不同模块,开发对请求处理不同。测试前可了解,代码是否支持自动重复请求,自动重发请求的频率是什么?
测试点:断网后恢复网络,是否堆积网络请求(目前来说理财模块,当10s左右无返回,则会重发请求),此时请求和返回正常情况下,是否出现异常情况。比如一次支付操作,断网后堆积多个支付请求,恢复网络后因堆积多个支付请求,是否完成多次支付。
ps:断网后恢复网络,考虑APP进行操作目的是否对伤害用户体验,通过哪种手段可以达到操作目的,同时用户体验无感或者低伤害。
还有很多弱网测试的场景,就不一一列举了。
4、使用Fiddler进行弱网测试
(1)Fiddler模拟弱网环境
Fiddler模拟弱网环境是非常简单的,操作如下:
Rules菜单 —> Performance
—> 勾选Simulate Modem Speeds
,
勾选之后访问网站会发现网络慢了很多,不需要进行重启Fiddler。
(2)设置弱网的参数
菜单Rules —> Cutomize Rules...
,来打开CustomRules.js
文件。
在文件中搜索关键字m_SimulateModem
。
让我们来分析一下这几行代码:
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";
}
m_SimulateModem
:表示一个开关flag。
当Rules菜单 —>Performance
—>Simulate Modem Speeds
是勾选状态,则flag=true,就进入这段代码,开启弱网。如果Simulate Modem Speeds
不是勾选状态,则反之。oSession["request-trickle-delay"] = "300";
表示限制上传速度。
注释说的也很明白:上传1KB
内容需要300ms
,转化一下上传速度:1Kb/0.3s = 3.3KB/s
,也就是说网络上行速度只有3.3KB/S
。oSession["response-trickle-delay"] = "150";
表示限制下载速度。
说明:下载1KB
内容需要150ms
,转化后的下载速度:1KB/0.15s=6.6KB/s
,也就是说网络下载速度只有6.6KB/S
。- 总结:我们就修改最后的数据就可以,数值越大网络越慢。
(3)进行弱网测试对比
1)先用正常的网速发送请求
例如方位:http://test.lemonban.com/ningmengban/app/login/login.html
抓取结果如下:
2)开启弱网环境发送请求
Rules菜单 —> Performance
—> 勾选Simulate Modem Speeds
。
可以看到比正常网速发送请求慢了很多。我这里使用的是默认配置,如果需要调整弱网的程度,可以自行调整弱网参数。
(4)恢复设置
完成测试之后,需要再次执行:Rules菜单 —> Performance
—> 勾选Simulate Modem Speeds
,关闭弱网模拟。
5、补充:TimeTaken/ms列配置
TimeTaken/ms
列是计算完成请求的用时。
配置方法:
Rules菜单 —> Custome Rules
,搜索class Handlers
。
加在class Handlers
里面添加,如下代码:
//左侧信息会显示时间
public static BindUIColumn("TimeTaken/ms", 120)
function TimeTaken(oS: Session):String{
var sResult = "0";
//获得时间戳的ms值
var t1_ms = oS.Timers.ClientBeginResponse.ToUniversalTime().Millisecond;
//获得时间戳的minute值
var t1_m = oS.Timers.ClientBeginResponse.ToUniversalTime().Minute;
//获得时间戳的second值
var t1_s = oS.Timers.ClientBeginResponse.ToUniversalTime().Second;
var t1 = t1_m*60*1000 + t1_s*1000 + t1_ms ;
var t2_ms = oS.Timers.ClientDoneRequest.ToUniversalTime().Millisecond;
var t2_m = oS.Timers.ClientDoneRequest.ToUniversalTime().Minute;
var t2_s = oS.Timers.ClientDoneRequest.ToUniversalTime().Second;
var t2 = t2_m*60*1000 + t2_s*1000 + t2_ms ;
if(t1 >= t2){
var t3 = t1 - t2;
sResult = t3.toString();
}
return sResult;
}
提示:不想配置
TimeTaken/ms
列也可以,在Statistics
界面进行查看也行。
参考:
『言善信』Fiddler工具 — 14、使用Fiddler进行弱网测试的更多相关文章
- 『言善信』Fiddler工具 — 2、HTTP请求内容详解
目录 1.HTTP协议介绍 2.使用Fiddler抓取一个请求 3.НТТP请求报文 (1)НТТP请求报文说明 (2)请求行 (3)请求头(Request Header) (4)请求体 4.НТТР ...
- 『言善信』Fiddler工具 — 1、Fiddler介绍与安装
目录 1.Fiddler简介 2.Fiddler功能 3.Fiddler工作原理 (1)先来了解一下B/S架构 (2)Fiddler工作原理 (3)Fiddler工作原理进阶说明 (4)以Google ...
- 『言善信』Fiddler工具 — 3、Fiddler界面布局详解【菜单栏】
目录 (一)Fiddler界面布局介绍 (二)菜单栏 1.File文件菜单: 2.Edit编辑菜单: 3.Rules规则菜单: 4.Tools工具菜单: 5.View视图菜单: 6.Help帮助菜单: ...
- 『言善信』Fiddler工具 — 6、Fiddler界面布局详解【命令行和状态栏】
目录 1.命令行 2.状态栏 1.命令行 命令行在Fiddler的左下方的黑色窗口,也叫QuickExec,可以调用 Fiddler的内置命令. 这一系列内置的函数用于筛选和操作会话列表中的sessi ...
- 『言善信』Fiddler工具 — 15、使用Fiddler抓取HTTPS请求
目录 1.Fiddler抓取HTTPS过程 2.拓展:SSL/TLS证书握手原理 3.Fiddler抓取HTTPS原理总结 4.Fiddler抓取HTTPS设置 步骤1:配置证书 步骤2:勾选设置 5 ...
- 『言善信』Fiddler工具 — 16、使用Fiddler抓取移动端App请求
目录 1.抓取Android移动端App请求 2.抓取IOS移动端App请求 3.总结: 1.抓取Android移动端App请求 前提: 因为Fiddler抓包的原理就是通过代理,所以确保被测终端要和 ...
- 『言善信』Fiddler工具 — 4、Fiddler面布局详解【工具栏】
目录 (一)工具栏详细介绍 1.第一组工具: 2.第二组工具: 3.第三组工具: 4.第四组工具: (二)工具栏使用说明 1.Fiddler修改代理端口: 2.过滤Tunnel to...443请求链 ...
- 『言善信』Fiddler工具 — 11、Fiddler中Composer功能详解
目录 1.Composer功能介绍 2.Composer界面说明 3.使用方式 (1)自定义Request请求 (2)Composer重复发送请求 (3)Composer篡改请求数据 1.Compos ...
- 『言善信』Fiddler工具 — 17、Fiddler常用插件(Willow)
目录 1.Traific Difer插件 2.PDF View插件 3.JavaScript Formatter插件 4.CertMaker for iOS and Android插件 5.Synta ...
随机推荐
- 使用QT creator实现一个五子棋AI包括GUI实现(8K字超详细)
五子棋AI实现 五子棋游戏介绍 五子棋的定义 五子棋是全国智力运动会竞技项目之一,是具有完整信息的.确定性的.轮流行动的.两个游戏者的零和游戏.因此,五子棋是一个博弈问题. 五子棋的玩法 五子棋有两种 ...
- 【译】N 皇后问题 – 构造法原理与证明 时间复杂度O(1)
[原] E.J.Hoffman; J.C.Loessi; R.C.Moore The Johns Hopkins University Applied Physics Laboratory *[译]* ...
- 【JavaScript】Leetcode每日一题-矩形区域不超过K的最大值和
[JavaScript]Leetcode每日一题-矩形区域不超过K的最大值和 [题目描述] 给你一个 m x n 的矩阵 matrix 和一个整数 k ,找出并返回矩阵内部矩形区域的不超过 k 的最大 ...
- git修改远端仓库地址
git remote set-url origin 远端地址
- JPEG头部解析
6.3 JPEG格式 6.3.1简介 微处理机中的存放顺序有正序(big endian)和逆序(little endian)之分.正序存放就是高字节存放在前低字节在后,而逆序存放就是低字 ...
- Pytorch系列:(六)自然语言处理NLP
这篇文章主要介绍Pytorch中常用的几个循环神经网络模型,包括RNN,LSTM,GRU,以及其他相关知识点. nn.Embedding 在使用各种NLP模型之前,需要将单词进行向量化,其中,pyto ...
- 三分钟了解B2B CRM系统的特点
最近很多朋友想了解什么是B2B CRM系统,说到这里小Z先来给大家说说什么是B2B--B2B原本写作B to B,是Business-to-Business的缩写.正常来说就是企业与企业之间的生意往来 ...
- [bug] idea 导入多个 maven 项目
参考 https://www.cnblogs.com/qinxu/p/9649267.html
- [Qt] 事件机制(三)
在主窗口Widget中增加几个小功能 1.点击左键,在左上角label中显示"haha",点击右键,显示"lala" 在widget.h中添加: 1 #incl ...
- [Python] 爬虫系统与数据处理实战 Part.1 静态网页
爬虫技术基础 HTTP/HTTPS(7层):应用层,浏览器 SSL:加密层,传输层.应用层之间 TCP/IP(4层):传输层 数据在传输过程中是加密的,浏览器显示的是解密后的数据,对爬虫没有影响 中间 ...