首页 文章

如何在某个步骤中暂停所有线程组,直到进程在其他线程组中完成 - Jmeter

提问于
浏览
1

我有一个复杂的场景,我想在Jmeter测试计划中构建 . 我有一个测试计划,我想在同一时间开始运行一些测试 . 我创建了3个线程组,问题是我希望线程组2 3将在步骤2中保留,直到线程组1(外部进程)完成 . (外部进程是运行jenkins作业,它使用在我的系统中的步骤1 2中创建的数据 . 如果jenkins没有完成,接下来的所有步骤3 - 100将失败)复杂性是我希望所有线程都将启动一起运行,线程组(=测试)2 3将在步骤2之后保持,并等待线程组1的外部进程完成并继续运行 . 这种情况可以在Jmeter中完成吗?没有在线程2 3中使用延迟?请参阅我想要创建的附图

** test2 3中的步骤1 2必须在外部过程之前运行,步骤3必须在外部过程之后运行

[
enter image description here
] [测试计划]

[
enter image description here
] [完整测试计划 - 测试2中的第3步3必须在外部进动后运行]

2 回答

  • 0

    请检查以下计划,我认为它应该工作: -

    enter image description here

    线程组1: - 在执行外部进程之前等待5秒的测试操作(仅用于模拟) . 然后使用正则表达式从响应中获取值 . 在我的样本中,在虚拟采样器(外部处理)响应中它是“5” . 然后我使用JSR223后期处理将其设置为属性 .

    enter image description here

    线程组2和3: - 使用While While Controller来验证线程组1中设置的属性,如果没有,则等待1秒 . 你可以使用一些其他的采样器,如JSSR223进行记录或虚拟,如果你不想在控制器下面等待“测试操作” .

    enter image description here

    通过这种方式,线程组将暂停,并在获取属性值后继续 .

    Below attempt for a flag approach:-

    预处理器将值重置为其他用于while循环控制的东西 .
    enter image description here

    根据上一个示例结果,使用JSR223设置属性 .
    enter image description here

    这是while循环中使用的内容 .
    enter image description here

  • 1

    在努力解决方案后,我发现阳光帮助是使用while循环系统属性 . 我在第一个线程组标志中创建并以0开始它.flag是系统变量所以我使用props.put("flag",flag)命令 . 在第二个线程组中,我使用while循环, ${__javaScript(props.get("_flag") == 0)} 作为条件 . 我使用了Test Action sampler,并将其置于while循环中,操作Pause和持续时间为5000毫秒 - 循环将每隔5秒检查一次标志 . 完成作业后,我输入系统变量flag = 1.并且循环被加入

相关问题