什么是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,一经查实,立即删除!

相关文章

如何在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…

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的向量

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

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

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工具都可…

高数总结(2

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

Java实现 快速排序(Quick_sort)

文章目录 前言它的基本思想是:快速排序实现-理论快速排序实现-实践 前言 虽然快排是一种不稳定的排序方式&#xff1a; 但是还是很快的&#xff0c;而且面试中我也有被问到过。 它的基本思想是: 选择一个基准数&#xff0c;通过一趟排序将要排序的数据分割成独立的两部分&a…

JavaEE-SSM-订单管理-前端增删改功能实现

3.5 功能2&#xff1a;添加 从列表页面切换到添加页面 编写对应添加页面的路由 * {path: /orderAdd,name: 添加订单,component: () > import(../views/OrderAdd.vue)}编写添加功能 <template><div><table border"1"><tr><td>编…

LeetCode-2865. 美丽塔 I

题面 给你一个长度为 n 下标从 0 开始的整数数组 maxHeights 。 你的任务是在坐标轴上建 n 座塔。第 i 座塔的下标为 i &#xff0c;高度为 heights[i] 。 如果以下条件满足&#xff0c;我们称这些塔是 美丽 的&#xff1a; 1 < heights[i] < maxHeights[i] heights 是…

nexus清理docker私库

下载nexus-cli客户端&#xff0c;并非必须下载到服务器&#xff0c;理论上只要能访问到nexus就行 wget https://s3.eu-west-2.amazonaws.com/nexus-cli/1.0.0-beta/linux/nexus-cli这个链接下载不了了&#xff0c;末尾有资源下载&#xff0c;里面包含了完整包和脚本&#xff0…

分布变化下的Test-Time adaption 综述

论文 https://arxiv.org/abs/2303.15361 代码 https://github.com/tim-learn/awesome-test-time-adaptation &#xff08;其实这是相关领域代码和论文合集之类的东西&#xff09; Abstract 机器学习方法努力在训练过程中获得一个鲁棒模型&#xff0c;即使在分布变化的情况下…

0124-2-算法题解析与总结(四)

5.5 如何去除有序数组的重复元素 本文对应的力扣题目&#xff1a; 26.删除排序数组中的重复项 83.删除排序链表中的重复元素 26.删除排序数组中的重复项&#xff1a; int removeDuplicates(int[] nums) {int n nums.length;if (n 0) return 0;int slow 0, fast 1;while…

【原创】linux为什么不是实时操作系统

文章目录 一、什么是实时操作系统&#xff08;RTOS&#xff09;&#xff1f;二、linux为什么不是实时操作系统&#xff1f;中断响应时间中断处理时间任务调度时间1、No Forced Preemption(Server)2、Voluntary Kernel Preemption(Desktop)3、Preemptible Kernel(Low-Latency De…