如何使用 Jmeter 对 Web 应用程序进行基线化

How to Baseline a Web application using Jmeter

我想为我的应用程序设置基线。它有两个事务 "Place Order" 和 "Add A Product To Favorites"。这两个事务大多遵循相同的导航路线。对于 - 下订单业务交易,步骤是登陆登录页面..登录..添加到购物车..结帐..下订单。对于 - 将产品添加到收藏夹业务交易,步骤是:登陆登录页面..登录....添加到购物车...添加到收藏夹。我想 运行 测试并查看应用程序在特定吞吐量下给出的一致响应时间。我有以下问题。

如果我将“添加到收藏夹”场景创建为具有 4 个采样器的线程组和具有 5 个采样器的下订单场景(如所提到的步骤所示),我是否应该为各个线程组单独添加吞吐量整形计时器,如果那么我应该给出的吞吐量参数是多少,比如 RPS 设置。 我的应用程序具有以下正常负载的最大响应时间和平均响应时间(即没有队列等待时间,因为我仅通过 运行 单个线程收集响应时间,因此等待时间分量为零)。 N.B L 为了简单起见,我没有添加思考时间,而且由于后端 ERP 是遗留系统,响应时间有点太贵了。

所以,我将为 "Place Order" 创建的线程组在下面有 http 采样器,它们各自的响应时间为 1 个用户负载:

  1. 登陆登录页面 - 6074 毫秒(平均 4492 毫秒)
  2. 使用凭据登录 - 2549 毫秒(平均为 631 毫秒)
  3. 添加到购物车 - 1553 毫秒(平均为 304 毫秒)
  4. 登陆购物车页面:47044 毫秒(平均:15901 毫秒)
  5. 下订单:19126 毫秒(平均为 17110 毫秒)
  6. 注销:4801 毫秒(平均为 2706 毫秒)

以下是我的查询:

  1. 根据上述响应时间,最大吞吐量是多少,即我可以实现的下订单交易,以便我可以将其设置为吞吐量整形图插件中的 TPS 参数,然后 运行 负载测试。请有人解释一下得出该值的计算过程。

  2. 相同的采样器(即登陆登录页面和登录并添加到购物车)在多个线程组中使用,例如上面的下订单业务场景和将产品添加到收藏夹业务交易。所以我的问题是,如果不同的线程组将同一个登录控制器 Servlet/Add 连接到 Cart Servlet(我的应用程序是一个 J2EE 应用程序),那么如何考虑到这一点,以便为登录采样器生成的队列将不会影响通过下订单业务场景和其他使用登录采样器事务的业务场景实现的 TPS,因为我们将 运行 连接两个线程组。(一个用于下订单,一个线程组用于添加到收藏夹),同时 运行 进行负载测试

  3. 如何设置线程组的并发度;说下订单交易。我有这个问题,因为我们需要知道最大响应时间。因此,我是否应该将 Thread 组中所有采样器的整个响应时间相加,然后乘以我们计算的 TPS,然后除以 1000。请解释一下这种情况下的逻辑。

  1. 除了您之外没有人可以回答,根据您的数字我们可以说 1 个用户能够在 19 秒内执行 1 个下订单请求或每分钟 3 个下订单请求。如果您再添加一位用户,可能会出现两种情况:

    1. 响应时间保持不变。在这种情况下,您将能够对 2 个用户每分钟执行 6 个请求,对 3 个用户每分钟执行 9 个请求,等等。

    2. 响应时间增加。在这种情况下,由于 performance bottleneck,您将无法与 2 个用户每分钟执行 6 个请求。

    查看 What is the Relationship Between Users and Hits Per Second? 文章了解更多详情。

  2. 我认为您不应该单独衡量各种业务用例,行为良好的负载测试应该尽可能接近真实的应用程序使用情况,实际上它比一个用户在其他用户登录时创建和订购。但是,如果您明确需要单独测试订单创建,您可以在 setUp Thread Group and then pass the authentication context (in majority of cases it is a set of Cookies) to the main Thread Group where the order creation takes place using i.e. Inter-Thread Communication Plugin

  3. 中执行登录
  4. 你不需要知道响应时间,你需要提供足够的虚拟用户以进行所需的负载(假设应用程序能够处理它),考虑使用Concurrency Thread Group which can kick off extra threads if the current amount is not enough for maintaining the desired throughput. It can be connected with the Throughput Shaping Timer via Feedback function.