JMeter的基本使用与性能测试,完整入门篇保姆式教程

Jmeter 的简介

JMeter是一个纯Java编写的开源软件,主要用于进行性能测试功能测试。它支持测试的应用/服务/协议包括Web (HTTP, HTTPS)、SOAP/REST Webservices、FTP、Database via JDBC等。我们最常使用的是HTTP和HTTPS协议。

Jmeter主要组件

  1. 线程组(Thread Group):

    • 线程数(Number of Threads):模拟的用户数量。

    • Ramp-Up时间(Ramp-Up Period):达到指定线程数所需要的时间。例如,线程数为100,Ramp-Up时间为5秒,则每秒启动20个线程。

    • 循环次数(Loop Count):测试循环的次数。

  2. 取样器(Sampler):

    • 用于向服务器发送请求,如HTTP请求、JDBC请求等。

    • 在线程组下添加取样器,配置请求的URL、方法、参数等。

  3. 逻辑控制器(Logical Controller):

    • 用于控制测试的执行逻辑,如循环、条件判断等。

    • 常见的逻辑控制器有If控制器、循环控制器等。

  4. 前置处理器(PreProcessor)和后置处理器(PostProcessor):

    • 前置处理器在请求发送前执行操作,如设置请求头、生成数据等。
    • 后置处理器在请求发送后执行操作,如处理响应数据、提取需要的值等。
  5. 断言(Assertion):

    • 用于验证响应是否符合预期。
    • 可以使用正则表达式、XPath、JSON Path等方式进行断言。
  6. 监听器(Listener):

    • 用于展示测试结果,如查看结果树、聚合报告等。

    • 在测试计划或线程组下添加监听器,以查看和分析测试结果。

Jmeter高级功能

  1. 参数化

    • 使用CSV Data Set Config等方式实现参数化,方便进行批量测试。
    • 在测试计划中配置CSV文件路径和变量名,然后在取样器中使用这些变量。
  2. 定时器(Timer):

    • 用于控制请求的发送频率。
    • 在线程组或取样器下添加定时器,配置延迟时间和执行时间等参数。
  3. 分布式测试

    • 通过配置多个Jmeter实例,实现分布式测试,提高测试效率。

    • 需要设置主节点和从节点,以及配置相关的测试计划和数据文件等。

一、Jmeter 的安装、配置、搭建

1.1 Java环境配置

由于Jemter是基于java语言开发的,所以使用Jemter需要安装JDK。(Jemter5.0版本要求JDK版本为1.8或1.9,一般安装JDK1.8)。

  • JDK 1.8 安装地址:JDK 1.8 官网下载

  • Java环境变量配置:环境变量配置

1.2 Jmeter下载

  • 最新版Jemter下载路径:Jmeter 官网下载

  • 其他版本Jmeter下载路径:Jmeter 二进制 bin文件下载

Jmeter下载

Jmeter下载

1.3 Jmeter安装及环境变量配置

  • 下载安装包后,解压安装 Jmeter 即可

  • 环境变量配置

    • 找到Jmeter下载后的文件所在目录
      在这里插入图片描述
    • 在环境变量中配置 JMETER_HOME
      在这里插入图片描述

在这里插入图片描述

  • Path:%JMETER_HOME%\bin

在这里插入图片描述

  • 查看环境变量是否配置成功
    • 运行-> cmd-> jmeter -v 命令查看是否能查看到Jmeter版本信息
    • 运行-> cmd->jmeter 命令查看是否能启动jmeter

在这里插入图片描述

1.4 启动 Jmeter

进入 apache-jmeter-5.6.3/bin 文件夹,点击 jmeter.bat 文件,运行JMeter

在这里插入图片描述

  • 或在 cmd 中输入 jmeter 指令打开 Jmeter:

在这里插入图片描述

  • 注意:不管用使用哪一种方式打开,都会打开一个cmd窗口。如果关闭这个cmd窗口,打开的jmeter也会被关闭。
    在这里插入图片描述

初始界面如下:

在这里插入图片描述

1.5 Jemter 切换中文环境

在上方导航栏,选择 Options -> Choose Language -> Chinese(Simplified),将语言切换为中文
在这里插入图片描述
更换语言过后的界面如下:

在这里插入图片描述

二、Jmeter 的基本使用

Jmeter 常用按钮

在这里插入图片描述

2.1 JMeter脚本编写

首先介绍Jemter基本使用,这里以一个 www.baidu.com 为例,来进行基本脚本编写。

2.1.1 添加线程组

右键点击“Test Plan” -> 添加 -> 线程(用户) -> 线程组,可添加测试需要的线程组
在这里插入图片描述
线程组可配置线程组名称、注释、线程数、Ramp-up时间、循环次数、调度器等参数

