什么是JMeter?我们为什么要用JMeter做性能测试

news2024/12/23 0:08:24

什么是JMeter?我们为什么要用JMeter做性能测试

    • 什么是JMeter?
    • 为什么选择JMeter
    • JMeter的优点
    • JMeter是如何工作的

什么是JMeter?

Apache JMeter TM是纯Java开源软件,最初由Apache软件基金会的Stefano Mazzocchi开发,旨在负载测试功能行为和测量性能。您可以使用 JMeter 来分析和测量 Web 应用程序或各种服务的性能。性能测试是指针对重负载、多个并发用户流量测试 Web 应用程序。JMeter最初用于测试Web应用程序或FTP应用程序。如今,它用于功能测试、数据库服务器测试等。

为什么选择JMeter

在这里插入图片描述

您是否曾经测试过网络服务器以了解其工作效率如何?Web 服务器可以处理多少个并发用户?

假设有一天,您的老板要求您为 100 个用户进行www.google.com的性能测试。你会怎么办?
安排 100 名拥有 PC 和互联网接入的人同时访问 google.com 是不可行的。当您测试 10000 个用户(对于像 google 这样的网站来说这个数字很小)时,请考虑一下基础设施要求。因此,您需要像 JMeter 这样的软件工具来模拟真实用户行为并对站点进行性能/负载测试。

JMeter的优点

JMeter的优点如下图所示
在这里插入图片描述

  • 开源许可证:JMeter完全免费,允许开发者使用源代码进行开发

  • 友好的 GUI:JMeter 非常易于使用,不需要花时间来熟悉它

  • 平台无关:JMeter 是 100% 纯 Java 桌面应用程序。所以它可以在多个平台上运行

  • 完整的多线程框架。JMeter 允许通过单独的线程组并发和同时采样不同的函数

  • 可视化测试结果:测试结果可以以图表、表格、树形和日志文件等不同格式显示

  • 安装简单:您只需复制并运行 *.bat 文件即可运行 JMeter。无需安装。

  • 高度可扩展:您可以编写自己的测试。JMeter 还支持可视化插件,让您可以扩展测试

  • 多种测试策略:JMeter支持负载测试、分布式测试、功能测试等多种测试策略。

  • 模拟:JMeter 可以模拟多个用户的并发线程,为测试中的 Web 应用程序创建沉重的负载

  • 支持多协议:JMeter不仅支持Web应用程序测试,还可以评估数据库服务器性能。JMeter 支持所有基本协议,如 HTTP、JDBC、LDAP、SOAP、JMS 和 FTP

  • 记录和回放–记录浏览器上的用户活动并使用 JMeter 在 Web 应用程序中模拟它们

  • 脚本测试:Jmeter可以与Bean Shell和Selenium集成以进行自动化测试。

JMeter是如何工作的

JMeter的基本工作流程如下图所示

JMeter模拟一组用户向目标服务器发送请求,并通过图形化图表返回目标服务器的统计信息
在这里插入图片描述
服务器和客户机模型

首先,JMeter遵循客户机-服务器模型。在这个模型中,JMeter客户机发送测试请求(指令)到JMeter服务器,然后JMeter服务器实际上在相应的服务器上运行测试。

请求和响应在JMeter中,你可以构建“测试计划”。这个测试计划描述了服务器接收到哪些请求(例如HTTP请求),以及这些请求如何处理。当这些请求被送到服务器时,服务器会产生相应的反应(响应),然后这些反应被JMeter捕获并存在记录文件中,以便日后分析。

组件一个典型的JMeter测试包含以下几个关键组件:

  • Thread Group: 这是JMeter中执行请求的实际用户组。你可以设置线程数量(用户数量)、循环次数等。

  • Samplers: 这是使我们能够发送不同类型的请求(如 HTTP, FTP)到服务器的JMeter组件。

  • Logic Controllers: 控制器可以改变JMeter的请求发送顺序。例如,如果你想依次发送所有请求,你可以使用Simple Controller;如果你想在所有请求中随机选择一个,你可以使用Random Controller。

  • Listeners: 它们用于查看测试结果。JMeter有很多种不同类型的Listeners,比如图形结果、树形结果视图等供你选择。

  • Timers: 你可以用它们来暂停一段时间再发送下一个请求,就像真实用户一样(在两个页面之间停留一段时间)。

  • Assertions: 断言用于验证服务器的响应是否与你的期望相符。

  • Configuration Elements: 配置元素可以用来设置测试中的常量。

