JMeter-详解jmeter线程组

线程组元件是任何一个测试计划的开始点。在一个测试计划中的全部元件都必须在某个线程下。全部的任务都是基于线程组。

1、Threads (Users)线程 用户

clipboard.png

上图能够看到,jmeter有三个添加线程组的选项,名字不同, 可是建立以后,其界面是彻底同样的。数据库

一、 setup thread group  

一种特殊类型的ThreadGroup,用于在执行常规线程组以前执行一些必要的操做。在“setup thread group ”下提到的线程行为与普通线程组彻底相同。不一样的是执行顺序---它会在普通线程组执行以前被触发。服务器

应用场景举例:并发

  • A、测试数据库操做功能时,用于执行打开数据库链接的操做。
  • B、测试用户购物功能时,用于执行用户的注册、登陆等操做。

 

二、teardown thread group 

一种特殊类型的ThreadGroup,用于在执行常规线程组完成后执行一些必要的操做。在“teardown thread group ”下提到的线程行为与普通线程组彻底相同。不一样的是执行顺序---它会在普通线程组执行以后被触发。oop

应用场景举例:测试

  • A、测试数据库操做功能时,用于执行关闭数据库链接的操做。
  • B、测试用户购物功能时,用于执行用户的退出等操做。

tips:spa

默认状况下,若是测试按预期完成,则TearDown线程组将不会运行。
若是你想要运行它,则须要从Test Plan界面中选中复选框“Run tearDown Thread Groups after shutdown of main threads”。

可能你仍是不太理解他们与普通的线程组有什么不一样。可是若是你用过junit,想必你应该对setup ,teardown这两个字眼不陌生。线程

若是你熟悉loadrunner,那你应该知道loadrunner的脚本中除了action里是真正的脚本核心内容,还有进行初始化操做的init脚本和测试完毕后对应的end脚本块。那么这里setup thread group 和 teardown  thread group 就是分别指这两部分。code

  

三、thread group(线程组)

     这个就是咱们一般使用的线程。通俗的讲,一个线程组能够看作一个虚拟用户组,线程组中的每一个线程均可以理解为一个虚拟用户。多个用户同时去执行相同的一批次任务。每一个线程之间都是隔离的,互不影响的。一个线程的执行过程当中,操做的变量,不会影响其余线程的变量值。ip

 

2、线程组基本设置

在线程组界面中能够设置如下数据,进行控制线程组:it

clipboard.png

一、取样器错误后要执行的动做:

  • 继续:忽略错误,继续执行
  • Start Next Thread Loop: 忽略错误,线程当前循环终止,执行下一个循环。
  • 中止线程:当前线程中止执行,不影响其余线程正常执行。
  • 中止测试:整个测试会在全部当前正在执行的线程执行完毕后中止
  • Stop test now:整个测试会当即中止执行,当前正在执行的取样器可能会被中断。

这几个配置项控制了“当遇到错误的时候测试的执行策略”是否会继续执行。
 

二、设置线程数:

线程数也就是并发数,每一个线程将会彻底独立的运行测试计划,互不干扰。多个线程用于模仿对服务器的并发访问。

 

三、设置ramp-up period:

ramp-up period用于设置启动全部线程所须要的时间。
若是选择了10个线程,而且ramp-up period是100秒,那么JMeter将使用100秒使10个线程启动并运行。
每一个线程将在前一个线程启动后10(100/10)秒后启动。

当这个值设置的很小、线程数又设置的很大时,在刚开始执行时会对服务器产生很大的负荷。

下图的线程配置中,5个线程,5秒启动时间,每一个线程执行两次循环。那么每秒会启动一个线程,每次循环执行一个请求。

clipboard.png

四、设置循环次数:

该项设置线程组在结束前每一个线程循环的次数,若是次数设置为1,那么JMeter在中止前只执行测试计划一次。

五、Delay Thread creation until needed:

 默认状况下,测试开始的时候,全部线程就被建立完了。若是勾选了此选项,那么线程只会在合适的须要用到的时候建立。

 

3、线程组调度器设置

调度器配置能够更灵活的控制线程组执行的时间
一、持续时间(秒):

控制测试执行的持续时间,以秒为单位。

二、启动延迟(秒):

控制测试在多久后启动执行,以秒为单位。

三、启动时间:

控制测试在某个时间点启动。但这个配置会被“启动延迟”配置覆盖。

四、结束时间:

控制测试执行的结束时间。但这个配置会被“持续时间”配置覆盖。

若是不想当即执行执行,能够经过调度器控制测试执行的开始时间和结束时间。

当测试开始时,若是设置了调度器,JMeter将等待直到到了开始时间。在每一个周期结束,JMeter将会检查是否到达结束时间,若是达到,中止运行;不然测试继续运行直到达到了重复限制。

相关文章
相关标签/搜索