【问题标题】:Advice on JMeter test plan approach structure关于 JMeter 测试计划方法结构的建议
【发布时间】:2016-11-02 16:36:14
【问题描述】:

我是 Jmaeter 的新手,目前正试图充分利用它来创建 API 性能测试计划。

让我们来看看下面的场景。

我们有一个 API,它返回诸如零件可用性和一个或多个零件的订单详细信息等数据。

我想分析一下不同负载模式下api的响应时间。

假设我们有 5 个用户。 - 每个用户向 API 发送一系列重复的请求。 - 每个用户发出的请求仅对该用户唯一。 IE 用户 1 请求 a、b、c 部分。 用户 2 请求部分 d,e,f... 等等

-所有用户同时处理他们的请求。

我解决这个问题的方法是为每个用户创建 5 个单独的线程组。 每个线程组中都有每个用户发送的特定 http 请求。 每个 http 请求都由它自己的循环控制器管理,我在其中设置了每个请求的发送次数

因为我希望所有用户都同时发送他们的请求,所以我取消选中 在主测试计划中“连续运行线程组”。乍一看,测试计划看起来像这样: test plan view

由于我是使用 Jmeter 和性能测试的新手,我对我的方法有一些疑问:

  1. 在增加我可能希望与之测试的用户数量方面,我构建测试计划的方式是否合适且可维护? 还是拥有一个包含 5 个子循环控制器的单个线程组会更好,每个子循环控制器都包含用户特定的请求正文数据?

  2. 在我当前的设置下,每个线程组都使用 1 秒的默认加速时间。我认为这没关系,因为每个线程组只代表一个用户。但是我认为这可能会导致每次测试运行的启动延迟。是否有任何其他可能更好的方法来处理这个问题,例如使用调度程序或增加每个线程组的加速时间,以便它们不会在完全相同的时间启动?

提前感谢您的任何建议

【问题讨论】:

    标签: multithreading jmeter performance-testing


    【解决方案1】:

    你的方法是正确的。

    如果您希望请求是并行的,它们必须位于不同的线程组中。每个线程组都应该建模一个用例。在您的情况下,用例是请求的特定组合。

    通过足够长的时间运行测试,您将不会感受到加速时间的影响。

    【讨论】:

      【解决方案2】:
      1. 首先,您的测试需要真实,它应该尽可能接近真实的用户(或用户组)。如果测试做到了 - 这是一个很好的测试,反之亦然。比如:

        • 如果 User1 和 User2 代表 2 个不同的用户组(如 User1 已通过身份验证,而 User2 未通过身份验证,或者 User1 是管理员,而 User2 是访客),他们应该进入不同的线程组。

        • 最好使用线程组迭代而不是循环控制器,因为像 HTTP Cookie Manager 这样的一些测试元素具有像 Clear Cookies each Iteration 这样的设置,它们不尊重循环或 While 控制器产生的迭代,他们只考虑线程组- 驱动的迭代

        • 保证同时发送请求的唯一方法是将它们放在一个线程组下并使用Synchronizing Timer

      2. 在进行实际负载测试时,您应该始终逐渐添加负载,以便将响应时间、吞吐量、错误率等各种指标与虚拟用户数量的增加相关联。应将相同的方法应用于“减速”,您不应立即关闭负载,以便能够查看您的应用程序在负载后如何恢复。您可能想使用一些 custom Thread Groups available via JMeter Plugins project 之类的:

        它们提供了灵活方便的方式来设置所需的负载模式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多