在这里插入图片描述
参数解释

  • 线程数:虚拟用户数。一个虚拟用户占用一个进程或线程。设置多少虚拟用户数就是设置多少个线程数。

  • Ramp-Up Period(in seconds)准备时长:设置的虚拟用户数需要多长时间全部启动。如果线程数为5,准备时长为1,那么需要1秒钟启动5个线程,也就是每秒钟启动5个线程。

  • 循环次数:每个线程发送请求的次数。如果线程数为100,循环次数为10,那么每个线程发送10次请求。总请求数为100*10=1000 。若勾选“永远”,则所有线程会一直发送请求,直到选择停止运行脚本。

  • Same user on each iteration:用于控制每次迭代是否使用相同的线程(即用户)。当该参数被勾选时,JMeter在每次迭代时都会使用相同的线程来模拟用户行为。在连续的请求中,会保持相同的用户身份(如会话、Cookie等)。

  • 调度器:设置线程组启动的开始时间和结束时间(配置调度器时,需勾选循环次数为永远)

    • 启动延迟(秒):测试延迟的启动时间
    • 持续时间(秒):测试持续的时间
2.1.2 添加 HTTP 请求

JMeter的HTTP请求是性能测试中常用的功能,用于模拟用户向服务器发送HTTP请求并获取响应。

右键点击线程组 -> 添加 -> 取样器 -> HTTP请求,添加一个HTTP请求
在这里插入图片描述
对网址 http://www.baidu.com/s?ie=utf-8&wd=jmeter 进行性能测试,参考下图进行配置

在这里插入图片描述
参数解释:

  • Web服务器

    • 协议:向目标服务器发送HTTP请求协议,可以是HTTP或HTTPS,默认为HTTP
    • 服务器名称或IP :HTTP请求发送的目标服务器名称或IP
    • 端口号:目标服务器的端口号,默认值为80
  • Http请求

    • 方法:发送HTTP请求的方法,可用方法包括GET、POST、HEAD、PUT、DELETE等。
    • 路径:目标URL路径(URL中去掉服务器地址、端口及参数后剩余部分)
    • 内容编码:编码方式,默认为ISO-8859-1编码,这里配置为utf-8
  • 同请求一起发送参数 :在请求中发送的URL参数,可以将URL中所有参数设置在本表中,表中每行为一个参数(对应URL中的 name=value),参数传入中文时需要勾选“编码”

2.1.3 添加查看结果树

JMeter 的结果查看树用于查看和分析HTTP请求的响应结果。

右键点击线程组 -> 添加 -> 监听器 -> 查看结果树,添加一个查看结果树

在这里插入图片描述
将查找下方的响应数据格式改为 HTML Source Formatted,点击上方的绿色三角按钮,运行http请求

在这里插入图片描述
运行结果如下:

取样器结果
在这里插入图片描述

本次搜索返回结果页面标题为“JMeter性能测试_百度搜索”,与之前设置的发送参数相吻合。

在这里插入图片描述

2.1.4 添加聚合报告

聚合报告是JMeter中用于汇总和分析测试结果的工具。它提供了关于测试运行的各种性能指标,如响应时间、吞吐量、错误率等。

右键点击 线程组 -> 添加 -> 监听器 -> 聚合报告,用以存放性能测试报告
在这里插入图片描述

2.1.5 添加用户自定义变量

用户自定义变量作为存储和管理测试期间需要的值,这些变量可以在测试计划中的任何地方引用。

右键点击 线程组 -> 添加 -> 配置元件 -> 用户定义的变量,以添加用户自定义变量
在这里插入图片描述
添加一个参数 wd,用于存放搜索词

在这里插入图片描述
在HTTP请求中使用该参数,格式为 ${变量名称},即 ${wd}

在这里插入图片描述

2.1.6 添加断言

JMeter中,断言用于验证测试结果是否符合预期。

在HTTP请求中添加响应断言:右键点击 HTTP请求 -> 添加 -> 断言 -> 响应断言
在这里插入图片描述

需要校验返回的文本中是否包含搜索词,添加参数 ${wd} 到要测试的模式中

在这里插入图片描述

2.1.7 添加断言结果

为查看断言的结果,在HTTP请求中添加断言结果:右键点击 HTTP请求 -> 添加 -> 监听器 -> 断言结果

在这里插入图片描述
点击上方的绿色三角形按钮,即可运行并查看断言运行结果。

在这里插入图片描述

2.2 执行性能测试

2.2.1 配置线程组

点击线程组,配置本次性能测试相关参数:线程数,Ramp-Up时间,循环次数等参数。

