Jmeter体系结构-线程组

2019年11月1日 2.6k 次阅读 2 条评论 1 人点赞

前言

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次数达到后,线程即被释放。

    温馨提示:欢迎加入软件测试学习交流QQ群:670250199
    标签:
    最后编辑:2019年11月1日

    风里云里,我在这里等你!

    文章评论(2)

  • torrent

    I was reading some of your blog posts on this website and I think this site is real instructive! Keep on putting up. Ernestine Selig Lenora

    2020年12月21日
  • web-dl

    Im thankful for the blog post. Really thank you! Really Cool. Jessie Louie Kosaka

    2020年12月20日