当前位置: 首页 > news >正文

【Java知识】Java性能测试工具JMeter

一文带你了解什么是JMeter

    • 概述
      • JMeter的主要功能:
      • JMeter的工作原理:
      • JMeter的应用场景:
      • JMeter的组件介绍:
    • 实践说明
      • JMeter实践基本步骤:
      • JMeter实践关键点:
    • JMeter支持哪些参数化技术?
    • 常见插件及其功能
    • 工作界面展示
    • 相关文献

概述

Apache JMeter 是一个开源的、基于Java的压力测试工具,最初被设计用于Web应用测试,但后来扩展到其他测试领域。以下是JMeter的一些详细介绍:

JMeter的主要功能:

  1. 性能测试:JMeter可以模拟服务器、网络或对象在不同压力类别下的负载,测试它们的强度和分析整体性能。
  2. 回归测试:JMeter能够对应用程序做回归测试,通过创建带有断言的脚本来验证程序返回了预期的结果。
  3. 支持多种服务类型测试:JMeter支持对Web(HTTP, HTTPS)、SOAP/REST Webservices、FTP、Database via JDBC等多种服务类型进行测试。
  4. 高可移植性:作为一个100%的纯Java程序,JMeter具有高可移植性。
  5. 多线程框架:允许通过多个线程并发取样及通过独立的线程组对不同的功能同时取样。
  6. GUI支持:精心设计的GUI支持高速用户操作和精确计时。
  7. 缓存/离线分析:支持缓存/离线的方式分析/回放测试结果。
  8. 高扩展性:JMeter具备高扩展性,支持通过插件扩展其功能。

JMeter的工作原理:

JMeter可以作为Web服务器与浏览器之间的代理网关,捕获浏览器的请求和服务器的响应,生成性能测试脚本,并通过线程组模拟真实用户对Web服务器的访问压力。

JMeter的应用场景:

  1. Web应用性能测试:模拟用户访问Web应用程序,测试其响应时间和吞吐量。
  2. 服务器性能测试:通过模拟高并发请求来评估服务器的最大承载能力。
  3. 数据库性能测试:测试数据库连接的性能,评估数据库的响应时间。
  4. 网络性能测试:测试网络传输速度和稳定性。
  5. 桌面应用性能测试:测试桌面应用程序的性能。

JMeter的组件介绍:

  1. 线程组(Thread Group):定义测试的并发用户数量和循环次数。
  2. 取样器(Sampler):用于向服务器发送请求,如HTTP请求、JDBC请求等。
  3. 逻辑控制器(Logical Controller):控制测试的执行逻辑,如循环、条件判断等。
  4. 前置处理器(PreProcessor)和后置处理器(PostProcessor):在请求发送前或收到响应后处理数据。
  5. 断言(Assertion):验证响应是否符合预期。
  6. 监听器(Listener):展示测试结果,如查看结果树、聚合报告等。
  7. 配置元件(Config Element):设置测试中使用的参数和变量。
  8. 定时器(Timer):控制请求之间的时间间隔。

JMeter是一个功能强大且灵活的工具,适用于各种性能测试场景,并且由于其开源性质,被广泛使用于全球的软件开发和测试社区中。

实践说明

JMeter是一种流行的开源性能测试工具,用于对软件和服务器进行负载和压力测试。以下是JMeter实践的基本步骤和一些关键点:

JMeter实践基本步骤:

  1. 编辑测试计划(Test Plan)

    • 打开JMeter,创建一个新的测试计划,这是所有测试元件的容器。
  2. 创建线程组(Thread Group)

    • 线程组定义了虚拟用户的数量和它们的行为。你可以设置线程数(虚拟用户数)、Ramp-Up Period(启动时间,即所有线程启动所需的时间)和循环次数。
  3. 创建HTTP请求(HTTP Request)

    • 在线程组下添加HTTP请求,配置请求的URL、方法(GET/POST)、参数等。
  4. 添加监听器查看结果(View Results Tree)

    • 添加监听器来查看请求的结果,例如“查看结果树”可以显示请求的详细信息,包括请求和响应数据。
  5. 发送请求,查看结果

    • 运行测试计划,JMeter会根据线程组的设置发送请求,并在监听器中显示结果。

