性能测试工具 - JMeter工具组件介绍二

文章目录

  • [1. JMeter定时器](#1. JMeter定时器)
    • [Constant Timer - 固定定时器](#Constant Timer - 固定定时器)
    • [Gaussian Random Timer - 高斯随机定时器](#Gaussian Random Timer - 高斯随机定时器)
    • [Constant Throughput Timer - 吞吐量定时器](#Constant Throughput Timer - 吞吐量定时器)
    • [Synchronizing Timer -并发定时器](#Synchronizing Timer -并发定时器)
  • [断言原件 - Assertion](#断言原件 - Assertion)
    • [Response Assertion-响应断言](#Response Assertion-响应断言)
    • [Size Assertion-大小断言](#Size Assertion-大小断言)
    • [XPath Assertion-XPath 断言](#XPath Assertion-XPath 断言)
    • [JSON Assertion-Json 断言](#JSON Assertion-Json 断言)
  • [常用配置元件剖析-Configuration Elements](#常用配置元件剖析-Configuration Elements)
    • [HTTP Header Manager-HTTP 头管理器:](#HTTP Header Manager-HTTP 头管理器:)
    • [HTTP Cookie Manager-HTTP Cookie 管理器】](#HTTP Cookie Manager-HTTP Cookie 管理器】)
    • [HTTP Cache Manager-HTTP 缓存管理器](#HTTP Cache Manager-HTTP 缓存管理器)
    • [CSV Data Set Config - CSV 数据集配置元件](#CSV Data Set Config - CSV 数据集配置元件)
  • [Pre Processors - 前置处理器](#Pre Processors - 前置处理器)
    • [Sample Timeout - 等待响应超时](#Sample Timeout - 等待响应超时)
    • [BeanShell PreProcessor - 自定义前置处理器](#BeanShell PreProcessor - 自定义前置处理器)
  • Post-Processor-后置处理器
    • [JSON Extractor - JSON后置处理器](#JSON Extractor - JSON后置处理器)
    • [Regular Expression Extractor-正则表达式提取器](#Regular Expression Extractor-正则表达式提取器)
    • [XPath Extractor-XPath 提取器](#XPath Extractor-XPath 提取器)
  • JMeter八大组件执行顺序
  • [虚拟用户管理 - 用户组](#虚拟用户管理 - 用户组)
    • [setUp Thread Group](#setUp Thread Group)
    • [Thread Group](#Thread Group)
    • [tearDown Thread Group](#tearDown Thread Group)
  • 总结

✨✨✨学习的道路很枯燥,希望我们能并肩走下来!

编程真是一件很奇妙的东西。你只是浅尝辄止,那么只会觉得枯燥乏味,像对待任务似的应付它。但你如果深入探索,就会发现其中的奇妙,了解许多所不知道的原理。知识的力量让你沉醉,甘愿深陷其中并发现宝藏。



本文开始

1. JMeter定时器

定时器:是 Apache JMeter 工具中的一种元件,用于模拟用户行为中的时间间隔。

定时器作用:是在每个 sampler 之前执行的,在执行测试脚本时模拟用户请求之间的延迟或等待时间,以更真实地模拟用户在实际场景中的行为。

Constant Timer - 固定定时器

Constant Timer:是 Apache JMeter 中的一种定时器元件,用于向测试计划中的每个请求添加固定的等待时间。

作用:可以模拟用户在执行测试脚本时之间的固定延迟或等待时间,使得用户请求之间的时间间隔具有一致的固定间隔。

参数说明:Thread Delay (in milliseconds):线程延迟时间,单位是毫秒

Gaussian Random Timer - 高斯随机定时器

Gaussian Random Timer:是一个在性能测试工具 Apache JMeter 中常用的定时器组件之一。

作用是在测试计划中插入随机时间延迟,模拟真实的用户行为,使得负载更加真实和多样化。

参数说明:

Deviation (in milliseconds):偏差时间,单位是毫秒。

Constant Delay offset (in milliseconds):固定延迟偏移时间,单位是毫秒。

如下图:随机延迟时间一般范围为:[200,400];范围是估计值可能小于200或大于400;

Constant Throughput Timer - 吞吐量定时器

Constant Throughput Timer:是 Apache JMeter 中的一个定时器组件,它用于控制负载测试中的吞吐量。

作用:通过控制每个请求之间的时间间隔,以达到一定的吞吐量目标。这使得在负载测试中可以保持稳定的请求速率,从而更好地模拟实际用户的行为并进行性能评估。

场景:需要精准的控制流量时使用;

参数说明:

  • Target throughput (in samples per minute):目标吞吐量(每分钟的样本量),也就是每分钟的吞吐量。
    【注】单位是以分钟计算;
  • Calculate Throughput based on:基于计算吞吐量配置,配置哪些线程进行目标吞吐量控制;
    • 1.只有此线程(this thread only):控制每个线程的吞吐量,选择这种模式时,总的吞吐量为设置的 target Throughput 乘以该线程的数量。
      2.所有活动线程(all active threads ):设置的 target Throughput 将分配在每个活跃线程上,每个活跃线程在上一次运行结束后等待合理的时间后再次运行。活跃线程指同一时刻同时运行的线程。
      3.当前线程组中的所有活动线程(all active threads in current thread group):设置 target Throughput 将分配在当前线程组的每一个跃线程上,当测试计划中只有一个线程组时,该选项与 all active threads 选项的效果完全相同。
      4.所有活动线程(共享)(all avtive threads(shared)):与 all active threads 的选项基 相同。唯一区别是,每个活跃线程都会在所有活跃线上一次运行结束后等待合理的时间后再次运行。
      5.当前线程组中的所有活动线程(共享)(all active threads in current thread group (shared)):与 all active threads in current thread group 基本相同,唯一的区别是 每个活跃线程都会在所有活跃线程的上一次运行结束等待合理的时间后再次运行。
      注意:一般选择所有活动线程(all active threads)。

Synchronizing Timer -并发定时器

Synchronizing Timer:是 Apache JMeter 中的一个定时器组件,用于确保并发用户在测试中同时执行某个操作。

作用:在负载测试中,有时需要模拟多个用户在同一时间点执行某个操作,这时可以使用 Synchronizing Timer 来实现同步。

参数说明:

  • 模拟用户组的数量(Number of Simulated Users to Group by):每次释放的线程数量,即并发数。默认为 0,设置为 0 则并发数等于线程租中的线程数;设置大于 0 则等待达到这个数量再并发执行。
  • 超过时间以毫秒为单位(Timeout in milliseconds):默认为 0,如果设置为 0,该定时器将会等待线程数达到了"模拟用户组的数量"中设置的值才释放;设置大于 0,超过设置的时间但是没达到"模拟用户组的数量"的线程数,将不再等待,释放当前的线程数。
    注意:如果上面两个参数都设置了值,则是哪个条件先达到,定时器先执行哪个。

断言原件 - Assertion

断言元件:用于验证测试结果是否符合预期。

作用:断言元件可以检查服务器的响应数据,以确保它们符合期望的模式或值,从而验证性能测试脚本的正确性。断言元件通常在每个请求的响应中添加,以确保服务器返回了正确的响应。

Response Assertion-响应断言

Response Assertion: 用于检查服务器响应的内容是否符合预期

作用:可以基于响应的内容、代码、消息或其他属性进行断言。可以根据响应文本、响应代码、响应消息和其他参数来定义断言条件,并指定断言模式(包含、匹配、不包含等)。

1.Apple to - 默认

2.Field to Test-测试字段:需要检查的项

Document(text): 响应的整个文栏

Ignore Status-忽略状态:忽略返回的响应状态码

3.Pattern Matching Rules-模式匹配规则:比较方式(校验规则)

contains(包括):文本包含指定的正则表达式

Matches(匹配):整个文本匹配指定的正则表达式

Equals(等于):整个返回结果的文本等于指定的字符串(区分大小写)

substring:返回结果的文本包含指定字符串(区分大小写)

否: 取反

或者:如果存在多个测试模式,勾选代表逻辑或(只要有一个模式匹配,则断言就是 ok),不勾选代表逻辑与(所有都必须匹配,断言才是 ok)

4.测试模式:预期结果,填写指定的预期结果(可填写多个);

Size Assertion-大小断言

Size Assertion : 是一种断言元件,用于验证服务器响应的内容的大小是否符合预期。

作用:Size Assertion 允许您检查返回的响应数据的大小是否在指定的范围内,以便在性能测试中验证响应的大小是否符合要求。

场景:当知道响应的估计大小,可以让size作为一个断言判断;

参数说明:

1.Response Size Field to Test:

Full Response:完整响应

2.Size to Assert:

size in bytes(字节大小):设置要判断的数值,单位 bytes/kb

Type of Comparison(比较类型)

XPath Assertion-XPath 断言

XPath Assertion : 是 JMeter 中的一种断言元件,用于验证 XML 或 HTML 响应的内容是否符合指定的 XPath 表达式。

作用:XPath 是一种用于在 XML 文档中定位和选择元素的语言,通过 XPath Assertion,可以使用 XPath 表达式来验证响应中的特定内容,例如检查特定元素、属性或文本是否存在或符合条件。

参数说明:

  • XML Parsing Options (XML 解析选项)
    1.Use Tidy:当需要处理的页面是 HTML 格式时,必须选中该选项;如果是 XML 或 XHTML 格式(例如 RSS 返回),则取消选中,默认是 quiet;
    2.Quiet 表示只显示需要的 HTML 页面,
    3.Report errors 表示显示响应报错,
    4.Show warnings 表示显示警告;
    5.Use Namespaces:如果启用该选项,后续的 XML 解析器将使用命名空间来分辨;
    6.Validate XML:根据页面元素模式进行检查解析;
    7.Ignore Whitespace:忽略空白内容;
    8.Fetch external DTDs:如果选中该项,外部将使用 DTD 规则来获取页面内容。引用名称:下一个请求要引用的参数名称,如填写 title,则可用${ var_regexp2}引用它。 (一些 XML 元素具有属性,属性包含应用程序使用的信息,属性仅在程序对元素进行读、写操作时,提供元素的额外信息,这时候需要在 DTDs 中声明)
  1. Xpath Assertion 用于填写 xpath 表达式,点击 Validate 验证其正确性,勾选 True if nothing matches 表示确认都不匹配,才会断言验证通过

JSON Assertion-Json 断言

JSON Assertion :是 JMeter 中的一种断言元件,用于验证 JSON 格式的响应数据是否符合预期。

作用:在进行 API 接口性能测试时,通常会返回 JSON 格式的响应数据,通过 JSON Assertion,可以根据预定义的 JSON 断言规则来验证返回的 JSON 数据是否正确。

参数说明:

Assert JSON Path exists: 用于断言的 JSON 元素的路径(实际结果)-使用Json语法获取想要的值

Additionally assert value: 如果想要用某个值生成断言,请选择复选框。

Match as regular expression 使用正则表达式断言。

Expected Value: 期望值 (期望结果)

Expect null: 如果希望为空,请选择复选框。

Invert assertion (will fail if above conditions met): 反转断言(如果满足以上条件则失败)

常用配置元件剖析-Configuration Elements

配置元件:用于管理和设置测试计划的配置信息。它们可以帮助配置参数、变量、请求头信息等,并在整个测试计划中共享这些配置信息。

HTTP Header Manager-HTTP 头管理器:

  • HTTP Header Manager: 用于设置 HTTP 请求的头部信息
    如: User-Agent、Content-Type 等。通过在配置元件中设置头部信息,可以模拟具有不同头部信息的请求,并更好地测试服务器的响应。
  • HTTP Cookie Manager :用于管理 HTTP 请求中的 Cookie 信息,以便维护会话状态。
  • 作用:在测试中,保持正确的会话状态对于模拟真实用户的行为至关重要。通过启用 HTTP Cookie Manager,JMeter 可以自动处理来自服务器的 Cookie,并在后续请求中使用相同的 Cookie 信息,确保会话一致性。

HTTP Cache Manager-HTTP 缓存管理器

  • HTTP Cache Manager :帮助管理 HTTP 请求的缓存信息,以模拟浏览器缓存行为。
  • 作用:在一些测试场景中,缓存可以显著提高性能并减少服务器负载,因此正确地管理缓存信息很重要。
    通过配置 HTTP Cache Manager,可以控制是否启用缓存以及设置缓存的具体属性,以确保测试中的请求响应符合预期。

CSV Data Set Config - CSV 数据集配置元件

  • CSV Data Set Config :用于从 CSV 文件中读取数据,并将数据应用到测试中的请求中。通过使用 CSV 文件,可以轻松管理和引用大量数据,例如用户凭证、产品信息等。
  • 在配置 CSV Data Set Config 时,可以指定文件路径、字段分隔符、循环次数等参数,以便动态地为测试请求提供不同的数据。

Pre Processors - 前置处理器

Pre Processors:是一种配置元件,用于在每个 Sampler(采样器)执行之前对请求进行处理。

作用:前置处理器允许在发送请求之前对请求参数进行修改、添加额外的逻辑验证或其他操作,以确保请求能够正确执行并生成需要的测试数据

Sample Timeout - 等待响应超时

在 JMeter 中,Sample Timeout 是一个针对每个 Sampler(采样器)的设置,用于定义在等待响应时允许的最大超时时间。

作用:如果超过了设置的 Sample Timeout 时间,JMeter 将放弃该请求,并将其标记为超时。这个设置可以帮助在进行性能测试时控制请求的最大响应时间,并识别潜在的性能问题。

参数:Sample timeout (in milliseconds) :采样超时时间,单位是毫秒。

BeanShell PreProcessor - 自定义前置处理器

BeanShell PreProcessor: 是一种前置处理器,可以使用 BeanShell 脚本语言编写逻辑,用于在执行每个 Sampler(采样器)之前进行自定义处理操作。

作用:BeanShell PreProcessor 允许用户编写灵活的代码来操作请求参数、处理数据或执行其他任何自定义操作,以满足特定的测试需求。

常用参数说明:

  • Script file:包含要运行的 BeanShell 脚本的文件,文件名存储在变量 FileName 中,添加了脚本文件后,就只会运行添加的脚本文件,Script 部分的脚本代码不会运行了。
  • Script:要运行的 BeanShell 脚本,返回值如果不为 null,就存储为采样器结果。

Post-Processor-后置处理器

后置处理器:用于在执行 Sampler(采样器)后对响应数据进行处理。

作用:后置处理器可以从 Sampler 的响应中提取信息、对数据进行解析或者执行其他定制化操作。后置处理器通常用于从响应数据中提取特定的信息,并将其存储为变量用于后续的请求或脚本逻辑。

JSON Extractor - JSON后置处理器

JSON Extractor :是 JMeter 中的一种后置处理器,用于从 JSON 格式的响应数据中提取特定的值。

作用:当发送一个请求并收到一个 JSON 格式的响应时,可以使用 JSON Extractor 来提取其中的数据,并将其存储为 JMeter 变量,以便在后续的请求中使用。

参数说明:

1.names of created Variable :设置变量名。后面使用 { 变量名 }引用,如: {code}

2.JSON Path expressions:设置的提取json path 表达式, 根据接口返回的 json 数据格式去定义,如:$.udf2。

3.Match No.(0 for Random):匹配数字(0 代表随机,1 代表第一个,-1 代表所有);-可能会获取多个值,这可以手动指定;

4.Compute concatenation var(suffix_ALL):是否统计所有,即将匹配到的所有值保存,名为"变量名_ALL",使用场景需要获取的值有多个,后面需要对这一组数据进行操作。

Default Values:找不到时默认值,一般设置为 NOT FOUND

Regular Expression Extractor-正则表达式提取器

正则表达式提取器:是 JMeter 中一种常用的后置处理器,用于从响应数据中提取特定模式的信息。通过使用正则表达式,可以方便地从文本数据中提取所需的内容,如从 HTML、XML、JSON 或普通文本中提取特定信息。

参数说明:

1.引用名称(Name of created variable):请求要引用的变量名称,如填写 result_num。

2.正则表达式(Regular Expression):业务对应的正则表达式。

3.模板(Template):对应正则表达式的组号,从 1 开始;比如: 1 表示取 id 的值, 2 表示取 name 的值,也就是对应到表达式中的第几个括号

4.匹配数字(0 代表随机)(Match No. (0 for Random):0 代表随机取值,n 取第几个匹配值,-1 匹配所有;

比如:取 1 表示报文中的第 1 个对象匹配,取 2 表示报文中的第 2 个对象匹配。

5.缺省值(Default Value):如果参数没有取得到值,那默认给一个值。

XPath Extractor-XPath 提取器

XPath Extractor:是 JMeter 中的一种后置处理器,用于从 XML 或 HTML 类型的响应数据中提取特定内容。

XPath 是一种用于在 XML 或 HTML 文档中导航和选择节点的语言,XPath 提取器允许使用 XPath 表达式来确定需要提取的数据位置,并将其存储为 JMeter 变量以供后续请求使用。

参数说明:

1.引用名称(Name of created variables):请求要引用的变量名称,如填写 result_num。

2.XPath query:用于提取值的 XPath 表达式。

3.匹配数字(0 代表随机)(Match No. (0 for Random)):0 代表随机取值,n 取第几个匹配值,-1 匹配所有;

比如:取 1 表示报文中的第 1 个对象匹配,取 2 表示报文中的第 2 个对象匹配。

4.缺省值(Default Value):如果参数没有取得到值,那默认给一个值。

JMeter八大组件执行顺序

八大组件:线程组 ,配置元件,前置处理器,定时器,取样器,后置处理器

,断言,监听器

同一作用域:执行顺序是从下到上,从左到右

配置元件 -> 前置处理器 -> 定时器 -> 取样器 -> 后置处理器 -> 断言 -> 监听器

虚拟用户管理 - 用户组

虚拟用户组管理:是指在性能测试中模拟和管理多个虚拟用户的过程。在性能测试中,虚拟用户是指由性能测试工具模拟的并发访问系统的用户,用于模拟实际用户对系统的请求和行为

setUp Thread Group

作用:setUp Thread Group 是 JMeter 中的一个特殊元素,它主要用于在测试执行之前进行初始化设置。setUp Thread Group 允许在执行测试计划之前执行一组请求或操作,例如准备测试环境、加载数据或执行其他设置操作。

适用场景:适用于需要在执行主要测试计划之前进行特定设置或准备工作的情况。通常与 Thread Group 结合使用,确保在主要测试执行之前执行必要的初始化操作。

Thread Group

作用:Thread Group 是 JMeter 中的核心元素之一,用于定义并控制线程(虚拟用户)的执行方式和数量,以模拟并发用户访问系统的行为。

适用场景:适用于创建测试场景、设置并发用户数量、循环次数等,用于模拟用户在系统中的行为。大多数 JMeter 测试计划都会包含一个或多个 Thread Group。

tearDown Thread Group

作用:tearDown Thread Group 也是 JMeter 中的一个特殊元素,用于在测试执行结束后进行清理工作或收尾操作。tearDown Thread Group 允许在整个测试计划执行完成后执行一组请求或操作,例如关闭资源、清理数据或执行其他收尾工作。

适用场景:适用于需要在整个测试计划执行完成后进行清理或收尾工作的情况。通常用于执行最终性的操作,确保测试执行完成后系统处于正确状态。


总结

✨✨✨各位读友,本篇分享到内容是否更好的帮助你理解,如果对你有帮助给个👍赞鼓励一下吧!!
🎉🎉🎉世上没有绝望的处境,只有对处境绝望的人。
🎉🎉🎉一遇挫折就灰心丧气的人,永远是个失败者。而一向努力奋斗,坚韧不拔的人会走向成功。
感谢每一位一起走到这的伙伴,我们可以一起交流进步!!!一起加油吧!!!

相关推荐
朝阳5812 小时前
Ubuntu 22.04 安装 Fcitx5 中文输入法完整指南
linux·运维·ubuntu
开开心心就好2 小时前
图片格式转换工具,右键菜单一键转换简化
linux·运维·服务器·python·django·pdf·1024程序员节
永远在Debug的小殿下2 小时前
wsl安装Ubuntu and ROS2
linux·运维·ubuntu
❀͜͡傀儡师2 小时前
docker一键部署HFish蜜罐
运维·docker·容器
GEO科技2 小时前
人工智能时代,中华文化如何构建“算法主权”与认知体系?湄洲岛与氧气科技共同探索妈祖文化“非遗+AI”传播新路径
经验分享
dnpao2 小时前
linux onlyoffice服务向docker容器中添加中文字体
linux·运维·docker
LaughingZhu2 小时前
Product Hunt 每日热榜 | 2026-01-12
人工智能·经验分享·深度学习·神经网络·产品运营
AOwhisky3 小时前
Linux防火墙管理指南
linux·运维·服务器
白玉瑕3 小时前
服务器存储基础
运维·服务器