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

文章目录

  • [1.JMeter 介绍](#1.JMeter 介绍)
  • [2. JMeter界面功能介绍:](#2. JMeter界面功能介绍:)
    • [测试计划:Test Plan](#测试计划:Test Plan)
    • [线程组 - Thread Group](#线程组 - Thread Group)
    • 控制器-Controller
      • [Transaction Controller -事务控制器](#Transaction Controller -事务控制器)
      • [If Controller -条件控制器](#If Controller -条件控制器)
      • [循环控制器 -Loop Controller](#循环控制器 -Loop Controller)
      • [随机控制器 - Random Controller](#随机控制器 - Random Controller)
    • [采样器 -Sampler](#采样器 -Sampler)
      • [HTTP Request Sampler-Http请求采样器](#HTTP Request Sampler-Http请求采样器)
      • [Debug Sampler -调试取样器](#Debug Sampler -调试取样器)
      • [BeanShell Sampler](#BeanShell Sampler)
    • [监听器 - Listener](#监听器 - Listener)
      • [View Results Tree](#View Results Tree)
      • [Aggregate Report-聚合报告](#Aggregate Report-聚合报告)
      • [Backend Listener-后端监听器](#Backend Listener-后端监听器)
  • 总结

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

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



本文开始

1.JMeter 介绍

Apache JMeter 是一个开源的 Java 应用程序,用于进行性能测试和负载测试。

它可以模拟多种协议的负载,被广泛用于测试 Web 应用程序、Web 服务、数据库和其他网络服务的性能。

JMeter作用:

1.Apache 组织开发的开源免费压测工具

2.纯Java 程序,跨平台性强

3.源程序可以从网上下载

4.高可扩展性: 支持插件和扩展

5.可对服务器、网络或对象模拟巨大的负载,进行压力测试

  1. 可以用于接口测试_

7.支持分布式、多节点部署

JMeter安装方式:

官网:https://jmeter.apache.org/

操作过程:

官网下载对应版本的JMeter工具下载 → 直接解压到本地文件夹 →配置JMeter中的bin目录到环境变量中→ bin录制下的jmeter.sh文化或jmeter.bat文件,点击运行即可

【注】前提:本地有Java环境-有JDK

配置环境变量-win上直接终端输入jmeter打开

2. JMeter界面功能介绍:

1.常规菜单功能

  • File(文件):主要是新建、打开和保存文件。
  • Edit(编辑):主要是添加元件、保存、打开、禁用等。
  • Search(查找):查找和清除查找。
  • Run(运行):主要是运行,分布式运行。可以实现压测运行相关:开始运行、停止运行、远程运行、停止远程运行等
  • Options(选项):可以设定界面大小、外观主题、配置语言等
  • Help(帮助):可以点击帮助,查看 JMeter 帮助文档
  1. 主要是一些运行、保存、模板、新建等功能按键。
  2. JMeter 的目录,是用来存放 JMeter 测试项目的项目栏。
  3. 类似于测试项目的信息填写区域,例如进行 HTTP 测试时,需要填写请求头、请求信息、参数等等,都是在这个界面完成的

测试计划:Test Plan

测试计划:用来描述一个压力/性能测试脚本和场景设计的基本运行单元,使用 JMeter 进行测试的所有内容都是基于一个测试计划;

第一部分:测试计划的名称和注释,可以修改测试计划的名称,并加上对应的注释描述内容。

第二部分:用户定义的变量,在之后的测试脚本中可以使用。

第三部分:对测试计划的设置, 从上到下的设置为:

  • 独立运行每个线程组。
    • 不勾选:各个线程组并行、随机执行。
      勾选:线程组按照前后顺序来执行。
  • 主线程组运行完成之后运行 tearDown 线程组。
  • 函数测试模式,比如保存响应数据或者样本数据,需要注意的是选择该功能非常占用磁盘空间。
  • 添加文件或者 jar 包,常用于外部功能调用。

线程组 - Thread Group

线程组:线程组元件是任何一个测试计划的开始点,在一个测试计划中的所有元件都必须在某个线程组下,所有的任务都是基于线程组。

1.在请求取样器执行错误时需要执行的下一步动作选型配置:

  • Continue(继续):继续执行接下来的请求操作。
  • Start Next Loop(启动下一进程循环):忽略错误,执行下一个循环。
  • Stop Thread(停止线程):退出该线程(不再进行此线程的任何操作)。
  • Stop Test(停止测试):等待当前执行的采样器结束后,结束整个测试。
  • Stop Test Now(立即停止测试):直接停止整个测试。

2. 配置线程属性

  • Number of Thread (users):线程数,模拟的用户数量。
  • Ramp-up Period(seconds):达到指定线程数所需要的时间。
    举例:线程数设置为 50,此处设置为 5,那么每秒启动的线程数 -> 线程数 50/5 = 10, 这里只是大概估算,不是精确数值;
  • Loop Count:循环次数。Infinite 为永远,勾选之后就会一直循环。
  • Same user on each iteration:每次迭代都用相同的用户
    • 勾选该选项则不同次迭代之间是串行执行,不勾选则为并行执行。
  • Delay Thread creation until needed:当线程需要执行的时候,才会被创建。如果不勾选这个选项,在计划开始的时候,所有需要的线程就都被创建好了。
  • Specify Thread lifetime:定义线程调度时间。勾选之后,即可设置之后的两个属性:
    • Duration (seconds): 持续时间(秒), 在此选项填入 N,说明这个计划,从某个开始时间算起,执行 N 秒后结束。(会忽略 结束时间 的选项)。使用这个选项时,循环次数可以勾选"永远"。
    • Startup delay (seconds): 启动延迟(秒),在此选项填入 N,手动点击开始执行计划,然后延迟 N 秒后,计划才真正开始执行。

控制器-Controller

控制器:在 JMeter 中,逻辑控制器是一种测试元素,用于控制测试计划中其他测试元素(如请求、定时器等)的执行顺序和条件。逻辑控制器通过逻辑条件来决定是否执行其下面的子元素,从而模拟真实用户行为或者特定的测试场景。

【注】类似Java中的if, while, for等逻辑操作

下面介绍几种常用控制器

Transaction Controller -事务控制器

Transaction Controller: 是 JMeter 中一种逻辑控制器,它允许用户将多个 Sampler-取样器 组合成一个逻辑事务,表示一个业务流程或用户操作。

Transaction Controller 可以帮助用户统计和管理这些逻辑事务的性能数据,例如请求响应时间、吞吐量、错误率等指标;

  • Generate Parent Sample:勾选之后只会显示事务控制器的相关指标,未勾选显示每个请求的相关指标 和 事务相关指标;

    • 选中-多个请求时一个事务,事务控制器将作为其他取样器的父级样本,如:一个事务下包含多个请求,如果一个请求失败了,那这个事务就失败了。
    • 不选中:该事务控制器仅作为独立的样本,不影响其他请求
  • Include duration of timer and pre-post processors in generated sample:如果选中,在生成的样本中包括计时器,预处理和后处理的延迟时间,否则不包含

If Controller -条件控制器

If Controller:允许在执行测试计划时根据某个条件来选择是否执行其子元素。

如,可以根据前一个请求的响应结果是否包含某个关键字来决定是否执行下一个请求

相关参数说明:

  • Condition (evaluated with javascript):默认情况下,该条件被解释为返回"true"或"false"的 JavaScript 代码。
  • Expression (must evaluate to true or false):表达式(值必须是 true 或 false)
  • Interpret Condition as Variable Expression?:将条件解析为变量表达式,勾选☑️,条件必须是一个计算值为"true"的表达式。
  • Evaluate for all children?:
    • 勾选:表达式会在 if controller 节点下的每个取样器之前执行一次,根据表达式结果判断是否执行该取样器。
    • 不勾选:只在 if controller 入口处执行一次,根据结果判断是否执行下面的脚本。

循环控制器 -Loop Controller

Loop Controller :是一种循环控制器,用于控制其子元素(如采样器、定时器、逻辑控制器等)的执行次数。通过 Loop Controller,可以指定子元素需要被执行的循环次数,从而实现对测试逻辑的循环执行。

参数解释:Loop Count : 循环次数

Infinite: ☑️勾选就是永久循环

随机控制器 - Random Controller

Random Controller:是 JMeter 中的一种逻辑控制器,用于在其子元素中随机选择一个进行执行。

性能测试中,Random Controller 可以帮助模拟用户行为的随机性,从而更接近真实场景。

参数解释:

Ignore sub-controller block(忽略子控制器模块):勾选后,子控制器失效,由随机控制器代替。

采样器 -Sampler

采样器: 是用来模拟用户请求发送到目标服务器的组件。

采样器的作用: 是模拟不同类型的用户操作或请求,以测试目标服务器的性能和稳定性。通过采样器可以模拟大量用户同时访问服务器的情况,从而评估服务器的性能表现.

HTTP Request Sampler-Http请求采样器

HTTP Request Sampler: 是 Apache JMeter 中最常用的一种采样器,用于模拟发送 HTTP 请求到服务器,并获取响应结果。

HTTP Request Sampler作用:可以模拟测试各种 Web 应用程序、Web 服务和接口的性能和功能,是 JMeter 进行 Web 测试的核心组件之一。

Basic参数选项介绍:

  • 协议:向目标服务器发送 HTTP 请求时的协议,可以是 http 或者是 https 或者 File , 默认值为 http
  • 服务器名称或 IP :HTTP 请求发送的目标服务器名称或 IP 地址
  • 端口号:目标服务器的端口号,默认值为 80,https 的端口为 443
  • http 请求:发送 HTTP 请求的方法,可用方法包括 GET、POST 等
  • 路径:目标 URL 路径(不包括服务器地址和端口)/可以写完整路径,但不规范
  • 内容编码 :内容的编码方式,默认值为 iso8859;一般都填入 utf-8

Debug Sampler -调试取样器

Debug Sampler : 是 Apache JMeter 提供的一种用于调试的采样器,

作用:是在测试执行过程中插入一些调试信息,以便检查测试计划的执行过程和结果。Debug Sampler 并不发送实际请求到服务器,而是用于输出调试信息到 JMeter 的结果树中,以便于后续分析和调试

参数解释:

JMeter Properties:是否查看 JMeter 属性,默认为 False。

JMeter Variables:是否查看运行时变量,默认为 True。

System Properties:是否查看系统属性,默认为 False

BeanShell Sampler

BeanShell Sampler :是 Apache JMeter 提供的一种采样器,用于在测试计划中执行 BeanShell 脚本。

BeanShell 作用:是一种可嵌入 Java 代码的解释器,可以在运行时动态执行 Java 代码,因此 BeanShell Sampler 提供了一种非常灵活和强大的方式来扩展 JMeter 的功能和定制测试逻辑。

使用:

方式1.在 BeanShell 中编写Java 脚本

方式2. 通过本地添加已经写好的脚本文件

监听器 - Listener

监听器: 是用于收集、查看和分析测试结果的重要组件,用于监控性能测试过程中的请求响应数据、断言结果、错误信息等,帮助用户评估应用程序的性能和功能

View Results Tree

View Results Tree: 用于详细查看每个请求的响应数据、响应码、响应时间等信息,可查看每个请求的执行细节.

Aggregate Report-聚合报告

Aggregate Report-用于生成聚合报告,包括各个请求的响应时间、吞吐量、错误率等统计数据,帮助用户全面了解性能测试结果。

参数说明:

参数 说明
Label: 取样器别名,如果勾选 Include group name,则会添加线程组的名称作为前缀
Samples: 取样器运行次数
Average: 请求(事务)的平均响应时间
Median: 中位数-50%用户的响应速度
90% Line: 90%用户响应时间
95% Line: 95%用户响应时间
99% Line: 99%用户响应时间
Min: 最小响应时间
Max: 最大响应时间
Error: 错误率
Throughput: 吞吐率
Received KB/sec: 每秒收到的千字节
Sent KB/sec: 每秒发送的千字节

Backend Listener-后端监听器

Backend Listener: 用于将测试结果发送到指定的后端系统,如 InfluxDB、Graphite 等,实现实时性能监控和结果存储并以图标形式展示各项指标

参数说明:

  • Backend Listener implementation:BackendListenerClient 类的实现,Jmeter 默认提供如下两种实现。

    • GraphiteBackendListenerClient:Graphite 作为存储。
    • InfluxdbBackendListenerClient:InfluxDB 作为存储。
  • Async Queue size:异步队列大小 队列值包含异步处理时的度量标准。除非有一些特定的性能问题,否则最好不要改动默认的 5000。

  • InfluxdbBackendListenerClient 的配置参数

    1.nfluxdbUrl:influx 数据库的 url。

    2.application:被测试的应用名称。此值也作为名为"application"的标记存储在"events"中。

    3.measurement:使用默认的"jmeter"即可。

    4.summaryOnly:为 ture 的情况下,只推送一个集合结果;为 flase 的情况下,推送每个请求元件的结果,以及集合结果。

    5.samplersRegex:正则表达式将与样本名称匹配并发送到后端,默认匹配所有。

    6.percentiles:要发送到后端的百分位数,多个值已分割。

    7.testTitle:测试名称。默认的设置为 Test name;该值作为名为"text"的字段存储在"事件"度量中。 JMeter 在测试的开始和结束时自动生成一个注释,其值以'started'和'ended'结尾。

    8.eventTags:自定义标签。


总结

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

相关推荐
虫小宝2 小时前
个微iPad协议场景下Java后端的协议解析异常排查与问题定位技巧
java·svn·ipad
程序媛徐师姐2 小时前
Java基于微信小程序的鲜花销售系统,附源码+文档说明
java·微信小程序·鲜花销售小程序·java鲜花销售小程序·鲜花销售微信小程序·java鲜花销售系统小程序·java鲜花销售微信小程序
菜还不练就废了2 小时前
26.1.12|JavaSE复盘补充,整到哪里算哪里(一)
java·开发语言
摇滚侠2 小时前
Kong API 列表加 curl 访问案例 通过 curl 修改 router 的 method
java·kong
ShuiShenHuoLe2 小时前
maven配置阿里源
java·数据库·maven
H_z_q24012 小时前
RHCE的时间服务器与NTP、chrony
java·运维·服务器
悟空码字2 小时前
三步搞定短信验证码!SpringBoot集成阿里云短信实战
java·spring boot·后端
码农爱学习2 小时前
C语言结构体对齐是怎么计算
java·c语言·数据库
黎雁·泠崖2 小时前
吃透Java操作符入门:分类差异+进制转换+原反补码 核心前置知识(Java&C对比)
java·c语言·开发语言