如果您的JMeter测试计划中包含多个线程组,本文可帮助您了解如何结合JMeter和PTS配置参数,合理选择多线程组并行或串行压测。
背景信息
Apache JMeter提供三种线程组:
Thread Group:(线程组)是测试计划的核心组件之一,用于定义测试的用户行为模拟。线程组的主要功能是控制虚拟用户(线程)的数量以及这些用户的行为和生命周期。
Setup Thread Group:(设置线程组)是一种特殊的线程组类型,主要用于在性能测试执行之前执行一些初始化操作。它通常用于准备测试环境或设置测试所需的前置条件。如打开数据库连接等。
Teardown Thread Group:(拆卸线程组)是一种特殊的线程组类型,专用于在测试计划执行完毕后进行清理操作。它通常用于恢复测试环境或收尾工作,以确保测试过程中对系统所做的任何更改都能被撤销。如关闭数据库连接等。
在PTS中配置的并发数、循环次数会覆盖Thread Group(主线程组)在JMeter脚本的配置。但不会影响Setup Thread Group和Teardown Thread Group。
设置多线程组并行或串行
如果JMeter脚本中包含多个Thread Group(主线程组),您可以参照以下说明设置多线程组的并行和串行关系。
PTS施压配置中的循环次数会覆盖所有的线程组,而压测时长如果到达,整个压测都会停止。
多线程组并行
多个线程组并行时,执行的时间由循环次数和压测时长中先完成的决定。例如,压测时长设置为10分钟,而循环次数设置为5次,假设循环5次只需要5分钟,那么压测在5分钟时就停止了。
多个线程组并行时,在本地JMeter脚本中,请不要勾选Test Plan(测试计划)属性中的Run Thread Groups consecutively (i.e one at a time),即所有线程组将在测试计划开始时同时启动,独立运行每个线程组。这种设置适合于以下情况:
并行负载测试:当你希望模拟多个用户群体同时访问系统时,可以利用这种并行执行的方式。例如,你可以在不同的线程组中配置不同类型的用户行为。
不同场景的同时测试:如果你的测试计划需要同时测试不同的场景或功能模块,并行执行线程组是一个有效的方式。
减少测试时间:并行执行可以减少测试所需的总时间,因为所有线程组会同时开始并运行。
多线程组串行
串行的情况会稍微复杂一点,操作如下:
在本地调试JMeter脚本时,勾选Test Plan(测试计划)属性中的Run Thread Groups consecutively (i.e. one at a time),这将确保线程组按顺序运行,即一个线程组完成后再执行下一个。这对于需要按阶段执行的测试特别有用,比如先进行某些初始化任务,然后再进行负载测试。
在PTS上设置循环次数。该循环次数会作用于每个线程组。例如,测试计划中有A、B、C三个线程组,在PTS施压配置中,设置循环次数为5,那么执行顺序是先基于A的并发数循环5次,之后基于B的并发数循环5次,最后是C的并发数循环5次。
在PTS上设置的压测时长需要足够长,避免在压测中多线程串行的过程中被中断。
预估的压测时长 = 业务请求的RT * 总请求数
。您可以在预估的压测时长基础上适当延长。