JMeter实践关键点:

  • 使用正确的线程数

    • 根据硬件性能和测试计划设计确定合适的线程数。过多的线程可能会导致测试结果不准确。
  • 使用HTTP(S)测试脚本记录器

    • JMeter可以录制HTTP请求,自动生成测试脚本。
  • 参数化和传参

    • 在接口测试中,JMeter支持多种参数化技术,如CSV Data Set Config、用户定义的变量、数据库提取数据等,以及使用JSON提取器、正则表达式、BeanShell后置处理器等进行参数传递和处理。
  • 测试结果分析

    • JMeter提供了多种测试报告,如聚合报告和HTML格式的测试报告,帮助分析测试结果。
  • 插件扩展

    • JMeter插件如JMeterPlugins-Standard和JMeterPlugins-Extras提供了额外的功能,如更详细的图表和统计信息。
  • 负载测试运行

    • 在进行负载测试时,需要正确调整机器大小、操作系统调优和Java安装,以确保JMeter能够高效运行。
  • 增加Java堆大小

    • 默认情况下,JMeter以1GB的堆运行,这可能不足以用于大型测试,具体取决于测试计划和线程数。可以通过设置环境变量来增加Java堆大小。

通过遵循这些步骤和关键点,你可以有效地使用JMeter来进行性能测试和接口测试。JMeter的灵活性和强大的功能使其成为性能测试领域的一个宝贵工具。

JMeter支持哪些参数化技术?

JMeter支持多种参数化技术,以下是一些常用的参数化方法:

  1. CSV Data Set Config

    • 这是最常用的参数化方法,适用于参数取值范围较大、灵活性强的场景。通过读取CSV文件中的数据并生成变量,被JMeter脚本引用,实现参数化。
    • 在线程组右键添加配置元件,选择CSV Data Set Config,设置文件路径、变量名称和分隔符等参数。
  2. User Parameters

    • 适用于参数取值范围很小的场景。通过添加前置处理器中的用户参数,可以添加多个参数和对应的值。
    • 每个线程会一直使用一组数据,例如设置4个线程并发,那么线程1使用用户_1的数据,线程2使用用户_2的数据,以此类推。
  3. 函数助手(Function Helper)

    • 使用JMeter提供的函数生成参数,如__Random函数,可以生成随机数字和随机字符串实现参数化。
    • 通过菜单“选项”->“函数助手对话框”,即可在“函数助手”弹出框上找到JMeter提供的多种函数。
  4. 用户定义的变量(User Defined Variables)

    • 用户自定义变量更多用于设置全局变量,如参数化文件路径、host、url等。
    • 在线程组或测试计划上右键添加配置元件,选择用户定义的变量,添加变量名和相对应的值。
  5. HTTP请求默认值

    • 对于请求中不变的参数,如URL、端口等,可以使用HTTP请求默认值元件,避免在每个请求中重复填写。

这些参数化技术可以帮助测试人员根据不同的测试需求和场景,灵活地管理和使用测试数据,实现数据驱动的测试。

常见插件及其功能

JMeter插件可以显著扩展其功能,以下是一些常用的JMeter插件及其扩展的功能:

  1. JMeter Plugins Manager

    • 这是一个插件管理工具,允许用户在JMeter内部搜索、安装、卸载和更新其他插件。通过JMeter Plugins Manager,用户可以轻松管理JMeter插件,无需手动下载和添加jar文件。
  2. Basic Graphs

    • 包含三个插件,用于在性能测试中监控关键指标:
      • Transactions per Second(TPS):监控每秒事务数。
      • Response Times Over Time(TRT):监控事务响应时间。
      • Active Threads Over Time:统计每秒活动的线程总数。
  3. PerfMon Metrics Collector

    • 服务器性能监控数据采集器,用于在性能测试中实时监控服务器的资源使用情况,如CPU、内存、I/O等。
  4. Custom Thread Groups

    • 提供了额外的线程组类型,如阶梯式加压线程组(jp@gc - Stepping Thread Group),允许用户以非线性方式增加线程压力。
  5. WebSocket Samplers

    • 允许JMeter进行WebSocket通信的插件,包括WebSocket Open Connection和WebSocket request-response Sampler取样器。
  6. jpgc - Standard Set

    • 包含多个有用的插件,如阶梯式加压线程组和多种监听器,用于监控TPS、响应时间和线程活动。
  7. Composite Graph

    • 允许同时展示多个图表,使得用户可以在一个界面上比较不同的性能指标。
  8. Bytes Throughput Over Time

    • 展示不同时间的吞吐量(按字节Bytes展示),与聚合报告中的Throughput(按请求个数展示)相辅相成。
  9. HTML Report

    • 生成HTML格式的测试报告,提供更丰富的结果分析和可视化展示。
  10. JSON Path Assertion

    • 用于处理JSON格式数据的插件,可以根据JSON路径表达式提取字段并进行断言判断。

