5

我想在 JMeter 中执行 Ajax 请求。我用 JMeter 和 BlazeMeter 记录了我的测试计划,但没有一个可以处理 Ajax 请求。我该如何解决我的问题?

或者是否有任何工具可以发送并发 Ajax 请求?

在此先感谢,马

4

4 回答 4

7

默认情况下,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 Test Script Recorder,则无需手动添加它们,因为它们已经记录在测试计划中。

于 2017-01-02T08:36:41.670 回答
0

您可以通过使用 JMeter Proxy 记录 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

于 2017-01-02T09:18:32.803 回答
0

这是不可能的,因为当前不支持启动比线程组中最初定义的更多的线程,该功能被跟踪为Bug 53159。AJAX 请求是“正常”的 HTTP 请求,因此 JMeter 可以记录和重放它们,但是当涉及到异步执行时 - 你现在还不能这样做。解决方法选项位于:

  1. 使用WebDriver Sampler 插件,这样每个 JMeter 虚拟用户都会启动一个真正的浏览器。警告:这种方式非常耗费资源。
  2. 使用脚本,即JSR223 PostProcessor通过Apache HttpComponents启动 AJAX 驱动的请求
  3. 开发您的自定义采样器。您可以使用当前处理嵌入式资源的方式作为参考。

了解更多:如何使用 JMeter 加载支持 AJAX/XHR 的测试站点

于 2017-01-03T03:33:39.827 回答
0

在使用 JMeter 代理记录采样器后,我遇到了同样的问题。答案在这篇博文中:https ://lincolnloop.com/blog/load-testing-jmeter-part-1-getting-started/ - 请参阅 Ajax 请求部分。

为 ajax 请求添加 HTTP 标头管理器并确保您正在发送X-Requested-With:XMLHttpRequest标头。

于 2017-11-15T02:36:40.093 回答