Jmeter功能组件详细介绍

本文详细介绍了JMeter中的关键组件,如TestPlan、ThreadGroup、TestFragment等,展示了如何配置数据库连接、HTTP请求、定时器和监控工具,以及如何管理和复用代码片段。此外,还涵盖了如何启用/禁用模块、运行/终止脚本及查看日志等实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能组件详细介绍

当前脚本涉及使用的组件介绍

软件版本介绍:

备注:软件支持切换中文版本,如果对于英文版觉得可读性较差的话可以考虑切换,本次介绍的相关界面均是在英文版的状态下截取。

本次java使用1.8版本Jmeter使用的版本是5.1.1. r1855137,不同的版本支持的组件上会略有差异。根据使用需要来安装所需的模块。
Jmeter官网下载链接地址:https://jmeter.apache.org/download_jmeter.cgi

TestPlan:

测试计划,类似开发工具中的Workspace; 支持添加一些自定义的User Defined Variables配置属性和添加一下jar到运行的ClassPath

Thread Group:

线程组,类似开发工具中的Project; 很多其他的元素必须在这个组件下才可以使用。它作为控制测试计划线程信息、执行时间等信息的结构。
当前Thread Group 可以支持设置运行线程数、循环次数、并且可以设置运行时间等等。

Test Fragment:

公共组件模块,该模块本身比较简单不支持独立运行,需要配合Module Controller来实现复用某些基础模块(比如登陆鉴权)。该模块的存在位置只能是Test Plan 的次一级,无法在其他的Controller结构中存在。

Module Controller:

Controller在Jmeter中是用于控制测试计划层级的模块,类似于java代码中的project、module、package等等概念。当前Controller可以自动识别Test Plan 中所有的Controller结构,并展示精简视图,可以挑选其中一个进行执行。这个东西比较秀,类似于Java中的调用方法,可以实现脚本的复用。选中哪一块,当前脚本就执行的哪一块。选中的部分颜色显示不一样。

Transaction Controller:

Controller在Jmeter中是用于控制测试计划层级的模块,类似于java代码中的project、module、package等等概念。当前Controller可以实现针对结果树展示的测试结果详情的树型结构控制,以模块的形式展示测试结果。

在勾选Generate parent sample 的情况下可以让结果树展示如下的层级效果
在这里插入图片描述

勾选Include duration of timer and pre-post processors in generated sample的情况下会讲整体用例的耗时中增加定时器、前置处理器(Pre Processors)和后置处理器(Post Processors)处理所需的部分。会比程序实际消耗的时间长。

If Controller:

Controller在Jmeter中是用于控制测试计划层级的模块,类似于java代码中的project、module、package等等概念。当前Controller用于控制在满足特定条件的时候才执行该Controller下的相关脚本内容。

关于函数使用部分,工具本身提供了快捷生成的工具。根据需要选择相应的函数来通过generate功能自动生成。


User Defined Variables:

用户自定义配置属性设置的模块,方便做一些配置信息的设置

CSV Data Set Config:

从Excel中读取信息的相关组件,多线程模式下,支持每个线程读取不同的行,循环进行信息读取。这个特性在压测场景下可以有比较好的运用。
重要属性详细介绍:

  • Variable Names 配置读取属性的名称,支持配置对个,按照顺序以此填写属性名称,中间用逗号分隔
  • Ignore fisrt line 是否跳过第一行,默认False(当excel表格存在标题时可以设置成True)

JDBC Connection Configuration:

数据库连接池配置,和Java代码中的连接池效果类似,有一点比较好的也可以说事不太好的,就是密码部分信息是加密显示的。如果直接配置具体信息不使用引用,相对安全性较高,但是配置的繁碎程序增加,每增加一个环境需要增加一个配置。
在这里插入图片描述

JDBC Request:

数据库操作的请求,增删改查类型的请求均可以使用该组件。结构上非常像Java的xxxMapper.xml。这个结构分为大类用法:

不带Prepared类型

如下图所示,直接拼装完整的sql到填写sql的区域,这种方式在安全性上存在一定的隐患,因为不校验语句中的引用部分${}的实际内容,可能会存在sql注入的风险。但是自己测试用的时候可以控制好。
在这里插入图片描述

带Prepared类型

如下图所示,直接拼装完整的sql到填写sql的区域,这种方式在安全性上存在一定的隐患,因为不校验语句中的引用部分${}的实际内容,可能会存在sql注入的风险。但是自己测试用的时候可以控制好。
在这里插入图片描述

