当前位置: 首页 > 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 编译并链接成可执行文…...

Go语言24小时极速学习教程(三)常见标准库用法

常见标准库 常见标准库即Go语言自带的库,这里的所有包都可以通过import直接引入,如果你觉得实在是不好用,那么请先保证你学会了标准库的基础上,再学一下Gookit,特别是其中的GoUtil,千万不要轻易自己去造轮…...

大数据环境下的高效数据清洗策略

大数据环境下的高效数据清洗策略 在当今这个信息爆炸的时代,大数据已成为企业决策和科学研究不可或缺的重要资源。然而,数据的海量性、多样性和复杂性也给数据处理带来了前所未有的挑战,其中数据清洗是确保数据质量和后续分析准确性的关键步…...

基于SpringBoot3+mybatis搭建的历史上的今天API接口服务 及 Mybatis 应该有个更好的方法来隐藏 Pojo 类中的字段

一、Mybatis有没有比较好的方法隐藏 Pojo 类中的字段 使用 Mybatis 时,为了实现通用的CURD,在定义实体类pojo时,会尽量将能用得上的数据库字段都定义到 pojo中,但是在查询的时候却有不一样的需求。mybatis的文档地址链接&#xff…...

Python 3 字符串

Python 3 字符串 字符串在Python中是一种基本的数据类型,用于存储文本数据。Python中的字符串是不可变的,这意味着一旦创建了一个字符串,就不能更改其内容。字符串可以用单引号()、双引号("&#xff…...

Android集成FCM(Firebace Cloud Messaging )

集成FCM官方文档 Firebace主页面 将 Firebase 添加到您的 Android 应用 1、进入Firebace页面,创建自己的项目 2、点击自己创建好的项目,在右侧选择Cloud Messaging 3、点击Android去创建 google-services.json 4、将下载的 google-services.json 文件…...

基于 RBF 神经网络辨识的单神经元 PID 模型参考自适应控制

这是一个基于 RBF 神经网络辨识 和 单神经元 PID 模型参考自适应控制 的系统框图,包含以下主要部分: RBF 神经网络模块:用于对系统进行辨识,输入误差 e(t)e(t)e(t) 和误差变化量 Δe(t)\Delta e(t)Δe(t),输出与系统特…...

2024年 Web3开发学习路线全指南

Web3是一个包含了很多领域的概念,不讨论币圈和链圈的划分,Web3包括有Defi、NFT、Game等基于区块链的Dapp应用的开发;也有VR、AR等追求视觉沉浸感的XR相关领域的开发;还有基于区块链底层架构或者协议的开发。 这篇文章给出的学习路…...

Ubuntu22.04LTS 部署前后端分离项目

一、安装mysql8.0 1. 安装mysql8.0 # 更新安装包管理工具 sudo apt-get update # 安装 mysql数据库,过程中的选项选择 y sudo apt-get install mysql-server # 启动mysql命令如下 (停止mysql的命令为:sudo service mysql stop&#xff0…...

「Mac玩转仓颉内测版23」基础篇3 - 深入理解整数类型

本篇将详细讲解Cangjie中的整数类型,探讨整数的定义、操作、表示范围、进制表示、类型转换及应用场景,帮助开发者在Cangjie中灵活运用整数类型构建程序逻辑。 关键词 有符号整数与无符号整数表示范围与溢出进制表示类型转换字面量与操作 一、整数类型概…...

渗透测试导学

渗透测试导学 渗透测试概念 渗透测试是干什么? 渗透测试的定义和目的:渗透测试是一种通过模拟恶意黑客的攻击方法,来评估计算机网络系统安全性能的评估方法。它的目的是通过识别安全问题,帮助了解当前的安全状况,从而…...

网站后台登录ip限制/网站运营主要做什么工作

置信在微软的鼎力推行下,大家都曾经装置了win10系统,但还是防止不了系统变得卡顿的问题,除了一局部是全家桶带来的结果,还有一局部当然是微软自家缘由形成的,所以无论新买的电脑、刚重置完的电脑、还是用久了的电脑&am…...

做二手车有哪些网站有哪些/少儿培训

2019独角兽企业重金招聘Python工程师标准>>> java native interface (JNI) 允许java 应用程序调用本地方法 本地方法即:本地程序设计语言编写的特殊方法(比如C 或C 代码),并返回到java设计语言本地方法主要提供三种用途&#xff1…...

手机网站建设合同/如何推广自己的微信公众号

SimHash是一种文本表示的方法,和TF-IDF一样,但是TF-IDF需要遍历所有文本来计算得到文本的表示,计算量较大。 一.SimHash的计算过程 1.分词 对于中文文本来说,一般都要先进行分词才能进一步得到文本的表示向量。 首先按照一定粒…...

北京住房与城乡建设厅网站首页/网站收录查询代码

湖北松滋历史上十二大李氏家族 数据来源:《松滋县志》(民国版) 湖北松滋历史上十二大李氏家族地理分布,来源说明,祠堂信息,家族名人。一、李家桥二、朱家铺子三、瓦屋场四、李家冲五、界溪河六、界溪河七、…...

好看网电影网站模板免费下载/产品线上营销有哪些方式

C语言mkstemp()函数:建立临时文件头文件:#include 定义函数:int mkstemp(char * template);函数说明:mkstemp()用来建立唯一的临时文件. 参数template 所指的文件名称字符串中最后六个字符必须是XXXXXX. Mkstemp()会以可读写模式和…...

包头住房与城乡建设局网站/seo服务优化

C#概览 C#语言是微软于2000年发布,基于.NET Framewrok框架的、面向对象的高级语言。经过近十三年的发展,经历了5次大的升级,最新版本为C#5.0(对应于.NET Framework 4.5),下面是C#语言发展过程的简单性总结:C#版本.NET …...