JMeter完成的工作流程如下图所示
在这里插入图片描述
这个工作流程简化表示了JMeter如何对目标服务器进行性能和负载测试。以下是每个步骤如何对应JMeter的工作原理:

  • 创建请求到目标服务器: 在JMeter中,你需要定制特定到服务器的请求,这些请求可以是HTTP、FTP或数据库的请求。这个步骤代表了你在JMeter中定制这些请求的过程。

  • 服务器响应: 当JMeter向目标服务器发送请求,服务器会返回响应。这个步骤代表了JMeter接收和处理这些服务器响应的过程。

  • 保存所有响应:JMeter不仅会接收服务器的响应,它还将这些响应记录下来,以便我们分析和比较响应数据。这个步骤代表了JMeter记录响应的功能。

  • 收集和计算所有统计信息:JMeter拥有强大的结果分析和展示功能。它会收集所有的测试结果,然后计算和生成统计数据。这个步骤代表了JMeter分析和报告功能。

这个流程不停地循环,模拟了真实世界中用户不断向服务器发送请求的场景,从而实现了负载测试。最右边独立的“测试报告”区域,概述的是JMeter的报告功能,其中通过图表、表格等多种方式展示了测试数据,以帮助用户更好地理解和分析测试结果。

以上就是今天的全部内容,希望对大家有所帮助,也希望大家多多留言、点赞、在看、转发四连爱❤️ 支持。 咱们下篇文章见,Bye~👋
在这里插入图片描述

一个正经的测试,专注于AI与软件测试技术和宝藏干货分享,每天准时更新原创技术文章,每月不定期赠送技术书籍,让我们在测试会所在测试社区这个大家庭一起学习交流。喜欢记得星标⭐我,每天及时获得最新推送,

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

运维神器Ansible的常用模块

引言:话不多说,今天分享一下Ansible的常用模块,建议收藏哦 1、ping模块 ping模块可以进行主机连通性测试 命令格式 ansible 主机或主机组 -m ping 例,成功显示如下: 2、command 模块 command模块可以直接在远程主机…

条件语句及if语句,case语句

文章目录 条件语句一、测试1、概述格式 2、文件测试2.1 格式2.2 常用操作符 3、比较整数数值3.1 格式3.2 常用操作符 4、字符串比较4.1 格式4.2 常用操作符 5、逻辑测试(短路运算)5.1 格式5.2 常用操作符 6、双中括号6.1 格式6.2 说明 二、if语句1、单分…

DA14531平台secondary_bootloade工程修改笔记

