关于JMeter测试计划方法结构的建议

时间:2016-11-02 16:36:15

标签: multithreading jmeter performance-testing

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

让我们采取以下方案。

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

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

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

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

我接近这个的方法是为每个用户创建5个独立的线程组。 每个线程组内是每个用户发送的特定http请求。 每个http请求由其自己的循环控制器管理,其中我已设置每个请求发送的次数

由于我希望所有用户立即发送请求,因此我取消选中 在主测试计划中“连续运行线程组”。一眼就看出测试计划看起来像这样: test plan view

由于我刚接触使用Jmeter和性能测试,我对我的方法有一些疑问:

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

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

  3. 提前感谢任何建议

2 个答案:

答案 0 :(得分:0)

你的方法是正确的。

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

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

答案 1 :(得分:0)

  1. 首先,您的测试需要切合实际,它应该尽可能地代表真实用户(或用户组)。如果测试做到了 - 这是一个很好的测试,反之亦然。类似的东西:

    • 如果User1和User2代表2个不同的用户组(例如User1经过身份验证,User2未经过身份验证,或者User1是admin,User2是guest),则他们应该进入不同的线程组。

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

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

  2. 在实际负载测试中,您应始终逐渐添加负载,以便将响应时间,吞吐量,错误率等各种指标与增加的虚拟用户数相关联。同样的方法应该应用于#34;斜降",您不应该立即关闭负载,以便能够看到您的应用程序在加载后如何恢复。您可能希望使用一些custom Thread Groups available via JMeter Plugins project,例如:

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