线程组详解

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

image.png

 

1、setup thread group  

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

    应用场景举例:oop

    A、测试数据库操做功能时,用于执行打开数据库链接的操做。测试

    B、测试用户购物功能时,用于执行用户的注册、登陆等操做。spa

 

2、teardown thread group 

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

    应用场景举例:cdn

    A、测试数据库操做功能时,用于执行关闭数据库链接的操做。blog

    B、测试用户购物功能时,用于执行用户的退出等操做。element

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

 

3、thread group(线程组)

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

 

image.png

 

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

  • 继续:忽略错误,继续执行操做(其余取样器不受影响,继续执行)

      例如线程组中包含查询设备和查询服务商2个请求,若查询设备请求失败,查询服务商请求会继续执行。

  • Start Next Thread Loop:忽略错误,中止当前线程组并直接启动下一个线程组;如设置循环次数非1,那么遇到一个线程失败,线程组当前循环终止,执行下一个循环。

     例一:线程组中包含查询设备和查询服务商2个请求且循环次数非1,若查询设备请求失败,查询服务商请求将再也不执行,等下一次从新迭代,从查询设备开始执行。

     例二:测试计划中包含线程组1和线程组2,线程组1的循环次数是1,那么线程组1执行出错时,会直接启动线程组2

  • 中止线程:中止当前线程,其余线程不受影响
  • 中止测试:在全部当前正在执行的线程执行完毕后中止整个测试计划
  • Stop Test Now:当即中止整个测试计划

      如测试计划设置了【独立运行每一个线程组(例如在一个组运行结束后启动另外一个)】

      则线程组1中的某个请求失败了,线程组2中的请求不会被执行

二、线程属性

  • 线程数:当前线程组的线程数量,能够简单的理解为用户数量。
  • Ramp-up Period (in seconds):达到上面指定线程数所花费的时间,单位为秒。举个例子:假设线程数为100个,花费时间20s,那么每秒启动的线程数 = 线程数/时间,即100/20 = 5,也就是每隔1秒启动5个线程。
  • 循环次数:设置的线程数循环的次数。勾选“永远”选项,则线程组一直循环注意:若是勾选了永远且调度器配置中设置了持续时间,则会在持续时间到达以后结束循环)。
  • Delay Thread creation until needed:当线程须要执行的时候,才会被建立。若是不勾选此选项,全部线程在开始时就所有被建立。

      此选项和Ramp-up Period设置配合使用,若是勾选此项,则全部线程会在须要的时候启动,即会在Ramp-up Period(in seconds)到时间后启动全部线程,此项做用在于,若是说线程运行时间小于咱们设置的Ramp-up Period(in seconds),则会形成一种状况就是在Ramp-up Period(in seconds)结束以前部分线程已经跑完了,这样就会致使活动线程数小于咱们设置的线程数,也就意味着咱们设置的N个并发的场景并未彻底起效。可是若是勾选了此项,则线程会根据Ramp-up Period(in seconds)设置来建立,可是不会启动,直到最后一个线程建立好后一块儿启动(这样就会很好的模拟到咱们的N个并发数了)

    若是单个线程的运行时间长于咱们设置的Ramp-up Period(in seconds)时间,则此项也不用勾选。

    举例说明:如过设置线程数为10,Ramp-up Period(in seconds)时间为100,则若是不勾选此项则这次测试会每隔10s建立并启动一个线程,那么100s后会有1-10个线程在运行;可是若是勾选此项,那么线程组会每隔10s建立一个线程但并不启动sample,而是会等待100s后全部10个线程都建立好以后同时启动sample。

  • 调度器:勾选此选项,才可修改下面的调度器配置。

      持续时间(秒):整个测试计划持续的时间。(优先于后面的结束时间选项)。注意这个时间设置不要设置的比      Ramp-up Period(in seconds)小,若是勾选了循环次数中的永远,那么测试同样会在此持续时间到达后结束。

      启动延迟(秒):测试计划启动后,会被延迟启动,时间为选项填入的时间。(优先于后面的启动时间选项)

      启动时间:整个测试计划将于此处填写的时间点启动

      结束时间:整个测试计划将于此处填写的时间点结束

 

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

 

笔记:同一个线程组里的多个请求,默认是从上到下执行;同一个测试计划里的线程组,没有前后执行顺序(随机)(除非勾选了独立运行每一个线程组)

相关文章
相关标签/搜索