通过这些插件,JMeter能够提供更全面的性能测试支持,包括更复杂的测试场景模拟、更详细的结果分析和更强大的数据处理能力。使用这些插件可以显著提升测试效率和准确性。

工作界面展示

jemeter-ws

相关文献

JMeter官网地址

相关文章:

【Java知识】Java性能测试工具JMeter

一文带你了解什么是JMeter 概述JMeter的主要功能:JMeter的工作原理:JMeter的应用场景:JMeter的组件介绍: 实践说明JMeter实践基本步骤:JMeter实践关键点: JMeter支持哪些参数化技术?常见插件及其…...

Git 安装

一、下载安装包 Git官网 https://git-scm.com/ Git 阿里镜像 二、安装 点击安装包运行,基本上一路 next 就行。 使用许可声明 选择安装目录 选择组件,默认勾选就行 选择开始菜单文件夹,默认就行 选择 Git 的默认编译器,默认 V…...

【Python】FastAPI:Token认证

FastAPI:Token认证 本教程通过 FastAPI 实现用户登录和基于 JWT(JSON Web Token) 的认证与授权,适合初学者到进阶用户。教程特别关注 Depends、OAuth2PasswordBearer 等非基础操作的详细讲解,帮助你全面掌握相关技术。…...

【FAQ】HarmonyOS SDK 闭源开放能力 —ArkUI

1.问题描述: App启动的时候会有个弹框,询问用户是否需要进去隐私模式,在该隐私模式下,App不能获取任何用户信息。当前鸿蒙App级别是否有隐私模式? 解决方案: 当前实现隐私模式都是三方应用自己实现&…...

ubuntu没有了有线网络如何修复

今天打开ubuntu之后发现有线网络连接没有了,如下图,此时是修复好之后的,“有线”部分存在,出现问题时是不存在的 此时只需要修改NetworkManager.conf配置文件,将managedfalse更改为managedtrue,保存退出就可以了 sudo…...

渗透学习之windows基础

引路Windows基础之病毒编写(完结)_哔哩哔哩_bilibili windows基础(2) 21 ftp 23 tenlet 80 web 80-89 可能是web 443 ssl心脏滴血漏洞以及一些web漏洞测试 445 smb 1433 msspl 1521 oracle 2082/2083 cpanel 主机管理系…...

【Swift】运算符

文章目录 术语赋值运算符算数运算符基本四则算术运算符求余运算符一元负号运算符一元正号运算符 比较运算符三元运算符空合运算符区间运算符闭区间运算符半开区间运算符单侧区间运算符 逻辑运算符逻辑非运算符逻辑与运算符逻辑或运算符逻辑运算符组合计算 位运算符运算符优先级…...

minikube start --driver=docker 指定国内镜像

要在Ubuntu 22上使用Minikube并指定国内镜像,你可以根据以下步骤操作: 安装Minikube: 你可以通过阿里云提供的国内源来安装Minikube,这样可以避免访问国外源的问题。使用以下命令安装Minikube: curl -Lo minikube http…...

Quality minus junk论文阅读

Quality minus junk论文阅读 文章目录 Quality minus junk论文阅读 AbstractTheoretical FrameworkEmpirical AnalysisDataQuality scorePortfoliosEx ante quality forecasts fundamentals Results and DiscussionThe price of qualityUnderstanding the price of quality: th…...

Apache和HTTPS证书的生成与安装

摘要 介绍linux系统下使用openssl生成https证书,并将证书安装在apache服务器上,最终实现通过https访问服务器。这个过程涉及到openssl生成自签名证书(适用于测试环境),修改apache配置,开放防火墙https端口…...

