『动善时』JMeter基础 — 11、JMeter线程组详解:Threads(Users)
线程(用户)就是我们通常要添加运行的线程。通俗的讲,一个线程组可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。
线程组中包含的线程数量在测试执行过程中是不会发生改变的。每个线程完全独立的运行测试计划,互不干扰,多个线程用于模仿对服务器的并发访问。
所有控制器和采样器必须在线程组下。其他元件(例如侦听器)可以直接放置在测试计划下,在这种情况下,它们将应用于所有线程组。
1、添加线程组
“测试计划”右键 —> “添加” —> “线程(用户)”,有三个添加线程组的选项。如下图:
注意:如果你还安装了其他的组件或者插件的话,还会有一些其他的线程选项。
说明:
Setup thread group
:setUp线程组
一种特殊类型的线程组,可用于执行预测试操作。和普通的线程组元件一样,不同的是,这种类型的线程执行测试前进行定期线程组的执行。
换句话说,setUp线程组执行顺序是,它会在普通线程组执行之前被触发。
应用场景举例:测试数据库操作功能时,用于执行打开数据库连接的操作。Teardown thread group
:tearDown线程组
一种特殊类型的线程组,可用于执行测试后动作。和普通的线程组元件一样,不同的是,这些类型的线程执行测试结束后执行定期的线程组。
换句话说,这些类型的线程执行测试结束后执行定期的线程组。
应用场景举例:测试数据库操作功能时,用于执行关闭数据库连接的操作,或者清理测试数据。
需注意:默认情况下,如果测试按预期完成,则TearDown线程组将不会运行。
如果需要运行TearDown线程组,则需要取保测试计划Test Plan
界面中“Run tearDown Thread Groups after shutdown of main threads”
(主线程结束后运行tearDown线程组)选项被勾选。Thread group
:线程组
这个就是我们通常添加运行的线程。通俗的讲一个线程组,可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。
2、线程组界面说明
线程组、setUp线程组、tearDown线程组三个线程组的内容界面是一样的,都如下图:
说明:
(1)取样器错误后要执行的动作(Action to be taken after a Sample error):
继续(Continue)
:忽略错误,继续执行。启动下一进程循环(Start Next Thread Loop)
: 忽略错误,线程当前循环终止,执行下一个循环。停止线程(Stop Thread)
:当前线程停止执行,不影响其他线程正常执行。停止测试(Stop Test)
:整个测试会在,当前所有正在执行的线程,执行完毕后停止。立即停止测试(Stop test now)
:整个测试会立即停止执行,当前正在执行的取样器可能会被中断。
(2)线程属性(Thread Praperties):
线程数(Number of Thread (users))
:线程数也就是并发数,每个线程将会完全独立的运行测试计划,互不干扰。
每一个线程就相当于一个用户,多个线程用于模仿对服务器的并发访问。Rum-up时间(秒)
:在该设置时间内启动所有线程(就是启动上边设置的线程数)。
换句话说,就是设置时间内把请求发送出去了。(并不包括返回结果的时间)循环次数(Loop Count)
:该项设置线程组在结束前每个线程循环的次数。
换句话说,就是上边设置的线程数,执行的次数。
可以勾选永远,如果未设置运行时间,需要手动停止。延迟线程创建直到需要(Delay Thread creation until needed)
:默认情况下,测试开始的时候,所有线程就被创建完了。如果勾选了此选项,那么线程只会在合适的需要用到的时候创建。调度器(Scheduler)
:可以更灵活的控制线程组执行的时间
(3)调度器配置(Scheduler Configuration):
- 持续时间(秒):如果选择了调度程序复选框,控制测试执行的持续时间,以秒为单位。
- 启动延迟(秒):如果选择了调度程序复选框,控制测试在多久后启动执行,以秒为单位。
可以在调度器中配置持续时间(秒)和启动延迟(秒)来控制每个线程组的持续时间以及启动后的秒数。当测试开始时,JMeter将在启动线程组的线程之前等待启动延迟(秒),然后运行配置的持续时间(秒)。
例:如果使用了10个线程,并且启动周期为100秒,那么JMeter将花费100秒来启动和运行所有10个线程。每个线程将在上一个线程开始后10(100/10)秒开始。如果有30个线程,启动周期为120秒,则每个连续线程将延迟4秒启动。
参考: