前言
Jmeter体系结构我们可以简单分层为:测试计划–>线程组–>元件–>组件。
一个测试计划的下一层就是线程组,线程组下面是所有元件,每一个元件又是多个组件的集合。
Jmeter 自带的线程组控件(Thread Group),是所有测试计划的起始点。一个线程组就是一个虚拟用户组,线程组中的每一个线程都是一个模拟用户。模拟并发测试,即多个线程(虚拟用户)同时去执行相同的任务。线程之间是独立的,单独线程操作变量,不影响其他线程的变量值。
Thread Group
Thread Group是普通线程组,一个线程组就是一个虚拟用户组,线程组中的每一个线程都是一个模拟用户。Jmeter线程组添加路径:Test Plan–>Add–>Threads(Users)–>Thread Group
如上图所示,Jmeter提供三种不同的线程组:
- Thread Group
- SetUp Thread Group
- TearDown Thread Group
SetUp Thread Group
SetUp Thread Group设置线程组,它是线程组的一种特殊形式,用于在常规线程组开始执行之前执行必要的操作。设置线程组中提到的线程的行为与普通线程组完全相同。设置线程组的目的是将所有预测试操作与普通线程组区分开来,以便在实际测试执行开始之前执行它们。Jmeter自动触发正常线程组之前的设置。例如:
- 从数据库中导入数据量,存入变量。
- 创建/注册多个用户用于测试线程组。
TearDown Thread Group
TearDown Thread Group卸载线程组,它也是线程组的一种特殊形式,用于在常规线程组执行完成后执行必要的操作。设置线程组中提到的线程的行为与普通线程组完全相同。TearDown Thread Group区分普通线程组在于执行所有测试后运行。也就是在执行普通线程组完成后,Jmeter将自动触发TearDown线程组。执行普通线程组完成后,Jmeter将自动触发TearDown线程组。例如:
- 删除执行测试时创建的用户。
- 测试数据库操作功能时,用于执行关闭数据库连接的操作。
备注:
默认情况下,如果测试按预期完成,则TearDown Thread Group将不会运行。
如果你想要运行它,则需要从Test Plan界面中选中复选框“Run tearDown Thread Groups after shutdown of main threads”。
线程组的基本设置
添加一个线程组以后,需要进行配置才能更好的满足业务测试的要求。线程组界面中可以设置以下数据,进行控制线程组。如下图所示,我们把线程组的属性分配成:ABC三个区域,接下来分别进行解释。
容错配置
A区域包含的配置信息有线程组的名称和备注,还有处理容错机制的相关的特殊配置。详情如下:
- Name:可以是测试业务的一个功能模块的名称,或者一个测试场景;
- Comments:备注信息,这里可以输入一些备注。
Action to be taken after a Sampler error(取样器错误后要执行的动作):
- Continue(继续):忽略错误,继续执行;
- Start Next Thread Loop (开始下一个线程): 忽略错误,终止当前线程,执行下一个线程循环;
- Stop Thread(停止线程):当前线程停止执行,不影响其他线程正常执行;
- Stop Test(停止测试):停止测试,当前正在执行的线程执行完毕后停止;
- Stop Test Now(立即停止执行):立即停止执行,当前正在执行的取样器可能会被中断;
以上配置就是我们所说的容错机制应用范畴,当测试过程中遇到错误,几种应对执行的策略。
线程配置
Thread Properties部分主要提供线程配置功能,详情见上图B区域。线程数也就是并发数,每个线程将会完全独立的运行测试计划,互不干扰。该区域为线程属性部分,此部分可以设置多个线程数,用于模仿对服务器的并发访问。
- Number of Threads(users):线程数,相当于模拟的用户数量;
- Ramp-up Period(in seconds):建立指定线程需要的时间,Ramp Up 的含义是指“从无到有”的时间,好比飞机从起飞到平飞的的过程。这里的含义指:确保在此时间内,建立起全部线程。
例如:Jmeter 将在60秒内启动60个线程的方法是,每秒启动一个线程。
- Loop Count:若填值则执行所填次数的循环;若勾选“Forever”,则永远执行下去,直到手动停止;
- Delay Thread creation until needed:延迟线程创建,直到需要才创建,减少不必要的资源消耗。如果不勾选该项,JMeter在测试开始时分配所有线程。
执行原理:
Jmeter 将在 Ramp-Up Period 时间范围内,启动 Number of Threads 个用户(线程),并且使每个用户(线程)重复发出 Loop Count 次请求(采样)。
如下图所示,Jmeter 将在 10S 时间内,启动 100个用户(线程),并且重复发出 1次请求(采样)
Scheduler Configuration
Scheduler Configuration直译为调度员配置,或者理解为调度器配置。该部分的配置主要是与时间相关,可以配置持续执行时间,配置启动执行延时时间。调度器配置可以更灵活的控制线程组执行的时间。
Duration(seconds) 持续时间(秒):测试计划持续多长时间,会覆盖结束时间。
Startup delay(seconds)启动延迟(秒):测试计划延迟多长时间启动,会覆盖启动时间。
注意:
- 只有勾选了Scheduler调度员,C区域的配置才生效。
- 只有勾选了Scheduler调度员,C区域的配置才允许编辑
小结
JMeter 将在 Ramp-Up Period 时间内,启动 Number of Threads 个线程并且利用每个线程重复发出 Loop Count 次请求,线程收到响应后,即发出 Loop 内的下一次请求线程的请求 Loop Count次数达到后,线程即被释放。
版权声明:本文由[Altumn]发表于https://www.testclass.cn/jmeter_thread_group.html如有侵权,
请联系[commuinty@eolink.com](mailto:commuinty@eolink.com)删除。