接口测试之Fiddler弱网测试

简介: 前言目前市面上的APP功能越来越丰富,移动端测试也越显为重要。因为用户在网速慢的情况下,你的网站(软件)总能出现各种各样的问题!!!请不要忽略这一点!针对在不同的网络情况下,接下来,本篇要讲述的就是在通过fiddler对APP进行模拟弱网测试,用Fiddler进行弱网环境下的测试,这也是测试人员需要掌握的测试技能。

前言

目前市面上的APP功能越来越丰富,移动端测试也越显为重要。因为用户在网速慢的情况下,你的网站(软件)总能出现各种各样的问题!!!请不要忽略这一点!针对在不同的网络情况下,接下来,本篇要讲述的就是在通过fiddler对APP进行模拟弱网测试,用Fiddler进行弱网环境下的测试,这也是测试人员需要掌握的测试技能。

一、准备环境

1.电脑端安装好fiddler抓包工具,下载地址:https://www.telerik.com/download/fiddler(傻瓜式安装即可)

img_97a3471679310ed98380d934acdd0d81.png
Fiddler

2.准备一台测试手机和测试APP软件(本篇使用小米5S手机和今日头条APP)

二、fiddler模拟限速的原理

通过fiddler来模拟限速,因为fiddler本来就是个代理,它提供了客户端请求前和服务器响应前的回调接口,我们可以在这些接口里 面自定义一些逻辑。Fiddler的模拟限速正是在客户端请求前来自定义限速的逻辑,此逻辑是通过延迟发送数据或接收的数据的时间来限制网络的下载速度和 上传速度,从而达到限速的效果。

三、配置fiddler

fiddler提供了一个功能,让我们模拟低速网路环境…启用方法如下:

Rules → Performances → Simulate Modem Speeds :模拟调制解调器的速度

1.设置端口号

打开Fiddler, Tools-> Options->connections

img_1cb43f9b426cda9a7c2c635d20aee75c.png
设置端口

其中:allow remote computers to connect   允许远程计算机连接”为设置的代理可以连接到fiddle上,必须勾选

2.重启fiddler工具

3.设置模拟调制解调器的速度

打开Fiddler,Rules->Performance->勾选 Simulate Modem Speeds

img_c7f9dfe7beaa879c8ac7ff7d9bc55ea8.png
设置模拟调制解调器

Rules(规则)解析:

1.Hide Image Requests---隐藏图片请求

2.Hide HTTPS CONNECTs---隐藏HTTPS连接

3.Automatic Breakpoints---自动设置断点

>Before Requests---在请求前设置断点,快捷键F11

>After Response---在响应后设置断点,快捷键Alt + F11

>Disabled---不自动设置断点,快捷键Shit + F11

>Ignore Images---自动设置断点时忽略图片

4.Customize Rules...---自定义规则,快捷键Ctrl + R

5.Require Proxy Authentication---需要代理密码验证

6.Apply GZIP Encoding---应用GZIP压缩

7.Remove All Encoding---移除全部编码

8.Hide 304s---隐藏所以状态未304(无变更)的请求

9.Request Japanese Content---请求日文内容

10.User-Agents---选择用户Web客户端代理类型,包括了目前主流浏览器

11.Performance---性能

>Simulate Modem speeds---模拟调制解调器速度

>Disable Caching---禁止缓存

>Cache Always Fresh---新的缓存

4.设置手机代理

手机代理设置“ip地址为本机电脑的ip,端口号为之前设置的端口号(确保端口号不被占用)

img_21ed3263973ca8fa8aab208d0894e38c.png
本机IP地址

5.使手机和PC在同一局域网。在手机连接wifi时,选择显示高级选项,代理选择手动。这里我的手机是华为,其他品牌手机视情况而定。在服务器主机名中填入,你PC的ip地址,服务器端口填你之前设置好的8888。

img_fecf9d761d7bd9e70dc0330f03233276.png
设置手机端IP地址

6.手机浏览器中输入,你的IP地址和端口号。例:10.0.0.153:8888。点击图中的位置安装证书。根据自己的设置安装完证书

img_dfaaef82ddb5e251b6137ea2ad8c8049.png
证书

四、Fiddler弱网的原理

1.手动设置设置上行,下行速率,模拟网路速度的原理,每上传/下载1KB 要delay 多久…

img_8d5018c280c93eefdcef08a5eef6da8b.png
自定义规则

网络取值的算法: 1000/下载速度 = 需要delay的时间(毫秒),比如50kb/s  需要delay200毫秒来接收数据。

在Fiddler ScriptEditor中搜索关键字:m_SimulateModem

img_f95f424ef7e92179dd2e835ed02cc243.png
搜索关键字

代码解析:

>首先来判断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”]即可

当修改好后,点击左上角File-->Save进行保存即可

img_76a845412d7890d6fc0a644c0e3e7256.png
保存修改

需要注意的一点是:当你存档之后,原本已经勾选的SimulateModem Speeds 会被取消勾选,要记得再到Rules → Performances → Simulate Modem Speeds 勾选喔!

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

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

img_013167d02e873bcc4ff3649314cc7ec7.png
运行结果分析1

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

img_a7d973d014765617a6956d1d57ae6db4.png
运行结果分析2
目录
相关文章
|
28天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
55 3
|
2月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
71 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
3月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
256 7
Jmeter实现WebSocket协议的接口测试方法
|
3月前
|
JSON 移动开发 监控
快速上手|HTTP 接口功能自动化测试
HTTP接口功能测试对于确保Web应用和H5应用的数据正确性至关重要。这类测试主要针对后台HTTP接口,通过构造不同参数输入值并获取JSON格式的输出结果来进行验证。HTTP协议基于TCP连接,包括请求与响应模式。请求由请求行、消息报头和请求正文组成,响应则包含状态行、消息报头及响应正文。常用的请求方法有GET、POST等,而响应状态码如2xx代表成功。测试过程使用Python语言和pycurl模块调用接口,并通过断言机制比对实际与预期结果,确保功能正确性。
270 3
快速上手|HTTP 接口功能自动化测试
|
3月前
|
JavaScript 前端开发 测试技术
ChatGPT与接口测试
ChatGPT与接口测试,测试通过
55 5
|
2月前
|
JavaScript 前端开发 API
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
41 0
|
4月前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
5月前
|
存储
Postman 接口测试配置 Pre-request Script
Postman 接口测试配置 Pre-request Script
227 5
Postman 接口测试配置 Pre-request Script
|
4月前
|
网络协议 测试技术 网络安全
Python进行Socket接口测试的实现
在现代软件开发中,网络通信是不可或缺的一部分。无论是传输数据、获取信息还是实现实时通讯,都离不开可靠的网络连接和有效的数据交换机制。而在网络编程的基础中,Socket(套接字)技术扮演了重要角色。 Socket 允许计算机上的程序通过网络进行通信,它是网络通信的基础。Python 提供了强大且易于使用的 socket 模块,使开发者能够轻松地创建客户端和服务器应用,实现数据传输和交互。 本文将深入探讨如何利用 Python 编程语言来进行 Socket 接口测试。我们将从基础概念开始介绍,逐步引导大家掌握创建、测试和优化 socket 接口的关键技能。希望本文可以给大家的工作带来一些帮助~
|
4月前
|
SQL Java 测试技术
SpringBoot单元测试快速写法问题之PorkService 接口中的 getPork 方法的作用如何解决
SpringBoot单元测试快速写法问题之PorkService 接口中的 getPork 方法的作用如何解决