关于Variable names和Result variable names,直接通过Debug PostProcesor效果查看结果效果就知道改如何使用。

  • 获取某个列表查询的list长度,选择某一个必定返回的结果的属性,以patId为例,${patId_#}可以表示本次sql查询的列表长度
  • 获取返回结果中一条制定的
    • 下标固定的情况${patId_0}
    • 下标为引用值KaTeX parse error: Expected group after '_' at position 2: {_̲_V(patId_{numSrcType3SchIndex},1)} **${numSrcType3SchIndex}**这个本身就是一个取值函数,预期取到一个Integer类型的值
      在这里插入图片描述
      在这里插入图片描述

Http Request Default:

用于配置http请求的默认信息,比如ip、端口、Protocol等,这样就不需要在没一个Http Request中都重复配置,减少配置工作量。类似于Java父子类的使用效果,父(Http Request Default)子(Http Request),子类可以从父类中继承一些配置信息,也可以覆盖父类中的一些配置信息。

Http Header Manager:

Http请求Header信息管理器,用于设置Http Request 所需的Header信息

Http Request:

具体Http请求的配置类,按照需要使用相关的工功能。本次介绍脚本中仅针对基础的POST请求方式做使用。
在这里插入图片描述

Constant Timer:

定时休眠组建,效果上等价于Java的Thread.sleep()

Debug PostProcessor:

开启全局的调试,只要在某个位置放置了该元素,在这之后所有执行的步骤在结果树中都可以查看执行当时的完整的配置属性信息,信息分为如下几种:

  • Jmeter propertiers Jmeter本身的配置参数(线程数、Jmeter版本信息、配置文件路径等)
  • Jmeter variables Jmeter中各类User Defined Variables中配置的属性
  • Sample Properties 某个脚本执行时的一些临时参数,类似于java Method中的一些临时变量
  • System properties 设置系统参数(编码信息、Classpath、Java Home等)

BeanShell Sampler:

编写Java混合代码的组件,是一个轻量级Java脚本语言(Lightweight Scripting for Java),当前官方建议使用groovy。可以根据需要来挑选使用。官网详细介绍:https://beanshell.github.io/

BeanShell Assertion:

编写Java混合代码的组件,语法上和BeanShell Sampler一样,区别点就是这边可以设置Failure和FailureMessage来控制某个接口执行后断言判断结果。
在这里插入图片描述

JSON Extractor:

从接口返回结果中(Json格式)提取某些特定属性值的组件,具体JSON Path expressions可以在结果树中挑选Json形式试图时测试。支持一个组件获取多个属性,中间用逗号分隔,属性名称和提取的表达式要一一对应。

在这里插入图片描述

View Result Tree:

树型结构的结果试图,用于查看接口测试的详细的返回结果信息,配合Transation Controller 使用可以让结果试图程结构化的树型结构,可以比较清楚的了解目前执行的接口模块哪些块存在问题。
在这里插入图片描述

View Result in Table:

以Table形式展示结果树,这个可以比较直观的看到每一个接口开始运行的时间。一般用于看一些宏观层面的信息,不便于看详细的信息。详细信息还是建议查看结果树。另外,Child samples这个可以控制运行结果查看的目录层级,默认不勾选,只会看到最上一层的返回结果树,勾选了就可以看到子级用例的情况。

在这里插入图片描述

Summary Report:

聚合报告组件,用于展示目前接口的相关统计信息包含:取样数量,请求耗时、耗时中位数、耗时最大/小时间、成功请求的通过率、吞吐量、接口返回的数据量等等
在这里插入图片描述

jp@gc - Transactions per Second:

jp@gc系列监控组件, 监听动态TPS,用来分析吞吐量。

在这里插入图片描述

jp@gc - Hits per Second:

jp@gc系列监控组件, 此图将显示测试计划每秒向服务器生成的点击数。Hits从事务和嵌入资源Hits中取消获取子样本。

jp@gc - Transaction Throughput vs Threads:

jp@gc系列监控组件, 监听随着线程数增长系统吞吐量变化的状况。
在这里插入图片描述

jp@gc - Stepping Thread Group:

官方介绍文档链接:
https://jmeter-plugins.org/wiki/SteppingThreadGroup/?utm_source=jmeter&utm_medium=helplink&utm_campaign=SteppingThreadGroup

同样作为一款线程控制组件,对比默认的Thread Group,它的功能更强大一点,可以实现比较灵活的线程数,运行时间等等的控制,同时还能配合其他的jp@gc监控组件使用。

目前配套的jp@gc系列监控组件有很多,有需要的可以自行研究下

Jmeter其他使用介绍

备注:目前选择加载哪个环境的参数通过Module Controller 来实现控制,需要切换环境情自行切换选择,其余信息可以不做改动直接执行。

开启/禁用 某一个模块

选中脚本的某一部分,点击这个按钮或者使用快捷键Ctrl+T触发,可以修改某个部分脚本的启用状态,灰色效果的就是当前警用的部分。

在这里插入图片描述

运行/终止脚本运行


在空TestPlan的情况下可以快捷的按照预设模板生成一些测试脚本,可以用于了解一些其他的附属功能。

查看运行日志

点击右上角的图标来切换打开/关闭日志信息查看窗口,调试日志配合开启Debug功能可以很好的支撑调试所需。
在这里插入图片描述

使用预设模板

在空TestPlan的情况下可以快捷的按照预设模板生成一些测试脚本,可以用于了解一些其他的附属功能。

<think>好的,用户想了解JMeter的常用组件及其功能和使用说明。首先,我需要根据用户提供的引用内容来整理相关信息。用户给的引用内容中提到了线程组、断言组件、作用范围和应用变量等,这些都是JMeter的核心组件。 首先,线程组(Thread Group)是必须的,因为任何测试计划都需要它来定义用户数量和测试行为。引用[1]和[2]都提到了线程组的功能,比如设置线程数、循环次数和启动延迟。这部分需要详细说明,包括不同线程组的类型,比如普通线程组和特殊线程组,以及它们的使用场景。 然后是断言组件,引用[1]提到了主流断言组件,但具体有哪些呢?可能需要补充常见的断言类型,比如响应断言、大小断言、持续时间断言等,并解释它们的作用和使用方法。同时,引用[4]提到了断言的作用范围,比如主样本、子样本等,这部分需要结合到断言组件的说明中。 接下来是配置元件,比如HTTP请求默认值,这在引用中虽然没有直接提到,但根据JMeter的常用组件,配置元件也是重要的部分,用来统一管理请求的默认设置,减少重复配置。 监听器组件用于查看测试结果,比如查看结果树和聚合报告,这也是用户需要知道的部分,需要解释它们的功能和如何帮助分析测试数据。 另外,引用[3]提到JMeter最初用于Web应用测试,但已扩展到其他功能,所以可能需要提到JMeter支持的各种测试类型,比如HTTP、FTP、JDBC等,但用户的问题更关注常用组件,所以这部分可以简要带过。 在整理过程中,需要确保每个组件介绍都包含功能描述、配置参数和使用场景,并正确引用提供的参考资料。例如,线程组的线程数设置引用[2],断言的作用范围引用[4]等。同时,要检查是否有遗漏的重要组件,比如定时器、前置处理器、后置处理器等,但根据用户提供的引用,可能主要关注线程组、断言、配置元件和监听器。 最后,生成相关问题时,要围绕用户可能进一步询问的方向,比如如何配置线程组参数、断言的类型和使用方法、测试结果分析工具等,确保问题能够帮助用户深入理解JMeter的使用。</think>### JMeter常用组件功能介绍及使用说明 --- #### 一、线程组(Thread Group) **功能**: 线程组是测试计划的起点,用于模拟用户并发行为。通过设置线程数、循环次数和启动延迟,控制负载规模。例如,设置线程数为100时,JMeter会模拟100个用户向服务器发送请求[^2]。 **类型**: 1. **普通线程组**:默认类型,支持设置线程数、循环次数、启动时间等参数。 2. **特殊线程组**(如`Ultimate Thread Group`):支持更复杂的并发模型,例如分阶段递增用户数。 **配置参数**: - **线程数**:模拟的虚拟用户数。 - **Ramp-Up时间**:所有线程启动完成所需时间(秒)。例如,线程数=100且Ramp-Up=10,表示每秒启动10个线程。 - **循环次数**:单个线程执行测试计划的次数。 --- #### 二、断言组件(Assertions) **功能**: 验证服务器响应是否符合预期,例如状态码、响应内容或响应时间。 **常见断言类型**: 1. **响应断言**:检查响应文本中是否包含指定字符串或正则表达式。 2. **大小断言**:验证响应数据的大小是否符合范围。 3. **持续时间断言**:判断请求响应时间是否超过阈值。 **作用范围**: - **主样本(Main sample)**:仅检查主请求的响应。 - **子样本(Sub-samples)**:检查嵌套请求(如页面中的图片加载)的响应[^4]。 --- #### 三、配置元件(Config Elements) **功能**: 为请求提供默认配置,减少重复设置。 **常用元件**: 1. **HTTP请求默认值**:统一设置协议、域名、端口等HTTP请求参数。 2. **CSV Data Set Config**:从CSV文件中读取参数,实现数据驱动测试。 **示例**: ```java // 配置HTTP请求默认值 协议: https 服务器名称: api.example.com 端口: 443 ``` --- #### 四、监听器(Listeners) **功能**: 收集并展示测试结果,如响应时间、吞吐量、错误率等。 **常用监听器**: 1. **查看结果树**:显示每个请求的详细响应数据,用于调试。 2. **聚合报告**:统计所有请求的平均响应时间、TPS(每秒事务数)等[^1]。 **使用技巧**: - 在高并发测试中,避免启用过多监听器以减少资源消耗。 --- #### 五、其他核心组件 1. **定时器(Timers)**:控制请求发送频率,如固定定时器(Fixed Timer)模拟用户思考时间。 2. **前置处理器(Pre Processors)**:在请求前执行操作,例如生成动态参数。 3. **后置处理器(Post Processors)**:从响应中提取数据,如正则表达式提取器。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值