『动善时』JMeter基础 — 11、JMeter线程组详解:Threads(Users)

线程(用户)就是我们通常要添加运行的线程。通俗的讲,一个线程组可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。

线程组中包含的线程数量在测试执行过程中是不会发生改变的。每个线程完全独立的运行测试计划,互不干扰,多个线程用于模仿对服务器的并发访问。

所有控制器和采样器必须在线程组下。其他元件(例如侦听器)可以直接放置在测试计划下,在这种情况下,它们将应用于所有线程组。

1、添加线程组

“测试计划”右键 —> “添加” —> “线程(用户)”,有三个添加线程组的选项。如下图:

image

注意:如果你还安装了其他的组件或者插件的话,还会有一些其他的线程选项。

说明

  • 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线程组三个线程组的内容界面是一样的,都如下图:

image

说明:

(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秒启动。

参考:

posted @ 2021-05-09 17:04  繁华似锦Fighting  阅读(978)  评论(0编辑  收藏  举报