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

什么是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.mzph.cn/news/644635.shtml

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

相关文章

使用Transformers微调基于BERT模型做中文命名实体识别任务

注意版本!! python == 3.8.6 torch == 1.10.0 transformers == 4.36.2 datasets == 2.15.0 import json # 数据集下载地址:https://www.cluebenchmarks.com/introduce.html # 细粒度命名实体识别->下载# 将数据转为 BIO 标注形式 def dimension_label(path, save_p…

linux 之 ln 命令

linux 之 ln 命令 在Linux中,ln 命令用于创建文件或目录的链接。它有两种主要类型的链接。 硬链接(Hard Links) 硬链接实际上是原始文件的另一个引用,指向同一个inode(索引节点),这意味着它们共…

如何在Linux上部署Docker容器

一、什么是docker? Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不…

方法调用(java)

方法调用的基本内存原理:先进后出 基本数据类型:整数类型、浮点数类型、布尔类型、字符类型;数据类型存储在自己的空间 引用数据类型:除了以上数据类型都是;数据值是存储在其他空间中,变量中存储的是地址…

sprignboot电商书城源码

运行环境: jdk1.8,maven,mysql 项目技术: 后台主要是springbootmybatisshirojsp,前端界面主要使用bootstrap框架搭建,并使用了ueditor富文本编辑器、highcharts图表库。 有需要的可以联系我。 功能介绍: 该系统分为前台展示和后台管理两…

[docker] Docker 网络

一、Docker 网络 1.1 Docker 网络实现原理 Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认…

【量化交易】股市舞者:小明的撮合交易之旅

马西森AES撮合交易系统 在繁华的都市中,小明,一个普通的青年,刚刚赚到了人生的第一桶金——20万。这笔意外的财富,点燃了他对股市的强烈兴趣。他开始如饥似渴地学习金融知识,钻研各种交易策略。 一天,小…

C#使用IsLeapYear方法判断指定年份是否为闰年

目录 一、判断指定年是否为闰年的2个方法 1.使用IsLeapYear方法判断指定年份是否为闰年 2.使用自定义的算法计算指定年份是否为闰年 二、示例 1.方法1的实例 2.方法2的实例 一、判断指定年是否为闰年的2个方法 1.使用IsLeapYear方法判断指定年份是否为闰年 使用IsLeapY…

Android小工具:利用解构来简化Cursor内容的读取

Cursor这个类是Android开发者难以避免的,比如数据库、ContentResolver内容的读取,但通过这个类读取内容非常的繁琐,针对要读取的每一个字段都会有这样一段代码: int idIndex cursor.getColumnIndex("id"); //获取字段…

Vue+OpenLayers7:OpenLayers地图默认使用什么投影? 要如何更改OpenLayers地图的投影?

返回目录:Vue+OpenLayers7 OpenLayers地图默认使用什么投影? 在回答这个问题之前,我们需要了解什么是地图投影。 什么是地图投影? 地图投影是将球面地图上的三维地理坐标系(经纬度)转换成平面地图上的二维坐标系的过程。由于地球是一个近似的椭球体,而平面地图是一个…

Linux的奇妙冒险———vim的用法和本地配置

vim的用法和本地配置 一.vim的组成和功能。1.什么是vim2.vim的多种模式 二.文本编辑(普通模式)的快捷使用1.快速复制,粘贴,剪切。2.撤销,返回上一步操作3.光标的控制4.文本快捷变换5.批量化操作和注释 三.底行模式四.v…

远程连接银河麒麟

目录 一、防火墙服务 二、安装SSH服务 1.验证SSH服务是否安装 2.安装SSH服务 三、启动SSH服务 四、远程连接 1.切换登录用户 2.查看IP地址 3.FinalShell连接 4.切换root用户 前言: 本篇主要讲述在Win10系统中通过FinalShell远程连接银河麒麟桌面操作系统V10 一、防火…

ardupilot 罗德里格公式的两种推导

目录 文章目录 目录摘要1.等效旋转矢量2.三维旋转3.四元数和罗德里格公式之间的联系摘要 本节主要记录推导罗德里格公式的过程,可以参看视频不错的视频讲解 1.等效旋转矢量 参看严老师的教材: 步骤一:计算向量O’B 步骤二 :分解向量r到u上和垂直u的向量

在VBA中使用SQL

VBA在处理大量的数据/计算时如果使用常规方法会比较慢,因此需要对其进行性能优化以提高运行速度,一般的方法是数组计算或者sql计算。SQL计算的速度最快,限制也是最多的,数组速度其次,灵活性也更高 如果要在vba中调用sql处理数据基本可以遵循一个套路,只要修改其中的SQL语…

通过Stable Diffusion生成虚假的遥感影像

简介 这两天玩了一下stable diffusion,是真的好玩! 然后我在想遥感有没有相关的生成模型,找了一下,还真找到了(https://github.com/xiaoyuan1996/Stable-Diffusion-for-Remote-Sensing-Image-Generation/tree/main&a…

@JsonFormat失效,被jackson自定义配置覆盖

jackson配置类 我的jackson配置类如下,其中serializerByType(LocalDateTime.class, new LocalDateTimeSerializer()) 覆盖了JsonFormat注解 Configuration public class JacksonConfiguration {public static final DateTimeFormatter optionalDateTimePattern (n…

class_10:this关键字

this关键字是指向调用对象的指针 #include <iostream> #include <iostream> using namespace std;class Car{ public://成员数据string brand; //品牌int year; //年限//构造函数名与类名相同Car(string brand,int year){cout<<"构造函数中&#…

快速上手的AI工具-文心一言绘画达人

前言 大家好&#xff0c;现在AI技术的发展&#xff0c;它已经渗透到我们生活的各个层面。对于普通人来说&#xff0c;理解并有效利用AI技术不仅能增强个人竞争力&#xff0c;还能在日常生活中带来便利。无论是提高工作效率&#xff0c;还是优化日常任务&#xff0c;AI工具都可…

Python 容器型数据类型基本认识

容器型数据类型&#xff1a;用一个变量可以保存多个数据。 Python中&#xff0c;常见的容器型数据类型有&#xff1a;列表&#xff08;List&#xff09;、元组&#xff08;Tuple&#xff09;、集合&#xff08;Set&#xff09;、字典&#xff08;Dictionary&#xff09;。 其…

高数总结(2

目录 1.总结&#xff1a;小结&#xff1a; 1.总结&#xff1a; 小结&#xff1a; 关注我给大家分享更多有趣的知识&#xff0c;以下是个人公众号&#xff0c;提供 ||代码兼职|| ||代码问题求解|| 由于本号流量还不足以发表推广&#xff0c;搜我的公众号即可&#xff1a;