0

我有一个 JMeter 测试计划来在 SAP Web 客户端上执行性能和负载测试。测试计划包含 5 个线程组。在每个线程组中,我都有一个包含 N 请求的事务控制器,它们在其中执行 Login-Process-Logoff 。

我需要能够在无限循环中运行 20 个用户的测试计划,然后在 1 小时后关闭,但是执行仍然在 Web 客户端上的所有用户的注销(每个事务控制器上的最后一个请求)。

到目前为止,关闭只是停止对活动线程的测试,无论它是什么,都没有完成事务控制器。

有任何想法吗?

4

2 回答 2

0

这可以通过将While 控制器 作为父控制器添加到 Transaction 控制器来实现。而控制器应该检查持续时间并在持续时间超过一小时时退出。

在此处输入图像描述

在 While 控制之外添加一个测试操作采样器并将其配置为停止当前线程。

在此处输入图像描述

带有解决方案的示例测试计划可在@GitHub获得

于 2020-01-31T12:19:52.697 回答
0

您可以引入一个JVM Shutdown Hook来拦截 JMeter 关闭并能够完成正在运行的任务。

示例实现:

  1. 将设置线程组添加到您的测试计划
  2. JSR223 采样器添加到设置线程组
  3. 将以下代码放入“脚本”区域:

    def myHook = new Thread({ ->
        try {
            println('' + new Date()  + '\tShutdown detected, waiting for 5 for logging out')
            Thread.sleep(5000)
            println('' + new Date()  + '\tExiting...')
        } catch (InterruptedException ignored) {
        }
    })
    Runtime.getRuntime().addShutdownHook(myHook)
    

就是这样,当您向 JMeter 发送终止信号时,将调用该钩子,您可以在那里放置您需要的任何逻辑:

在此处输入图像描述

于 2020-02-03T11:44:47.640 回答