在移动互联网时代,作为软件测试工程师,fiddler绝对是值得掌握并添加进技术栈里的工具之一。

那么,fiddler在日常的测试工作中,一般都有哪些常见的应用场景呢?

根据以往工作经验,大概有如下4类应用场景:

辅助定位bug;

构建模拟测试场景;

APP弱网模拟测试;

前端性能分析及优化;

1、辅助定位bug

合格的软件测试工程师,不仅仅需要能够发现bug,还需要能透过bug表象,分析出问题根本原因,从而提升bug的解决效率,突显bige。

通过fiddler可以抓取request和response,通过对参数进行分析,可以定位是前端问题还是后台问题。

例如:在APP界面输入数据,点击下一步时,提示错误;这时候不能判断问题的根本原因在哪里,是前端页面作限制导致?还是前端request的参数问题,又或者是后台程序挂了?

这个时候就可以通过fiddler抓包,分析request、response来判断问题根本原因所在。

(往往有些测试就是直接把APP页面报错信息截个图就提缺陷了,而没有去作bug定位,这样的缺陷又往往被开发人员所抱怨)

1.1、实例--APP抓包

前提:APP、fiddler在同一局域网

1.1.1、fiddler设置

Tools>Options>Connections,勾选Allow remote computers to connect,同时记住fiddler listen on port的端口号。

1.1.2、获取pc端ip

开始菜单>cmd>ipconfig

1.1.3、手机WiFi设置代理

设置>WLAN>进入WiFi页面>代理>手动,填写主机名(pc端ip)、端口(fiddler listen on port的端口),保存即可进行抓包操作了。

PS:若APP的请求是https协议,则还需要一个下载证书操作:

手机浏览器打开:http://ip:port,点击fiddler certficate字样下载安装证书即可。(ip为pc端ip,port为fiddler listen on port的端口)

同时,在fiddler,Tools>Options>HTTPS,勾选capture https connects。

1.1.4、过滤请求

fiddler抓包时会把手机上所有的请求都铺抓,这时就需要进行过滤。

fiddler右边有个Filters,打开该页面后,勾选use Filters,然后根据需要设置过滤规则,再点击actions>run filterset now即可实现过滤。

PS:测试完成后,记得把WiFi代理恢复原样,不然手机无法正常上网。

2、构建模拟测试场景(mock)

在测试过程中,为了测试覆盖率,往往需要执行很多场景的用例来验证某一功能在各种场景下的业务处理能力,包括正常、异常的场景;

而仅仅通过页面端来发起交易,往往是不能够模拟所有场景的;

例如:常见的登录功能,输入超出长度的的账号、密码,一般都是在前端就提示错误了,这样就不能够测试服务端接收到超出长度的请求时的处理场景了。

又例如:天气预报,测试时只能根据当前的城市、天气情况来测试,如何快速的将全部天气信息匹配的icon和出行提示验证完毕,这就可以通过修改response数据来实现测试场景。

利用fiddler的Breakpoints、AutoResponsder等功能,可以通过修改request或者response的参数,来实现构建模拟测试场景。

2.1、实例--修改request参数

fiddler中选中Rules->Automatic Breakpoints->Before Requests;

页面进行业务操作,此时在fiddler页面可以看见对应的请求图标会有个红色通行标示,表示请求过程中设置了断点,客户端发出的请求被fiddler拦截了,如下图所示:

在左侧点击这个请求,在右侧Inspectors->TextView或WebForms等界面下会看到请求发送的具体内容,直接修改需要模拟的测试场景数据,再点击右下页面的run to complete按钮即可。

2.2、实例--修改response参数

fiddler中选中Rules->Automatic Breakpoints->After Requests;

页面进行业务操作,此时在fiddler页面可以看见对应的请求图标会有个红色禁行标示,表示响应过程中设置了断点,客户端发出的请求被fiddler拦截了。

在右下页面的响应tab页中,修改需要模拟的响应测试场景数据,再点击run to complete按钮即可。

PS:还可以通过命令行bpu的方式来实现断点功能。

3、APP弱网模拟测试

移动端测试区别于PC端测试的一点就是网络的多变性;不同的网络环境和网络制式的差异,都会对用户使用app造成一定影响。

例如:进地铁、上公交、进电梯等,如果app没有对各种网络异常进行兼容处理,那么用户可能在日常生活中遇到APP闪退、ANR、数据丢失等问题。因此,app网络测试,特别是弱网测试显得尤为重要。