在这里插入图片描述
这里我们配置线程数为20,Ramp-Up时间为5秒,循环次数为1次。

2.2.2 执行测试

进入聚合报告,进行测试。测试之前需要点击上方的扫把按钮清楚之前的调试结果。

在这里插入图片描述
点击上方的绿色按钮,即可运行测试,性能测试执行完成后,可通过聚合报告看到测试结果。
在这里插入图片描述
一般情况下,性能测试中需要重点关注的数据有请求数平均响应时间最小响应时间最大响应时间吞吐量错误率

  • 参数说明:
    • Label:每个 JMeter 的元素(如 HTTP请求)都有一个 Name 属性,Label显示的就是 Name 属性的值

    • #样本:请求数,表示这次测试中一共发出了多少个请求。如模拟100个线程数(即100个用户),每个线程迭代10次,这里就显示100*10 = 1000

    • 平均值:平均响应时间,默认情况下是单个请求的平均响应时间。

    • 中位数:50% 用户的响应时间

    • 90%/ 95%/ 99% 百分位:90%/ 95%/ 99% 用户的响应时间

    • 最小值:最小响应时间

    • 最大值:最大响应时间

    • 异常%:请求错误率,即错误请求数/请求总数

    • 吞吐量:——默认情况下表示每秒完成的请求数(Request per Second)

    • 接收KB/Sec:每秒从服务器端接收到的数据量

    • 发送KB/Sec:每秒发送到服务器端的数据量

以上,就是使用测试工具JMeter对Web应用程序进行性能测试的流程。

三、注意事项

  • 关闭不必要的监听器:在测试过程中,如果不需要实时查看结果,可以关闭不必要的监听器,以减少资源消耗。

  • 合理使用断言:过多的断言会增加测试的复杂性,应根据实际需求合理使用断言。

  • 优化测试计划:在测试过程中,应不断优化测试计划,如调整线程数、循环次数等参数,以达到最佳的测试效果。

  • 注意测试结果的分析:通过聚合报告等结果分析工具,对测试结果进行深入分析,找出潜在的性能问题。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

永辉超市:胖东来爆改,成色几何?

单日业绩暴涨14倍。来,看看,这是被胖东来爆改后重新开业后的门店, 不出意外的流量爆炸。胖东来爆改,真是解决实体商超困境的灵丹妙药吗? 今天我们聊聊——永辉超市 最近两年实体商超日子都不好过,去年13家…

在Worpress增加网站的二级目录,并转向到站外网站

在WordPress中,你可以通过添加自定义重定向来实现将某个二级目录(例如 www.example.com/subdir)重定向到站外网站。可以通过以下几种方法来实现: 方法一:使用 .htaccess 文件 如果你的服务器使用Apache,你…

使用上海云盾 CDN 和 CloudFlare 后 Nginx、 WordPress、 Typecho 获取访客真实 IP 方法

最近因为被 DDoS/CC 攻击的厉害,明月就临时的迁移了服务器,原来的服务器就空置下来了,让明月有时间对服务器进行了重置重新部署安装生产环境。因为站点同时使用了上海云盾和 CloudFlare(具体思路可以参考【国内网站使用国外 CloudFlare CDN 的思路分享】一文)两个 CDN 服务…

Java数据类型与运算符

1. 变量和类型 变量指的是程序运行时可变的量,相当于开辟一块空间来保存一些数据。 类型则是对变量的种类进行了划分,不同类型的变量具有不同的特性。 1.1 整型变量(重点) 基本语法格式: int 变量名 初始值;代码示…

20240621在飞凌的OK3588-C开发板linux系统的CAM3上接OV5645录像

20240621在飞凌的OK3588-C开发板linux系统的CAM3上接OV5645录像 2024/6/21 19:57 开发板:OK3588-C SDK:linux R4/Buildroot v4l2-ctl --list-devices v4l2-ctl --list-formats-ext -d /dev/video16 gst-launch-1.0 v4l2src device/dev/video16 num-bu…

【Git】 -- Part2 -- 分支管理

1. 分支 在 Git 中,分支(Branch)是用于在项目中创建独立开发线路的机制。分支使得开发者可以在不影响主干(main 或 master)的情况下进行实验、开发新功能或修复 Bug。 举个例子: 分⽀就好像是科幻电影⾥⾯…

鸿蒙开发:【进程模型概述】

进程模型概述 系统的进程模型如下图所示: 应用中(同一包名)的所有PageAbility、ServiceAbility、DataAbility、FormAbility运行在同一个独立进程中,即图中绿色部分的“Main Process”。 WebView拥有独立的渲染进程,即…

OS复习笔记ch11-2

