JMeter多个线程组的使用说明

如果您的JMeter测试计划中包含多个线程组,本文可帮助您了解如何结合JMeter和PTS配置参数,合理选择多线程组并行或串行压测。

背景信息

Apache JMeter提供三种线程组:

  • Thread Group:(线程组)是测试计划的核心组件之一,用于定义测试的用户行为模拟。线程组的主要功能是控制虚拟用户(线程)的数量以及这些用户的行为和生命周期。

  • Setup Thread Group:(设置线程组)是一种特殊的线程组类型,主要用于在性能测试执行之前执行一些初始化操作。它通常用于准备测试环境或设置测试所需的前置条件。如打开数据库连接等。

  • Teardown Thread Group:(拆卸线程组)是一种特殊的线程组类型,专用于在测试计划执行完毕后进行清理操作。它通常用于恢复测试环境或收尾工作,以确保测试过程中对系统所做的任何更改都能被撤销。如关闭数据库连接等。

前置后置线程组

在PTS中配置的并发数、循环次数会覆盖Thread Group(主线程组)在JMeter脚本的配置。但不会影响Setup Thread GroupTeardown Thread Group

image

设置多线程组并行或串行

如果JMeter脚本中包含多个Thread Group(主线程组),您可以参照以下说明设置多线程组的并行和串行关系。

PTS施压配置中的循环次数会覆盖所有的线程组,而压测时长如果到达,整个压测都会停止。

多线程组并行

  • 多个线程组并行时,执行的时间由循环次数压测时长中先完成的决定。例如,压测时长设置为10分钟,而循环次数设置为5次,假设循环5次只需要5分钟,那么压测在5分钟时就停止了。

  • 多个线程组并行时,在本地JMeter脚本中,请不要勾选Test Plan(测试计划)属性中的Run Thread Groups consecutively (i.e one at a time),即所有线程组将在测试计划开始时同时启动,独立运行每个线程组。这种设置适合于以下情况:

    • 并行负载测试:当你希望模拟多个用户群体同时访问系统时,可以利用这种并行执行的方式。例如,你可以在不同的线程组中配置不同类型的用户行为。

    • 不同场景的同时测试:如果你的测试计划需要同时测试不同的场景或功能模块,并行执行线程组是一个有效的方式。

    • 减少测试时间:并行执行可以减少测试所需的总时间,因为所有线程组会同时开始并运行。

    Run Thread Groups consecutively

多线程组串行

串行的情况会稍微复杂一点,操作如下:

  1. 在本地调试JMeter脚本时,勾选Test Plan(测试计划)属性中的Run Thread Groups consecutively (i.e. one at a time),这将确保线程组按顺序运行,即一个线程组完成后再执行下一个。这对于需要按阶段执行的测试特别有用,比如先进行某些初始化任务,然后再进行负载测试。

    独立运行每个线程组

  2. 在PTS上设置循环次数。该循环次数会作用于每个线程组。例如,测试计划中有A、B、C三个线程组,在PTS施压配置中,设置循环次数为5,那么执行顺序是先基于A的并发数循环5次,之后基于B的并发数循环5次,最后是C的并发数循环5次。

  3. 在PTS上设置的压测时长需要足够长,避免在压测中多线程串行的过程中被中断。预估的压测时长 = 业务请求的RT * 总请求数。您可以在预估的压测时长基础上适当延长。