利用fiddler的Simulate Modem Speeds功能,可以通过设置网络的上传、下载的网络流量大小来达到模拟弱网环境,从而实现弱网模拟测试,即通过延迟发送数据或接收的数据的时间来限制网络的下载速度和 上传速度,从而达到限速的效果。

3.1、实例--APP弱网测试

fiddler中选中Rules->Cutomize Rules,在文件中搜索关键字:m_SimulateModem;

修改m_SimulateModem值为true,即开启网络模拟:

var m_SimulateModem: boolean = false;

修改uploaded、downloaded的数据来模拟不同的弱网场景:

if (m_SimulateModem) {

// Delay sends by 300ms per KB uploaded.

oSession["request-trickle-delay"] = "384";

// Delay receives by 150ms per KB downloaded.

oSession["response-trickle-delay"] = "2560";

}

上传1KB需要300ms,转化一下上传速度:1Kb/0.3s = 10/3(KB/s),如果想设置上传的速度为50KB/s,你则需要设置Delay 时间为 20ms;(=1000/50)

PS:设置之后可以通过http://www.speedtest.cn/在线测试网速,看是否生效;

2G一般上行/下行速率约为:2.7、9.6kbs,模拟设置为:uploaded 约 2962 ms,downloaded 约 833 ms;(弱网一般指2G网络)

3G一般上行/下行速率约为:384、2560kbs,设置为:uploaded 约 2.6 ms,downloaded 约 0.39 ms;

PS:弱网模拟还可以通过其它工具实现,比如360WiFi的限速设置等;

3.2、扩展弱网络规则

可能在测试中不会想要一个同样虚弱的网络环境,而是随机强弱的网络,这样比较贴切真实情况,那么可以修改上述代码为:

static function randInt(min, max) {

return Math.round(Math.random()*(max-min)+min);

}

if (m_SimulateModem) {

// Delay sends by 300ms per KB uploaded.

oSession["request-trickle-delay"] = ""+randInt(1,2000);

// Delay receives by 150ms per KB downloaded.

oSession["response-trickle-delay"] = ""+randInt(1,2000);

}

这里的randInt(1,2000)应该很好理解,代表1-2000中的一个随机整数,这样就会出现偶尔有延迟偶尔网络又良好的情况。

4、前端性能分析及优化

前端性能在一定程度可以提升用户体验,而前端的性能数据可以通过fiddler的Statistics和Timeline来获取,从而为性能分析及优化提供依据。

4.1、实例--前端性能数据获取分析

通过陈列出所有的HTTP通信量,Fiddler可以很容易的向您展示哪些文件生成了您当前请求的页面。使用Statistics页签,用户可以通过选择多个会话来得来这几个会话的总的信息统计,比如多个请求和传输的字节数。

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

同时,还可以通过Timeline分析资源加载时序图,可以很直观地看到页面上各个资源加载过程所需要的时间和先后顺序,有利于找出加载过程中比较耗时的文件资源,帮助我们有针对性地进行性能优化。

5、小结

总的来说,fiddler是移动互联网测试的利器,除以上介绍的这些常见的日用场景外,还有很多其它用途,如域名的重定向、API的测试等,这里就不一一列举,如有兴趣,可抽空一起探讨。

