【发布时间】:2017-05-16 08:32:24
【问题描述】:
我想在 JMeter 中执行 Ajax 请求。我用 JMeter 和 BlazeMeter 记录了我的测试计划,但没有一个可以处理 Ajax 请求。我该如何解决我的问题?
或者有什么工具可以发送并发Ajax请求?
提前致谢, 硕士
【问题讨论】:
标签: ajax jmeter blazemeter
我想在 JMeter 中执行 Ajax 请求。我用 JMeter 和 BlazeMeter 记录了我的测试计划,但没有一个可以处理 Ajax 请求。我该如何解决我的问题?
或者有什么工具可以发送并发Ajax请求?
提前致谢, 硕士
【问题讨论】:
标签: ajax jmeter blazemeter
默认情况下,JMeter 无法模拟 Ajax 请求,因为它不处理 .js 文件(截至 3.1 版本)。您必须为 AJAX 请求显式添加请求(HTTP 采样器)。
使用浏览器的Network 选项卡(F12 选项)并按xhr 过滤流量,它只显示AJAX 请求。将这些请求作为 HTTP 采样器添加到脚本中您在测试计划中需要的位置。
浏览器可以处理.js 文件,因此AJAX 请求是从浏览器发送的。当您使用HTTP Test Script Recorder 录制脚本时,当您使用浏览器进行导航时,即使是 AJAX 请求(源自 js 文件)也会被添加/录制到测试计划中。
由于 JMeter 受限制无法处理 .js 文件,如果您在构建 Test Plan 时没有 HTTP Test Script Recorder,请使用 HTTP 采样器手动添加 AJAX 请求(除了 HTTP Get 或 Post 请求)。
注意:如果您使用的是HTTP Test Script Recorder,则无需手动添加,因为它们已记录在测试计划中。
【讨论】:
js 文件,因此来自js 文件的请求永远不会被发送。这是 JMeter 的一个已知限制。您必须使用 HTTP 采样器为它们显式添加请求。
wpnonce(检查在线行为),它的生命周期很短。你把这个值关联起来了吗?比较请求,通过浏览器发送并通过 Jmeter 发送。找出差异。可能,差异(值的变化),您可能需要关联。
您可以通过使用 JMeter 代理记录 http 流量来做到这一点
http://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.pdf
但只能重放相同的流量,这可能对会话、cookie 有问题... 更好的解决方案是使用 WebDriver
https://jmeter-plugins.org/wiki/WebDriverTutorial/
https://jmeter-plugins.org/wiki/PluginInstall/
需要的包是https://jmeter-plugins.org/files/packages/jpgc-webdriver-1.4.0.zip
【讨论】:
目前不支持启动比线程组中最初定义的线程更多的线程,该功能被跟踪为Bug 53159。 AJAX 请求是“正常”的 HTTP 请求,因此 JMeter 可以记录和重放它们,但是当涉及到异步执行时 - 你现在还不能这样做。解决方法选项位于:
【讨论】:
在使用 JMeter 代理记录采样器后,我遇到了同样的问题。答案在这篇博文中:https://lincolnloop.com/blog/load-testing-jmeter-part-1-getting-started/ - 请参阅 Ajax 请求部分。
为 ajax 请求添加一个 HTTP 标头管理器,并确保您发送的是 X-Requested-With:XMLHttpRequest 标头。
【讨论】: