如何在Jmeter中生成并发用户负载

时间:2012-04-17 11:36:33

标签: concurrency jmeter load-testing

我有一个测试,用户将登录并在搜索字段中输入搜索关键字并获得结果。最后退出。

现在我想用Jmeter测试并发性。所以这就是我提出的。

Test plan
  Thread group
  + Login request
    + Synchronizing Controller
  + Search string 
    + Synchronizing Controller
  + Logout 

我添加了10个线程。我在同步控制器中添加了5个。所以当我运行测试时,我将获得5个用户的并发性?休息5个用户将是同时用户吗?

此外,我在登录页面加载时依赖请求。因此,为了在登录时实现并发,我在事务控制器中添加了所有请求,并将作为子节点的Synchronizing Controller添加到事务控制器。如果我做得对,请告诉我。

另外请告诉我是否有其他方法可以实现特定操作的并发性(例如:5个用户同时点击登录按钮)。

1 个答案:

答案 0 :(得分:17)

首先,您应该尝试区分'并发'和'同时'。它们通常是非常相似的术语,但在负载测试中它们具有不同的含义。同时意味着两个或多个请求同时发生。 Concurrent是两个或多个并行运行的线程(脚本)。

所以,你所说的是试图配置JMeter来模拟多个同时发出的请求。但实际上,有一种比这更好的方法。您应该将测试设置为您希望应用程序支持的负载类型的真实表示,而不是专注于同时尝试在JMeter中同时执行相同的请求。如果你做得好,使用随机等待时间,吞吐量控制器和实际数量的线程,那么你将自动测试并发性,同时运行真实,有效和有用的性能测试。

因此,基本上,删除同步计时器,改为使用常量吞吐量计时器,配置等待时间,然后计算正确的线程数以生成所需的负载。

这种方法的额外好处是你不太可能提出假阴性。例如,如果您使用5个同时登录请求命中服务器,那么您可能会发现此调用是单线程的,并且响应时间会增加。但也许这没关系,也许同时两次登录呼叫的机会很小,以至于不值得花时间改变代码。这是负载测试中非常非常重要的概念 - 也许是最重要的 - 你必须有现实的目标,没有这些,你可以运行测试,发现错误的错误,并且通常会浪费时间。