【问题标题】:running all http request at one time in Jmeter在 Jmeter 中一次运行所有 http 请求
【发布时间】:2016-03-23 21:21:21
【问题描述】:

在我登录后的测试计划中,我点击了链接,该链接调用了 10 多个不同的服务来显示数据。使用当前的测试计划,所有这 10 多个服务都以顺序格式进行,我不知道是否有一种方法可以同时调用所有这些服务。我可以创建多个线程来实现这一点,但是因为我有更多的链接要添加,它会创建更多的线程和更多的登录实例。如果我可以使用 Jmeter 中可用的逻辑控制器做某事,只是想获得建议?

【问题讨论】:

    标签: jmeter jmeter-plugins


    【解决方案1】:

    不幸的是,每个线程总是按顺序运行(唯一的例外是在 HTTP 采样器中检索嵌入式资源,但现在这在您的情况下很有用)。有几个选项:

    1. 对 Random Order Controller 或 Random Controller 使用多线程

    2. 使用并行运行的线程组。为了不在每个线程组中重复您的代码,请使用Module Controller

    3. 我看到jmeter-parellarel-request,但我没有经验,所以不能推荐

    【讨论】:

    • 谢谢。我正在尝试您建议的 3 个选项,但它只执行一次。需要做更多的研究。
    • 我通常选择选项 2,因为它最接近现实。还有一个选项 4,但这个选项很复杂:选项是创建自己的采样器,然后在那里做任何你想做的事情。
    • 模块选项又不一样了,我需要同时进行 8 个不同的调用,现在如果我认为我创建了 8 个模块,它们仍然不会并行运行,对吗?如果我的理解有误,请告诉我..
    • 不,您创建了 8 个线程组,并配置您的测试计划以并行运行它们。您无需重复 8 次调用,而是将每个线程组配置为使用模块控制器运行相同的模块(包括 8 次调用)。
    • 谢谢,同意我们甚至可能不需要模块化控制器的线程。但我更多地尝试在单线程中使我的报告变得容易。
    【解决方案2】:

    根据设计,JMeter 不支持为单个用户同时发送多个 HTTP 调用。它只会按顺序发送它们!因此,您可能无法完全像浏览器那样模拟 AJAX 请求。

    但是 JMeter 有 Beanshell 采样器/JSR223 采样器,您可以通过它自己实现它。

    this example

    这种方法可能适用于少数线程/用户。当我尝试对 20 多个线程采用类似方法时,我在一个非常简单的测试中遇到内存不足错误,因为它必须创建多个线程来模拟每个用户的 AJAX 调用。

    【讨论】:

    • 感谢回复,我认为JSR223会有限制,我不能做参数化来操作数据?如果我错了,请纠正我...
    猜你喜欢
    • 1970-01-01
    • 2017-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 2017-08-08
    相关资源
    最近更新 更多