DA14531平台secondary_bootloade工程修改笔记 1.支持在线仿真 初始时加入syscntl_load_debugger_cfg(); 表示可以重复Jlink连接调试仿真 2.支持串口烧录,和支持单线线写 utilities\secondary_bootloader\includes\bootloader.h /************** 2-wire UART supp…

程序媛的mac修炼手册-- 如何用Python节省WPS会员费

上篇分享了如何用微博爬虫,咱举例爬了女明星江疏影的微博数据。今天就用这些数据,给大家安利一下怎么用Python实现WPS中部分Excel付费功能。 MacOS系统自带的工具,绝大多数都非常顶,除Numbers外。当然,page比起word来&…

ubuntu 22.04 安装mysql-8.0.34

ubuntu 22.04 安装mysql-8.0.34 1、基础安装配置 更新软件包: sudo apt update查看可用软件包: sudo apt search mysql-server安装最新版本: sudo apt install -y mysql-server或者,安装指定版本: sudo apt inst…

vue3实现在浏览器之外打开新窗口,新窗口只有原来的一半并且居中显示

首先在router下的index.js添加路由地址 {name: attribute,path: /attribute,component: () > import(../views/attribute.vue)},然后在方法中调用 //点击按钮 function clicek() {openCenteredWindow(/attribute, 1400, 800);} // 计算居中位置function calculateCenterPos…

live555在拉流时应对多路码流传输带宽问题的几种处理思路

处理带宽管理和调整的机制 Live555库本身并没有直接处理带宽管理和调整的机制,因为它主要是一个用于实现RTSP流媒体服务器和客户端的库,而带宽管理通常是在应用层进行处理的。但Live555支持一些基础协议,这些协议可以在应对带宽问题时进行使用…

qt初入门6:QChar和QString相关接口练习

简单了解编码: ​ latin1(ISO 8859-1)字符集是对ASCII基本字符集的扩展,都是1字节编码。 Unicode编码有多重存储方案,utf-8使用1~4字节编码,最少1字节;utf-16使用2-4字节编码,最少2字…

Zabbix 整合 Prometheus:案例分享与操作指南

一、简介 Zabbix 和 Prometheus 都是流行的开源监控工具,它们各自具有独特的优势。Zabbix 主要用于网络和系统监控,而 Prometheus 则专注于开源的分布式时间序列数据库。在某些场景下,将这两个工具整合在一起可以更好地发挥它们的优势&#…

树,二叉树及其相关知识

1.树概念及结构 1.1树的概念 树是一种非线性的数据结构,它是由n(n>0)个有限结点组成一个具有层次关系的集合。把它叫做树是因 为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。 有一个特殊的结点&#…

Eyes Wide Shut? Exploring the Visual Shortcomings of Multimodal LLMs

大开眼界?探索多模态模型种视觉编码器的缺陷。 论文中指出,上面这些VQA问题,人类可以瞬间给出正确的答案,但是多模态给出的结果却是错误的。是哪个环节出了问题呢?视觉编码器的问题?大语言模型出现了幻觉&…

redis集群 —— 高性能

文章目录 前言节点1.1 启动节点 槽指派2.1 记录节点的槽指派信息2.2 传播节点的槽指派信息2.3 记录集群所有槽的指派信息 在集群中执行命令3.1 计算键属于哪个槽3.3 节点数据库的实现 重新分片复制与故障转移 前言 Redis集群是Redis提供的分布式数据库方案,集群通过…

vp9协议笔记

vp9协议笔记📒 本文主要是对vp9协议的梳理,协议的细节参考官方文档:VP9协议链接(需要加速器) vp9协议笔记 vp9协议笔记📒1. 视频编码概述2. 超级帧superframe(sz):2. fr…

ZK高可用架构涉及常用功能整理

ZK高可用架构涉及常用功能整理 1. zk的高可用系统架构和相关组件1.1 Quorum机制1.2 ZAB协议 2. zk的核心参数2.1 常规配置2.2 特殊优化配置 3. zk常用命令3.1 常用基础命令3.2 常用运维命令 4. 事务性4.1 数据写流程4.2 数据读流程 5. 疑问和思考5.1 zk不擅长处理哪些场景&…

springboot家乡特色推荐系统源码和论文

在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括家乡特色推荐的网络应用,在外国家乡特色推荐系统已经是很普遍的方式,不过国内的管理网站可能还处于起步阶段。家乡特色推荐系统采用java技术&#xff0…

橘子学Mybatis08之Mybatis关于一级缓存的使用和适配器设计模式

前面我们说了mybatis的缓存设计体系,这里我们来正式看一下这玩意到底是咋个用法。 首先我们是知道的,Mybatis中存在两级缓存。分别是一级缓存(会话级),和二级缓存(全局级)。 下面我们就来看看这两级缓存。 一、准备工作 1、准备数据库 在此之…

HCIP:不同VLAN下实现网络互相通信

配置pc1 配置pc2 配置pc3 将sw1划分到vlan3 将sw3划分到vlan3 在sw1上进行缺省 将sw1上(g0/0/1)的untagged改成 1 3 则在pc1上ping pc2可通 在sw1上进行缺省 在sw3上(e0/0/1)打标记 则在pc1上ping pc3可通(实现互通&am…

阿里云Serverless 容器使用,以及常见问题处理

阿里云Serverless Kubernetes容器服务(ASK)是基于Kubernetes的Serverless容器产品,能够自动完成资源管理、弹性伸缩和按需计费。以下是一些基本使用步骤以及常见问题处理: 阿里云Serverless Kubernetes(ASK&#xff0…

17.鸿蒙HarmonyOS App(JAVA)滑动选择器

每天进步一点点,成功在久不在速 滑动选择器 //设置文本样式 picker.setNormalTextFont(Font.DEFAULT_BOLD); picker.setNormalTextSize(40); picker.setNormalTextColor(new Color(Color.getIntColor("#FFA500"))); picker.setSelectedTextFont(Font.DEFAULT_BOLD)…

socket通信客户端收到16进制转换出现efbfbd乱码解决办法

socket客户端接收服务端发来的数据时,发现老有efbfbd乱码,如下图,服务端发送的是02040200013CF0,但是客户端接收到解析后却不一样 客户端接收解析并打印 在网上查原因后,原因是将接收的byte数组转换为String后&#…