wifi情况下使用fiddler_fiddler常见的应用场景相关推荐

  1. 手机上4G和WIFI情况下抓包总结

    总结一下自己使用过的移动设备上的抓包方法. 移动设备的操作系统主要包括Android,IOS以及WP.对于每一种系统来说,抓包的情况包括WIFI情况下的抓包以及移动等4G网络情况下的抓包.当然对于每一 ...

  2. wifi情况下使用fiddler_如何对手机http进行抓包?Fiddler工具超好用

    在做手机或移动端APP的接口测试时,需要从开发人员那里获取接口文档,接口文档应该包括完整的功能接口.接口请求方式.接口请求URL.接口请求参数.接口返回参数.如果当前项目没有接口文档,则可以使用fid ...

  3. wifi情况下使用fiddler_钢筋网片在什么情况下使用?

    1.钢丝网片在什么情况下使用? 建筑物中不同材料的组件之间通常存在连接,例如框架柱,梁和砌块墙之间的连接;剪力墙和砌块墙之间经常发生连接.因为它是用不同的材料制成的,并且在不同的时间建造,所以接头容易 ...

  4. win10在电脑已经连接WIFI的情况下查询到WiFi密码(不方便询问或没有办法获得密码的时候)

    win10在电脑已经连接WIFI的情况下查询到WiFi密码(不方便询问或没有办法获得密码的时候) 陈述场景: 刚刚入职没有人告诉你WiFi密码,且因各种情况而无法获取到WiFi密码的时候 去朋友家短暂 ...

  5. 360随身WiFi在没有网络的情况下打开热点

    在电脑上使用无线的网络摄像头必须在同一个局域网下,然而360随身wifi默认情况下是没有网络是不能开热点的,过查阅资料发现需要找到其安装路径C:\Program Files (x86)\360AP(这 ...

  6. Linux热点无网络,Linux网络配置:手提在连接WIFI热点情况下,Ubuntu16.04中怎样配置网络?...

    Linux网络配置:手提在连接WIFI热点情况下,Ubuntu16.04中怎样配置网络?,范佩西致敬温格:你是我的足球父亲,是你塑造了我,磷菩屹倨竿,布加迪推出Chiron Sport特别版,百公里加 ...

  7. linux应急处理方法,Linux系统下6个常见紧急情况的应急处理方法

    1.使用急救盘组进行维护 急救盘组(也称为boot/root盘组),是系统管理员必不可少的工具.用它可以独立地启动和运行一个完整的linux系统.实际 上,急救盘组中的第2张盘上就有一个完整的linu ...

  8. 如何在插入网线的情况下,使用wifi上网

    一.为什么插着网线还要连接wifi 以我本人为例,我们实验室的服务器需要通过局域网才能访问,而服务器的局域网是在我们隔壁的屋子,因此我只能通过隔离的wifi才能访问服务器,但是隔壁的wifi不稳定并且 ...

  9. 组装机装系统,在另一个电脑只有ubuntu系统的情况下用ventoy制作Windows启动盘并且成功安装,后续如何安装win+ubuntu双系统(安装ubuntu后可能出现的wifi不能用的解决方法)

    第一步 下载ventoy 1.下载linux版本的ventoy 2.安装Windows镜像,自己找 3.下载得到的是压缩包ventoy-1.0.76-linux.tar.gz 下载得到的压缩包所在的位 ...

最新文章

  1. 六年磨一剑,全时发布音视频会议平台TANG,多款新品亮相
  2. 吴恩达老师机器学习和深度学习课程文字版下载
  3. 浅谈三维点云中的几何语义
  4. 《LeetCode力扣练习》第461题 汉明距离 Java
  5. centos7安装php5.2yum源操作_CentOS 7下Yum安装PHP7.2步骤
  6. 这几天研究了一下JDK14,发现它处理NPE的方式,真香!
  7. 多协议标签交换中的标签指的是什么?—Vecloud微云
  8. mysql yintint类型_MySQL服务器2 被嫌弃的胖子
  9. 抑郁症损伤神经细胞吗_使用神经网络探索COVID-19与抑郁症之间的联系
  10. 各种手机处理器排行榜_11月新机性能排行榜:荣耀V30第四,vivo S5上榜
  11. php api接口怎么写,php如何写api接口?
  12. 测试用例的设计方法及测试分类
  13. 数字基带调制解调matlab仿真,我的基于MATLAB仿真的数字调制与解调设计
  14. 黑马程序员—-C语言入门十重奏之十renascence
  15. 怎么给新版edge换皮肤外观? | 怎么给edge添加chrome插件?
  16. ReactNative实现仿微信或者通讯录快速索引功能
  17. 2021年高处安装、维护、拆除证考试及高处安装、维护、拆除复审模拟考试
  18. 组图:1968年墨西哥城奥运会
  19. 神经网络种类及应用领域,常用的神经网络有哪些
  20. C语言函数:tolower()、toupper字符大小写转换函数。

热门文章

  1. 有哪些开源的 Python 模块让你相见恨晚?
  2. Python面向对象编程扑克牌发牌程序,另含大量Python代码!
  3. Hive SQL 窗口函数
  4. HDFS的NameNode内存解析
  5. 盘点机器学习领域的五大流派
  6. 提示word损坏,需文本恢复转换器的解决两方法
  7. android客户端下载图片的方法
  8. 在Word里使用部分正则表达式
  9. iris数据集_sklearn日志(二)训练集和测试集划分
  10. pytorch —— Batch Normalization