JMeter搭配Fiddler的简单使用(二)

本文详细介绍JMeter的基础使用方法,包括创建测试计划、执行简单的请求测试、处理复杂的登录流程及使用第三方工具badbody辅助测试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在前一篇博客中,对JMeter和Fiddler进行了简单的介绍,如果读者不熟悉,可以先复习一下JMeter搭配Fiddler的简单使用(一)。接下来,在本篇博客中,主要讲解JMeter的实际使用,让我们开始吧。

一、测试计划

就是指针对整个测试脚本的设计,比如要测试那些功能,要测试达到的目标是多少,要如何去建立测试脚本等等。

比如:我们要对百度这个网站发起请求,测试1秒钟,发起10个线程进行请求,看网站能否承受得住这个压力。这就是一个简单的测试计划。

二、实战演示

1)简单的请求

添加线程组
添加线程组

配置线程组的参数:
线程组的参数

这里指1秒钟启动10个线程去进行访问,循环1次。

添加Sampler组件并配置参数:
添加Sampler组件

配置参数

添加监听器,查看请求结果

添加监听器

点击上方的运行按钮,执行脚本,查看具体结果。

查看结果树的具体情况:
查看结果树

查看聚合报告的具体情况:
聚合报告

具体报告每项的意思在第一篇博客已经写过,不明白的可以去上一篇博文查看一下。

2)复杂的请求

刚刚那个实例实在是太简单了,完全没有体现出JMeter的强大功能。JMeter还有很多强大的功能。
比如:如果我们遇到一个要登录的请求,每次我们需要先登录,才能调用接口,最后我们再退出。

比如我们使用某个信息接口,比如ip查询接口,但必须先登录一下才可以使用该接口。

登录

这里我们需要用到Fiddler软件来监听我们的接口了。启动Fiddler,清除所有监听到的数据,在网页中进行登录,然后我们就可以在Fiddler里面查看到我们登录发送的数据了。

模拟登录

fiddler拦截登录

在header里可以查看到更加详细、具体的头部信息。

header头部信息

在JMeter里面建立新的计划,添加配置元件HTTP Cookie管理器,模拟登录使其可以保存cookie。

HTTP Cookie

添加Sampler元件HTTP请求,配置数据为表单格式。当然这里可以根据自己的需求来配置,不仅可以配置header,还可以添加一些其他的设置。比如变量。

HTTP请求

除了一个HTTP请求外,还添加了一个响应断言,这里是只在请求服务器完成后,服务器响应的相应数据等是否符合预期。比如:成功返回200,错误返回500,404,302等信息。

响应断言

添加用户自定义变量:

自定义变量1

自定义变量2

除了自定义变量获取外,我们还可以匹配某个请求响应的数据结果为变量。

在添加一个Sampler元件,模拟请求数据接口。如下:

数据接口请求

注意这里使用的${ip}就是刚刚用户自定义变量ip的值。

在这里我们还可以通过添加后置处理器——正则表达式提取器,把获得某个请求数据的结果设置为某个变量。比如新增一条数据,返回新增数据的id,我们需要这个值,可以设置为变量,在下一个请求中就可以直接使用了。

后置处理器

比如这次获得的数据为:

[
    {
        "country": "美国",
        "country_id": "US",
        "area": "东部",
        "area_id": "US_ET",
        "region": "乔治亚州",
        "region_id": "US_GA",
        "city": "",
        "city_id": "-1",
        "county": "",
        "county_id": "-1",
        "isp": "阿里巴巴",
        "isp_id": "100098",
        "ip": "11.22.12.22"
    }
]

我想要提取isp的值“阿里巴巴”为变量isp。如下:
正则表达式提取器

参数介绍
引用名称在HTTP等请求中,引用此数据,需要用到的名称
正则表达式用于将需要的数据提取出来
模板表示使用提取到的第几个值( 1 − 1 :表示取所有值, 0 0 :表示随机取值1:表示取第1个, 2 2 :表示取第二个,以此类推:n:表示取第n个),注意在数字前后要用美元$符号括起来
匹配数字0 代表随机取值,1 代表全部取值
缺省值如果正则表达式没有搜找到值,则使用此缺省值

