Jmeter体系结构-线程组

前言

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

本文分享自微信公众号 - 软件测试testclass(testclass_cn)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-11-01

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏橙子探索测试

Jmeter跨线程组传递参数

jmeter的线程组之间是相互独立的,各个线程组互不影响,所以线程组A中输出的参数,是无法直接在线程组B和线程组C中被调用的。

12320
来自专栏橙子探索测试

【Jmeter篇】Linux环境下安装部署运行Jmeter

yum -y install java-1.8.0-openjdk* #下载安装jdk1.8套件

13530
来自专栏CU技术社区

IoT前沿|潜入深海,探寻流数据存储Pravega的优势与特点

上一期内容我们讲到:5G时代到来,无处不在的物联网、自动驾驶汽车等在边缘产生的数据源源不断,就像开着的水管,数据源一直流出,由此诞生了新的数据类型即“流数据”。...

9230
来自专栏Hadoop实操

0718-6.3.0-CDH6.3的新功能

你现在可以在Cloudera Enterprise 6.3中使用OpenJDK 11,在集群中安装OpenJDK 11时,默认使用G1GC为CDH大多数服务作为...

25820
来自专栏happyJared

ZooKeeper 概述

ZooKeeper 是一个开源的分布式协调服务,ZooKeeper 框架最初是在 "Yahoo!" 上构建的,用于以简单而稳健的方式访问应用程序。 后来,Apa...

6710
来自专栏码匠的流水账

聊聊rocketmq的ListenerContainerConfiguration

本文主要研究一下rocketmq的ListenerContainerConfiguration

12100
来自专栏橙子探索测试

Jmeter生成自动化和性能多维度测试报告(性能指标和监听器图表)

jmeter在命令行下还可以生成多维度的测试报告,里面包含了常用的性能指标和监听器图表。

7810
来自专栏FunTester

爬取720万条城市历史天气数据

内容爬虫完毕,校验完毕,缺失信息暂未统计。总数据720万,地区3200个,年份从2011-2019,大小950Mb,原始数据已丢失,需要的朋友可以自己运行脚本挂...

16520
来自专栏中间件兴趣圈

再谈 RocketMQ broker busy(实战篇)

本文将在 RocketMQ 消息发送system busy、broker busy原因分析与解决方案 的基础上,结合生产上的日志尝试再次理解 broker bu...

6810
来自专栏橙子探索测试

【Jmeter篇】1小时轻松搞定项目接口自动化测试与数据驱动

之前我们的用例数据都是配置在 Jmeter Http 请求中,每次需要增加,修改用例都需要打开 jmeter 重新编辑,当用例越来越多的时候,用例维护起来就越...

10420

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励