前端—Cursor编辑器

在当今快速发展的软件开发领域,效率和质量是衡量一个工具是否优秀的两个关键指标。今天,我要向大家推荐一款革命性的代码编辑器——Cursor,它集成了强大的AI功能,旨在提高开发者的编程效率。以下是Cursor编辑器的详细介绍和推荐理…...

【数据结构】【线性表】【练习】删除链表倒数第n个结点

目录 申明 题目 分析题目信息 解题思路 代码解析 技巧解析:创建虚拟头结点 时间复杂度分析 思考:能否只用一趟扫描实现? 双指针 双指针解题思路 代码解析 申明 该题源自力扣题库19,文章内容(代码&#xff0c…...

MySQL高级(四):索引

基础概念 什么是索引? 索引是一种数据结构,用于加速查询的过程。它类似于书本的目录,可以快速定位数据行。MySQL 索引主要是基于 B 树(也有其他类型如哈希索引、全文索引等)来实现的。 为什么使用索引? …...

hhdb数据库介绍(9-21)

计算节点参数说明 checkClusterBeforeDnSwitch 参数说明: PropertyValue参数值checkClusterBeforeDnSwitch是否可见否参数说明集群模式下触发数据节点高可用切换时,是否先判断集群所有成员正常再进行数据节点切换默认值falseReload是否生效是 参数设…...

React中组件通信的几种方式

在构建复杂的React应用时,组件之间的通信是至关重要的。从简单的父子组件通信到跨组件状态同步,不同组件之间的通信方式多种多样。 1. 父子组件通信 父子组件通信是 React 中最基本的通信方式之一。在这种模式下,数据是从父组件通过 props …...

python脚本实现csv中百度经纬度转84经纬度

数据准备 csv文件,带百度经纬度字段:bd09_x,bd09_y 目的 将百度经纬度转换为84经纬度,并在csv文件中添加两个字段:84_x,84_y python脚本 from ChangeCoordinate import ChangeCoordimport pandas as pd import numpy as npcoord = ChangeCoord()def bd09_to_wgs84...

syslog udp配置笔记

要将 /var/log/ 目录下的日志信息通过 UDP 发送到远程服务器,可以使用 rsyslog 的配置来实现。以下是详细步骤: 步骤 1:确保 rsyslog 已安装 如果 rsyslog 没有安装,请使用以下命令进行安装: 在 CentOS/RHEL: sudo yum install rsyslog在 Ubuntu/Debian: sudo apt-get i…...

Linux环境开启MongoDB的安全认证

文章目录 1. MongoDB安全认证简介1.1 访问控制1.2 角色1.3 权限 2. MongoDB中的常见角色3. MongoDB Shell3.1 下载MongoDB Shell3.2 通过MongoDB Shell连接MongoDB 4. 创建管理员用户5. 为具体的数据库创建用户6. 开启权限认证7. 重启MongoDB服务8. 连接MongoDB9. MongoDB数据库…...

django基于Python的农产品销售系统的设计与实现

摘 要 随着现代人们的快速发展,农产品销售系统已成为农产品的需求。该平台采用Python技术和django搭建系统框架,后台使用MySQL数据库进行信息管理;通过个人中心、用户管理、商家管理、产品类型管理、农产品管理、系统管理、订单管理等功能&a…...

linux复习5:C prog

编辑 缩排 为了使C源代码更加整洁易读,可以使用一些工具来自动格式化代码,例如cb(C程序美化器)、bcpp(C美化器)和indent等。 编译 编译并链接C文件 gcc hello.c -o hello 将 hello.c 编译并链接成可执行文…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异,它们的数据同步要求既要保持数据的准确性和一致性,又要处理好性能问题。以下是一些主要的技术要点: 数据结构差异 数据类型差异&#xff…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版

7种色调职场工作汇报PPT&#xff0c;橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版&#xff1a;职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

Kafka入门-生产者

生产者 生产者发送流程&#xff1a; 延迟时间为0ms时&#xff0c;也就意味着每当有数据就会直接发送 异步发送API 异步发送和同步发送的不同在于&#xff1a;异步发送不需要等待结果&#xff0c;同步发送必须等待结果才能进行下一步发送。 普通异步发送 首先导入所需的k…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...