JMeter - BlazeMeter 保存的参数化请求与 cURL 生成的 POST 正文的请求不同

Posted

技术标签:

【中文标题】JMeter - BlazeMeter 保存的参数化请求与 cURL 生成的 POST 正文的请求不同【英文标题】:JMeter - Parameterized request saved by BlazeMeter not behaving like request with POST body generated by cURL 【发布时间】:2022-01-01 14:28:51 【问题描述】:

使用 Blazemeter 的 Chrome 插件,我将 POST 请求保存到 JMeter。

请求被保存为参数化的 POST 请求:

POST https://qa2s.xxxx.com/dcs/public/facade.aspx

POST data:
show_unclosed=1&search_transaction_id=&with_cashless_external=0&user_preset_id=3&
responseType=json&num_of_rows=200&with_cash=0&rs%3AClearSession=true&
action=Dynamic_Transactions_Monitor&model=operations%2FdynamicTransactionsMonitorMega&
is_Legend=1&actor_id=2001186292&show_sales=1&time_period=47

当我运行这个请求时,我得到了 200 响应,但响应内容不正确,基于浏览器调试。响应应该是实体的 JSON 集合。

但是,当我将此请求保存为 cURL 命令并将其导入 JMeter 时,它以参数化 URL 的形式出现,并且它的响应符合预期。

https://qa2s.xxxx.com/dcs/public/facade.aspx?responseType=json&
model=operations/dynamicTransactionsMonitorMega&
action=Dynamic_Transactions_Monitor&&num_of_rows=200&show_unclosed=1&
show_sales=1&with_cash=0&with_cashless_external=0&is_Legend=1&
rs:ClearSession=true&time_period=41&search_transaction_id=&user_preset_id=3

这是为什么?

我希望前一个请求像后一个请求一样给出响应。

在 JMeter 中更易于阅读。确实没有必要将 POST-body 请求转换为参数化 URL。

一些附加信息

获得第一个返回 JSON 对象的请求的唯一方法是将 modelaction 参数附加到 URL,将其他所有内容作为参数保留在正文中。

原来的 URL 似乎只是将您带到报告页面;您需要在 URL 中指定模型和操作才能实际检索报告数据。

所以我认为这是插件的问题(正如@Dmitri T 建议的那样)。

我说的对吗?

【问题讨论】:

【参考方案1】:

我的期望是,您会收到不同的响应,因为您发送的请求不同。

例如:

model参数:

对于 BlazeMeter:operations/dynamicTransactionsMonitorMega 对于卷曲:operations/yyyy

action参数:

对于 BlazeMeter:zzzzz 对于卷曲:Dynamic_Transactions_Monitor

time_period参数:

对于 BlazeMeter:47 对于卷曲:41

我相信,如果您发送相同的请求,您应该会得到相同的响应,因此请交叉检查从浏览器发送的请求与 JMeter 生成的请求,请求必须完全相同(除了需要关联的动态参数),最好使用外部嗅探器工具,如Wireshark 或Fiddler。如果您修改 JMeter 配置,使请求相同,您将得到相同的响应。

如果您认为 BlazeMeter Chrome 扩展程序生成了不正确的请求定义,通知BlazeMeter Support 是有意义的。

【讨论】:

对于误导我深表歉意 - 我试图编辑信息。我将编辑原始帖子,以便清楚。

以上是关于JMeter - BlazeMeter 保存的参数化请求与 cURL 生成的 POST 正文的请求不同的主要内容,如果未能解决你的问题,请参考以下文章

用BlazeMeter录制JMeter测试脚本

如何在 Blazemeter 测试中通过 Jenkins 在 .jmx 文件中设置参数

JMeter 的 Blazemeter Oauth 插件不再支持使用 OAuth 1.0 进行身份验证?

Jmeter脚本录制

如何在事务级别实现TPS而不是BlazeMeter / JMeter中的请求级别

使用BlazeMeter录制页面脚本