首页 > 其他分享 >什么是JMeter?我们为什么要用JMeter做性能测试

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

时间:2024-01-24 22:32:24浏览次数:28  
标签:Web 请求 要用 应用程序 测试 服务器 JMeter

什么是JMeter?我们为什么要用JMeter做性能测试_应用程序

五星上将麦克阿瑟曾经说过“想做性能测试,你得先知道JMeter“


让我们来讲一个故事


今天和女朋友吵架了,(假设你有女朋友)。

今晚又是一个人睡沙发,这天晚上,你躺在沙发上,夜不能寐


决定学习一下这个事情——什么是JMeter?我们为什么要用JMeter做性能测试


一.什么是JMeter?

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


二.为什么选择JMeter


什么是JMeter?我们为什么要用JMeter做性能测试_服务器_02


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

假设有一天,您的老板要求您为 100 个用户进行www.google.com的性能测试。你会怎么办?


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


三.JMeter的优点


JMeter的优点如下图所示

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

  • 开源许可证: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做性能测试_应用程序_04

服务器和客户机模型

首先,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做性能测试_应用程序_05


这个工作流程简化表示了JMeter如何对目标服务器进行性能和负载测试。以下是每个步骤如何对应JMeter的工作原理:


  1. 创建请求到目标服务器: 在JMeter中,你需要定制特定到服务器的请求,这些请求可以是HTTP、FTP或数据库的请求。这个步骤代表了你在JMeter中定制这些请求的过程。
  2. 服务器响应: 当JMeter向目标服务器发送请求,服务器会返回响应。这个步骤代表了JMeter接收和处理这些服务器响应的过程。
  3. 保存所有响应:JMeter不仅会接收服务器的响应,它还将这些响应记录下来,以便我们分析和比较响应数据。这个步骤代表了JMeter记录响应的功能。
  4. 收集和计算所有统计信息:JMeter拥有强大的结果分析和展示功能。它会收集所有的测试结果,然后计算和生成统计数据。这个步骤代表了JMeter分析和报告功能。


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

什么是JMeter?我们为什么要用JMeter做性能测试_应用程序_06

什么是JMeter?我们为什么要用JMeter做性能测试_服务器_07


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

标签:Web,请求,要用,应用程序,测试,服务器,JMeter
From: https://blog.51cto.com/u_15717981/9403050

相关文章

  • web建站(v4+v6测试80端口)
     1、放通80端口新建一个入站规则  一直下一步直到完成  2、打开web服务  3、iis建站 右键网站 点添加网站   例如下图 启动就行  4、测试用浏览器先本地验证 v4地址验证  使用v6地址验证 ......
  • Apipost自动化测试+Jenkins实现持续集成
    Apipost自动化测试支持「持续集成」功能,在安装了Apipost的服务器中输入命令,即可运行测试脚本。创建自动化测试脚本在创建好的测试用例中选择「持续集成」 点击新建,配置运行环境、循环次数、间隔停顿后点击保存会生成命令。 安装Apipost-clinpminstall-gapipost-cl......
  • 测试DHCP服务器
    一:准备工作1.准备三台虚拟机,不要配ip。都改成仅主机模式,这样它们和DHCP才会相连2.进入有DHCP服务器的虚拟机,更改虚拟网络编辑器(编辑→虚拟网络编辑器(N))不勾选使用本地DHCP服务器,修改子网IP为192.168.1.0二:查看DHCP地址分配1.图形界面的查看IP是否分配到(网络和共享中心→......
  • MFC 简单的事件测试
    View的WM_LBUTTONDOWN事件消息。voidCMFCApplication1View::OnLButtonDown(UINTnFlags,CPointpoint){CStringstr;str.Format(TEXT("x=%d,y=%d"),point.x,point.y);MessageBox(str);CView::OnLButtonDown(nFlags,point);}View......
  • 软件测试/测试开发|给你剖析闭包与装饰器的魔力
    测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供1v1私教指导,BAT级别的测试管理大咖量身打造职业规划。闭包与装饰器函数引......
  • 软件测试/测试开发|给你剖析闭包与装饰器的魔力
    闭包与装饰器函数引用讲解闭包之前,需要理解一个概念,Python中定义的函数,也可以像变量一样,将一个函数名,赋值给另一个变量名,赋值后,此变量名就可以做为该函数的一个别名使用,进行调用函数,此功能在讲解列表操作的sort()方法时使用过,sort()方法的key参数传入的就是一个函数名。defsho......
  • 测试开发高薪私教线下班手把手带你提升职业技能
    测试管理班是专门面向测试与质量管理人员的一门课程,通过提升从业人员的团队管理、项目管理、绩效管理、沟通管理等方面的能力,使测试管理人员可以更好的带领团队、项目以及公司获得更快的成长。提供1v1私教指导,BAT级别的测试管理大咖量身打造职业规划。管理学大师彼得·德鲁克......
  • Jmeter: 逻辑控制器
    一前言:环境:window10,Jmeter5.3Jmeter中的逻辑控制器下有很多控制器,他们可以分为两类一类是是控制其子节点中取样器(sampler)的逻辑顺序执行如循环控制器一类是是用于分组分类或控制子节点的非逻辑执行如吞吐量控制器下面记录下控制子节点逻辑顺序的控制器二控制子节......
  • Jmeter: 读取数据库数据并参数化(循环控制器与计数器)
    一前言:环境:window10,Jmeter5.3简单介绍下如何读取数据库中同个字段的多个值,并让该字段的多个值作为后面接口的请求参数读取mysql数据并参数化把前面数据库连接的例子拿来稍微改造下场景要求:如上,从数据库中查询出符合要求的age和name字段的数据,age和name的值都会作为......
  • rdma测试
    职位描述负责智能网卡/DPU芯片(FPGA/ASIC)典型网络应用场景如RDMA组网测试、AI/HPC加速的测试验证。负责自动化测试平台(包括自动化框架、测试用例、相关工具及脚本)的开发、部署及应用,并持续优化流程提高覆盖率及测试效率。持续跟进业界新技术,创新性的解决自动化测试过程中的关键......