11

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

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

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

我添加了 10 个线程。我在同步控制器中添加了 5 个。那么当我运行测试时,我会得到 5 个用户的并发吗?其余5个用户将是同时用户吗?

当登录页面加载时,我也依赖请求。因此,为了实现登录并发,我在事务控制器中添加了所有请求,并将同步控制器作为子级添加到事务控制器。如果我做得对,请告诉我。

另外请让我知道是否有另一种方法可以实现特定操作的并发(例如:5 个用户同时点击登录按钮)。

4

1 回答 1

17

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

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

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

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

于 2012-04-17T12:58:32.350 回答