上一节我们学习的内容是I/O系统的特点和设备分类和差异,这一节我们将主要关注I/O控制方式、OS设计问题、I/O逻辑结构等。 I/O功能的演变 在专栏的ch1-2中,我们详细讲解了CPU与外设的三种交互方式,这里简单地带过。 (1&#xff0…

MPLS-LDP(个人学习笔记)

定义 标签分发协议LDP(Label Distribution Protocol)是多协议标签交换MPLS的一种控制协议,负责转发等价类FEC的分类、标签的分配以及标签交换路径LSP的建立和维护等操作。LDP规定了标签分发过程中的各种消息以及相关处理过程 术语 LDP会话&a…

计算机组成原理 | 计算机系统概述

CPI:(Clockcycle Per Instruction),指每条指令的时钟周期数。 时钟周期:对CPU来说,在一个时钟周期内,CPU仅完成一个最基本的动作。时钟脉冲是计算机的基本工作脉冲,控制着计算机的工作节奏。时钟周期 是一个时钟脉冲所…

ECharts 词云案例三:2024年阅读关键词

ECharts 词云案例三:2024年阅读关键词 引言 在数据可视化领域,ECharts 以其强大的功能性和灵活性,成为开发者和设计师的首选工具之一。继上一篇关于 ECharts 词云图的详细介绍后,本文将探索词云图的进阶应用——使用蒙版来创造更…

约束求解器方案设计

1.约束求解介绍 给定一个几何对象(点、直线段、圆、圆弧、平面等)的集合G和一个关于集合G中几何对象之间约束(点的位置、直线段的长度、圆弧对应的圆心角角度、垂直、相切等) 的集合C,则在二元组(G,C)中根…

【UIDynamic-动力学-附着行为-刚性附着 Objective-C语言】

一、接下来,我们来说这个附着行为啊, 1.我们之前举过例子,一个车坏了,另外一个车,拉着这个车,就是附着行为啊, 这个里边呢,我们新建一个项目, Name:09-附着行为-刚性附着, 附着行为呢,分为两个大类: 1)刚性附着 2)弹性附着 刚性附着,指的就是,两个物体之间…

第九届世界渲染大赛什么时候开始举办?

​第九届世界渲染大赛即将开启,全球设计师和艺术家将汇聚一堂,展现3D艺术的创新与美感。敬请期待这场业界顶级的视觉盛宴,让我们共同关注大赛的启幕时刻。 第九届世界渲染大赛开始时间 预计时间:2024年7月(中旬) 报名方法&#…

光纤三维布里渊温度和应变分布matlab模拟与仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 光纤三维布里渊温度和应变分布matlab模拟与仿真。其中 , 布里渊散射是光波与声波在光纤中传播时相互作用而产生的光散射过程 , 在不 同的条件下 , 布里渊散射又分…

51单片机STC89C52RC——4.1 独立按键(数码管显示按键值)

目录 目录 目的 一,STC单片机模块 二,矩阵按键模块 2.1 针脚定义 ​编辑 2.2 矩阵按键位置 2.3 如何理解按键按下后针脚的高低电平 2.3.1 错误理解1 2.3.2 错误理解2 2.3.3 正确判定按下的是那个按键的逻辑 2.3.4 判定按键按下的依次扫描程…

服务端代码编写中MySql大小写在Java中报错问题解决

报错信息: 原因:MySql和Java变量大小写产生的冲突。 经过查阅各个博客等,得出浅显结论(不一定对):MySql大小写不敏感,Java大小写敏感,当Javabean转为MySql数据库表时,Ja…

58-DOS与DDOS分析(正常TCP会话与SYN Flood攻击、ICMP Flood 攻击、SNMP放大攻击等)

目录 正常 TCP 会话与 SYN Flood 攻击 1、正常的三次握手过程: 2、 SYN Flood 攻击 一、攻击windows系统: 二、攻击web网站 : 拒绝服务攻击工具-Hping3-Syn Flood 攻击 拒绝服务攻击工具--Hping3--ICMP Flood 攻击 sockstress攻击 So…

【Git】 -- Part1 -- 基础操作

1. Git简介 Git 是一个开源的分布式版本控制系统,由 Linus Torvalds 于 2005 年开发,主要用于源代码管理。Git 允许多名开发者共同合作处理同一个项目,跟踪每个文件的修改,并且在必要时回滚到之前的版本。 Linus Torvalds是Linux…

数字化物资管理系统的未来:RFID技术的创新应用

在信息化和智能化不断发展的背景下,物资管理系统的数字化转型已成为各行各业关注的焦点。RFID技术作为一种先进的物联网技术,通过全面数字化实现物资信息的实时追踪和高效管理,为企业的物资管理提供了强有力的支持。 首先,RFID技…