最后再添加一个退出登录的请求,添加查看结果树,添加聚合报告,到这里整个测试就完整了。

退出登录的请求

运行一下,查看结果:

查看结果树:

查看结果1

聚合报告:

查看结果2

3)使用badbody来使用JMeter

badbody是一款不错的web自动化测试工具,它提供了将web测试脚本直接导出为JMeter的功能。

首先下载badbody工具,地址

下载后,直接安装即可。

启动badbody后,在地址栏输入要访问测试的地址,然后点击红色的按钮启动录制脚本。
开始

我们把刚刚建立的脚本用badbody重新录制来实现,

录制1

输入用户名和密码,更换为接口地址

录制2

最后再退出登录,

录制3

点击红色按钮 ,或者旁边的黑色方块按钮结束录制,并把脚本导出为JMeter的脚本类型。

录制4

打开导出的脚本,如图所示:
录制5

是不是感觉很方便,很强大。badbody还有很强大的功能,大家可以慢慢去探查一下。

最后前面的例子的脚本,我就放到网盘上面了,大家可以下载看看。地址

### 如何在 Fiddler 中设置抓包断言 Fiddler 是一款功能强大的调试工具,能够捕获并显示 HTTP(S) 流量以便于开发者分析和验证应用程序的行为。虽然 Fiddler 自身并不内置传统的“断言”机制,但可以通过脚本扩展来实现这一需求。 #### 脚本方式实现断言 通过编写自定义 JavaScript 或 C# 脚本来处理流量数据,并根据特定条件触发错误提示或日志记录是一种常见的做法。以下是具体操作: 1. **打开 ScriptRules 文件** 打开 Fiddler 的菜单栏中的 `Tools` -> `Customize Rules...` 来编辑 ScriptRules.js 文件[^1]。 2. **修改 OnBeforeResponse 方法** 在该文件中找到 `OnBeforeResponse` 函数,在此函数内部加入逻辑用于检测响应内容是否满足预期条件。例如检查某个 API 返回的状态码或者 JSON 数据字段是否存在且正确。 ```javascript static function OnBeforeResponse(oSession: Session) { // 只针对指定 URL 进行断言 if (oSession.url.Contains("example.com/api")) { try { var responseText = oSession.GetResponseBodyAsString(); // 将响应体解析成对象形式 var jsonResponse = JSON.parse(responseText); // 断言某些属性存在与否及其值是否符合期望 if (!jsonResponse.success || jsonResponse.statusCode !== 200) { throw new Error('API Response Validation Failed'); } } catch (e) { // 输出异常信息至控制台 FiddlerObject.log(e.message); oSession["ui-color"] = "red"; // 高亮标记失败请求 } } } ``` 上述代码片段展示了如何利用 JavaScript 对目标接口的返回结果执行简单的断言操作。当发现不符合预设标准的情况时,则改变对应 session 的颜色便于识别[^3]。 #### 设置移动端设备抓取环境下的断言 对于需要监控移动应用发出的数据流场景来说,除了基本的桌面端配置之外还需要额外注意网络参数同步问题。确保被测手机与运行 fiddler 的主机处于相同子网内之后按照如下步骤完成相关设定[^4]: - 修改路由器 DNS 设定指向本地机器 IP 地址; - 安装 CA 根证书使得 HTTPS 解密生效; - 更新 hosts 映射表关联域名到实际服务器地址; 最后再结合前面提到的方法添加相应的校验规则即实现了完整的跨平台自动化测试框架雏形构建过程。 --- ### 注意事项 尽管以上介绍了基于脚本的手动实现方案,但对于更复杂的需求建议考虑采用专门设计的支持 BDD/TDD 思想的专业级 API Test Frameworks ,比如 Postman、JMeter 等替代品可能更加高效便捷[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值