JMeter - 记录所有用户然后执行其他步骤

时间:2018-04-20 17:57:33

标签: jmeter load-testing jmeter-3.2

我正在对注册系统进行负载测试。我目前有一个JMeter脚本从CSV文件(CSV数据集配置)中提取用户信息,我的线程组有以下步骤:

  1. 联系CAS服务器,获取登录凭证
  2. 登录CAS
  3. 执行注册系统中的任务
  4. 退出CAS
  5. JMeter将这些步骤作为一个单独的线程运行,并且脚本可以运行。

    问题是,与现实生活中用户的行为相比,我们的测试不太准确。就像我提到的那样,这是一个注册系统,我们的最终用户在实际开始锤击实际系统之前几分钟登录并进行身份验证(通过CAS)(当注册在午夜打开时 - 并且闸门打开)。

    在现实生活中,我们的CAS身份验证系统从未出现过问题,因为我们没有数千名用户同时进行身份验证。当我们使用JMeter进行负载测试时,前两个步骤是通过CAS进行身份验证,这使CAS成为瓶颈,当我们在10秒的时间内为500个用户加载测试时,它开始失败。因此,我们的负载测试事务无法访问实际的注册系统,并且JMeter负载测试无效。

    有没有办法更新JMeter脚本以首先记录所有用户(循环前两步并维护所有用户的CAS会话信息),然后执行其余步骤?

1 个答案:

答案 0 :(得分:1)

斯特林,

请使用' Synchronizing Timer' JMeter的元素,它将等待所有用户登录,然后继续前进到下一步(注册系统)。

您可以使用以下结构创建脚本:

  • 联系CAS服务器的HTTP请求,获取登录凭证
  • 登录CAS的HTTP请求
  • 同步计时器[将模拟用户数量设置为'根据您的要求设置为0和超时[建议的设置值为' 300000'即5分钟]。不要将超时设置为' 0'否则,如果任何用户在上一步中失败,您的测试将永远保持运行状态]
  • 注册系统中执行任务的HTTP请求
  • 用于退出CAS的HTTP请求

当测试完成' HTTP请求登录CAS'然后,它将等待所有用户到达该步骤,然后转到注册系统中的“执行HTTP请求”任务。步骤

如果您需要与其他JMeter元素相关的信息,那么您可以参考JMeter knowledge base在一个地方获取所有重要信息。

如果您有任何问题,请告诉我。