1、什么是弱网测试

从测试角度来说,需要额外关注的场景远不止断网、网络故障等情况,还需要关注弱网情况下测试。

弱网测试属于健壮性测试的内容。随着国内移动端迅猛发展,大大增加用户碎片化使用使用APP的。想象一下,用户在地铁里,甚至是电梯,车库等场景使用APP,我们就需要针对这些场景的弱网环境下,验证出现丢包、延时软件的处理机制,避免因用户体验不友好造成用户的流失。

2、弱网环境的影响

  1. 用户体验。

    用户使用过程中,弱网的高延迟和高丢包,在实时性要求非常高的场景,容易伤害用户体验。
  2. 非正常情况下,出现bug概率会增加。

    在解决日常的支持需求中,经常会遇到用户反馈一些无法简单复现的bug,有很大一部分的bug是由于用户自身的网络环境波动,或者是本身网络环境就较为恶劣,而服务在面对这些恶劣的网络环境的健壮性不够,导致会出现一些意想不到的bug。

3、弱网环境测试场景

  1. 场景:测试弱网环境下某个操作响应时间

    原因:用户对等待时间容忍度低,若弱网环境加载超过5s,用户很容易kill应用后再次进入应用。

    测试点:性能测试中,加入弱网环境测试点,检测各个场景网络请求的 API 消耗时间(此处可以放入性能测试中,做为衡量软件性能好坏的指标)。
  2. 场景:测试弱网环境下直至超时,UI界面友好度和APP是否稳定。

    原因:容错机制主要是考虑弱网情况下带来的不稳定,常见的问题是:loading超时导致ANR(无响应)或者crash宕机。

    测试点:弱网环境直至超时,判定为断网状态,UI界面和提示,友好且理解无歧义。
  3. 场景:测试断网后环境下,是否自动重发请求。

    原因:不同模块,开发对请求处理不同。测试前可了解,代码是否支持自动重复请求,自动重发请求的频率是什么?

    测试点:断网后恢复网络,是否堆积网络请求(目前来说理财模块,当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进行弱网测试的更多相关文章

  1. 『言善信』Fiddler工具 — 2、HTTP请求内容详解

    目录 1.HTTP协议介绍 2.使用Fiddler抓取一个请求 3.НТТP请求报文 (1)НТТP请求报文说明 (2)请求行 (3)请求头(Request Header) (4)请求体 4.НТТР ...

  2. 『言善信』Fiddler工具 — 1、Fiddler介绍与安装

    目录 1.Fiddler简介 2.Fiddler功能 3.Fiddler工作原理 (1)先来了解一下B/S架构 (2)Fiddler工作原理 (3)Fiddler工作原理进阶说明 (4)以Google ...

  3. 『言善信』Fiddler工具 — 3、Fiddler界面布局详解【菜单栏】

    目录 (一)Fiddler界面布局介绍 (二)菜单栏 1.File文件菜单: 2.Edit编辑菜单: 3.Rules规则菜单: 4.Tools工具菜单: 5.View视图菜单: 6.Help帮助菜单: ...

  4. 『言善信』Fiddler工具 — 6、Fiddler界面布局详解【命令行和状态栏】

    目录 1.命令行 2.状态栏 1.命令行 命令行在Fiddler的左下方的黑色窗口,也叫QuickExec,可以调用 Fiddler的内置命令. 这一系列内置的函数用于筛选和操作会话列表中的sessi ...

  5. 『言善信』Fiddler工具 — 15、使用Fiddler抓取HTTPS请求

    目录 1.Fiddler抓取HTTPS过程 2.拓展:SSL/TLS证书握手原理 3.Fiddler抓取HTTPS原理总结 4.Fiddler抓取HTTPS设置 步骤1:配置证书 步骤2:勾选设置 5 ...

  6. 『言善信』Fiddler工具 — 16、使用Fiddler抓取移动端App请求

    目录 1.抓取Android移动端App请求 2.抓取IOS移动端App请求 3.总结: 1.抓取Android移动端App请求 前提: 因为Fiddler抓包的原理就是通过代理,所以确保被测终端要和 ...

  7. 『言善信』Fiddler工具 — 4、Fiddler面布局详解【工具栏】

    目录 (一)工具栏详细介绍 1.第一组工具: 2.第二组工具: 3.第三组工具: 4.第四组工具: (二)工具栏使用说明 1.Fiddler修改代理端口: 2.过滤Tunnel to...443请求链 ...

  8. 『言善信』Fiddler工具 — 11、Fiddler中Composer功能详解

    目录 1.Composer功能介绍 2.Composer界面说明 3.使用方式 (1)自定义Request请求 (2)Composer重复发送请求 (3)Composer篡改请求数据 1.Compos ...

  9. 『言善信』Fiddler工具 — 17、Fiddler常用插件(Willow)

    目录 1.Traific Difer插件 2.PDF View插件 3.JavaScript Formatter插件 4.CertMaker for iOS and Android插件 5.Synta ...

随机推荐

  1. Windows核心编程 第六章 线程基础知识 (下)

    6.6 线程的一些性质 到现在为止,讲述了如何实现线程函数和如何让系统创建线程以便执行该函数.本节将要介绍系统如何使这些操作获得成功. 图6 - 1显示了系统在创建线程和对线程进行初始化时必须做些什么 ...

  2. 【jQuery】精细学习记录

    [jQuery]精细学习记录 基础 基本语法: $(选择器).action(回调函数); $/jQuery //jQuery核心函数 $(选择器) //获得的jQuery对象 jQuery核心 - j ...

  3. MVC三层架构的功能的简要说明

    MVC 介绍 MVC: Model 模型 ​ View 视图 ​ Controller 控制器 M (Model) : 模型 功能 DAO层 : 对数据库进行操作(CRUD) Service层 : 处 ...

  4. python-内置函数-文件操作

    文件操作 用的最多的就是r+,w+和a+都有局限性 w+是先清空,然后再写,之后再读 a+是无论如何调整指针位置,写时都在文件最后追加 而r+可以通过调整指针位置来确定写入的位置 文件操作之with处 ...

  5. 建立AD域,修改密码后不重启生效命令

    net user administrator /passwordreq:yes

  6. 多线程-3.sleep() yield() join()

    1.sleep()方法 jdk文档描述:Causes the currently executing thread to sleep (temporarily cease execution) for ...

  7. 使用花生壳、瑞友天翼远程访问金蝶K3

    金蝶版本号 WISE15.1 瑞友6.0系列 花生壳5 金蝶软件无法通过外网直接访问 因此需要使用瑞友天翼来实现远程访问 一般来说 金蝶服务器固定了IP地址以后 通过路由器开房两个外网端口即可实现瑞友 ...

  8. Visual Lab Online —— Alpha版本发布声明

    Visual Lab Online -- Alpha版本发布声明 项目 内容 班级:北航2020春软件工程 博客园班级博客 作业:Alpha阶段发布声明 发布声明 目录 Visual Lab Onli ...

  9. [MySQL数据库之记录的详细操作:增、改、删、单表查询、多表查询]

    [MySQL数据库之记录的详细操作:增.改.删.单表查询.多表查询] 记录详细操作 增.删.改 增: insert t1(字段1,字段2,字段3) values (值1,值2,值3), (值1,值2, ...

  10. Java中Stream流相关介绍

    什么是Stream? Stream是JDK8 API的新成员,它允许以声明性方式处理数据集合 特点 代码简洁: 函数式编程写出的代码简洁且意图明确,使用stream接口让你从此告别for循环 多核友好 ...