【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官网地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/917627.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Github客户端工具github-desktop使用教程

文章目录 1.客户端工具的介绍2.客户端工具使用感受3.仓库的创建4.初步尝试5.本地文件和仓库路径5.1原理说明5.2修改文件5.3版本号的说明5.4结合码云解释5.5版本号的查找 6.分支管理6.1分支的引入6.2分支合并6.3创建测试仓库6.4创建测试分支6.5合并分支6.6合并效果查看6.7分支冲…

Flutter中的Material Theme完全指南:从入门到实战

Flutter作为一款热门的跨平台开发框架,其UI组件库Material Design深受开发者喜爱。本文将深入探讨Flutter Material Theme的使用,包括如何借助Material Theme Builder创建符合产品需求的主题风格。通过多个场景和代码实例,让你轻松掌握这一工…

EWM 打印

目录 1 简介 2 后台配置 3 主数据 4 业务操作 1 简介 打印即输出管理(output management)利用“条件表”那一套理论实现。而当打印跟 EWM 集成到一起时,也需要利用 PPF(Post Processing Framework)那一套理论。而…

2024 同一个网段,反弹shell四种方法【linux版本】bash、python、nc、villian反弹shell图解步骤

实验环境准备(同一个网段下,我是桥接的虚拟机) 一、bash反弹shell 二、python反弹shell 三、nc反弹shell 四、villain反弹shell 实验环境准备(同一个网段下,我是桥接的虚拟机) 一台kali的linux(攻击者)…

ubuntu 安装kafka-eagle

上传压缩包 kafka-eagle-bin-2.0.8.tar.gz 到集群 /root/efak 目录 cd /root/efak tar -zxvf kafka-eagle-bin-2.0.8.tar.gz cd /root/efak/kafka-eagle-bin-2.0.8 mkdir /root/efakmodule tar -zxvf efak-web-2.0.8-bin.tar.gz -C /root/efakmodule/ mv /root/efakmodule/efak…

算法沉淀一:双指针

目录 前言: 双指针介绍 对撞指针 快慢指针 题目练习 1.移动零 2.复写零 3.快乐数 4.盛水最多的容器 5.有效三角形的个数 6.和为s的两个数 7.三数之和 8.四数之和 前言: 此章节介绍一些算法,主要从leetcode上的题来讲解&#xff…

安全机制解析:深入SELinux与权限管理

Linux内核作为一个高自由度和优秀性能的操作系统核心,基于安全需求提供了完善的安全机制。内核安全机制不仅限于保护个人数据,还包括对运行环境和系统体系的线程化操作。本文将全方位分析Linux内核安全机制,以SELinux为主要代表,选…

对接阿里云实人认证

对接阿里云实人认证-身份二要素核验接口整理 目录 应用场景 接口文档 接口信息 请求参数 响应参数 调试 阿里云openApi平台调试 查看调用结果 查看SDK示例 下载SDK 遇到问题 本地调试 总结 应用场景 项目有一个提现的场景,需要用户真实的身份信息。 …

【2048】我的创作纪念日

机缘 2048天,不知不觉来csdn博客已经有2048天了,其实用csdn平台很久了,实际上写博客还是从2019年开始。 还记得最初成为创作者初心是什么吗? 最开始,主要是用来做笔记。平时工作中、学习中遇到的技术相关问题都会在cs…

docker运行ActiveMQ-Artemis

前言 artemis跟以前的ActiveMQ不是一个产品,原ActiveMQ改为ActiveMQ Classic, 现在的artemis是新开发的,和原来不兼容,全称:ActiveMQ Artemis 本位仅介绍单机简单部署使用,仅用于学习和本地测试使用 官网:…

[JAVA]MyBatis框架—如何获取SqlSession对象实现数据交互(基础篇)

假设我们要查询数据库的用户信息,在MyBatis框架中,首先需要通过SqlSessionFactory创建SqlSession,然后才能使用SqlSession获取对应的Mapper接口,进而执行查询操作 在前一章我们学习了如何创建MyBatis的配置文件mybatis.config.xm…

ThinkServer SR658H V2服务器BMC做raid与装系统

目录 前提准备 一. 给磁盘做raid 二. 安装系统 前提准备 磁盘和系统BMC地址都已经准备好,可正常使用。 例: 设备BMC地址:10.99.240.196 一. 给磁盘做raid 要求: 1. 将两个894G的磁盘做成raid1 2. 将两块14902G的磁盘各自做…

aws(学习笔记第十四课) 面向NoSQL DB的DynamoDB

aws(学习笔记第十四课) 面向NoSQL DB的DynamoDB 学习内容: 开发一个任务TODO管理器 1. 主键,分区键和排序键 DynamoDB的表定义和属性定义 表定义(简单主键) 表定义的命名需要系统名 _ 表名的形式,提前规划好前缀。…

机器学习—正则化和偏差或方差

正则化参数的选择对偏差和方差的影响 用一个四阶多项式,要用正则化拟合这个模型,这里的lambda的值是正则化参数,它控制着你交易的金额,保持参数w与训练数据拟合,从将lambda设置为非常大的值的示例开始,例如…

聚类分析 | MSADBO优化Spectral谱聚类优化算法

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于改进正弦算法引导的蜣螂优化算法(MSADBO)优化Spectral谱聚类,matlab代码,直接运行! 创新独家,先用先发,注释清晰,送MSADBO参考文献!优化参数 优化后的带…

STM32:ADC

目录 一、简介 二、结构 三、工作模式 四、使用流程 一、简介 模数转换器,ADC(Analog-to-Digital Converter)是将模拟信号转换为数字信号的电子设备。在STM32中,ADC用于处理来自传感器、麦克风等的模拟信号。STM32的ADC具有高…

candence : 如何利用EXCEL 绘制复杂、多管脚元件

如何利用EXCEL 绘制复杂、多管脚元件 前面的步骤直接略过 我们以STM32F407VEXX 系列 100pin 芯片为例讲解: 1、新建好一个空元件 2、使用阵列,放置管脚 点击 “ ok ” 3、选中所有管脚 右键 “edit properites” 出现如下页面 4、点击 左上角&…

vue内置指令和自定义指令

常见的指令: v-bind : 单向绑定解析表达式, 可简写为 :xxx v-model : 双向数据绑定 v-for : 遍历数组/对象/字符串 v-on : 绑定事件监听, 可简…

【ict基础软件赛道】真题-50%openGauss

题目取自赛前测试链接 OpenGauss安装前使用哪个工具检查环境是否符合安装哪个功能不是gs_guc工具提供的opengauss数据库逻辑复制的特点描述正确的是opengauss的全密态数据库等值查询能力描述正确的是哪个不属于ssh客户端工具opengauss三权分立说法正确的是opengauss wdr snapsh…

乐理的学习(音程)

二度,三度,六度,七度的大n度都是直接的音名到音名,如#A到#G的,这样为大n度 而这个基础上向内收,收半音为小n度,在小n度再收,为减n度 在大n度的基础上再向外扩半音,为增…