当前位置: 首页 > news >正文

Jmeter(一) - 从入门到精通 - 环境搭建(详解教程)

1.JMeter 介绍

     Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序)。它可以用来测试静态和动态资源的性能,例如:静态文件,Java Servlet,CGI Scripts,Java Object,数据库和FTP服务器等等。JMeter可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分析不同负载下的整体性能。
     同时,JMeter可以帮助你对你的应用程序进行回归测试。通过你创建的测试脚本和assertions来验证你的程序返回了所期待的值。为了更高的适应性,JMeter允许调用二次开发的jar包来丰富你的测试场景;JMeter允许你使用正则表达式来创建这些assertions.

2.JMeter与LoadRunner比较

JMeter 是一款开源(有着典型开源工具特点:界面不美观)测试工具,虽然与LoadRunner相比有很多不足,比如:它结果分析能力没有LoadRunner详细;很它的优点也有很多:

  • 开源,他是一款开源的免费软件,使用它你不需要支付任何费用,
  • 小巧,相比LR的庞大(最新LR11将近4GB),它非常小巧,不需要安装,但需要JDK环境,因为它是使用java开发的工具。
  • 功能强大,jmeter设计之初只是一个简单的web性能测试工具,但经过不段的更新扩展,现在可以完成数据库、FTP、LDAP、WebService等方面的测试。因为它的开源性,当然你也可以根据自己的需求扩展它的功能。扩展性极强。它可以测试性能,可以测试接口,甚至可以通过加载浏览器驱动完成UI自动化的工作!

 两者最大的区别:jmeter不支持IP欺骗,而LR支持。

  从上边来看Jmeter是好处多多的,但是任何事、任何物都违背不了一个法则,那就是“金无足赤人无完人”,Jmeter也是有不足之处的,下边我们来看看Jmeter的不足之处,这里就不深究它到底是娘胎里带来的还是后天造成的了,一般对于软件来说都是娘胎里带来的,先天不足。原因是:开发的时候可能由于某些原因考虑不足,导致其娘胎里带病。

3.JMeter缺点

  使用JMeter无法验证JS程序,也无法验证页面UI,所以要须要和Selenium配合来完成Web2.0应用的测试。

4.下载安装

4.1JMeter安装

1.http://jmeter.apache.org/下载最新版本的JMeter,解压文件到任意目录

2.安装JDK,配置环境变量JAVA_HOME

  JDK环境变量配置传送门

3.系统要求:JMeter2.11 需要JDK1.6以上的版本支持运行

4.JMeter可以运行在如下操作系统上:Unix,Windows和Open VMS.

5.应当避免jdk路径与jmeter路径有中文和空格,否则会有异常,也会导致远程测试出现问题。

4.2JMeter插件安装

1. 插件下载地址: Install :: JMeter-Plugins.org

2. 插件下载后解压:找到JMeterPlugins-Extras.jar,把JMeterPlugins-Extras.jar放到apache-jmeter-2.12\lib\ext目录。

5.JMeter运行

5.1JMeter启动的两种姿势

5.1.1启动姿势1

进入bin目录,双击运行jmeter.bat启动jmeter

注意:打开的时候会有两个窗口,JMeter的命令窗口和JMeter的图形操作界面,不可以关闭命令窗口。

5.1.2启动姿势2

进入bin目录,双击ApacheJmeter.jar包运行

注意:打开的时候会有只有一个窗口,JMeter的图形操作界面,和上边的不一样哈。

6.JMeter目录结构解析

6.1根目录

Jmeter安装包解压后的根目录如下图:

6.2根目录说明(由上到下)

(1)backup目录   脚本备份目录,里边的文件都是以.jmx后缀结尾的文件

  实际开始安装解压后是不存在这个目录的,这个是由于使用过JMeter后,JMeter自动创建这个目录,然后备份了脚本文件。

(2)bin目录  可执行文件目录

  1. Jmeter.bat:是启动jmeter的主脚本。
  2. Jmeter-server.bar:是用来实现联机负载。
  3. Jmeter.properties:是jmeter主要的配置文件,超过80%的配置项都是通过这个文件实现。(PS:修改配置文件后,要重启Jmeter才能生效)

  Jmeter.bat  打开Jmeter主界面

  Jmeter使用的日志文件名称被定义到Jmeter.properties中,默认在Jmeter.log可查看日志

(3)dosc目录

  docs目录下的文件是JMeter的Java Docs,而printable_docs的usermanual子目录下的内容是JMeter的用户手册文档,其中component_reference.html是最常用到的核心元件帮助文档。该目录下存放的是jmeter官方文档的API文档,主要是用于二次开发。

(4)extras目录

  该目录下的文件提供了对构建工具Ant的支持,可以使用Ant来实现测试自动化,例如批量脚本执行,产生HTML格式的报表,测试运行时,可以把测试数据记录下来,Jmeter会自动生成一个.jtl文件,将该文件放到extras目录下,运行“ant -Dtest=文件名 report”,就可以生成测试统计报表。也可以用于持续集成。

(5)lib目录

  该目录包含两个子目录,其中ext子目录存放有JMeter的核心jar包,另一个junit子目录存放JUnit测试脚本。用户扩展所依赖的包,应该直接放到lib目录下,而非lib/ext下。

注意:无法识别 zip 格式的包文件,所以需要的包文件均要求以 .jar 结尾

(6)Licenses jmeter 软件许可文件目录

(7)printable_docs目录

  该目录存放的是jmeter官方提供的帮助文档。printable_docs的demos子目录下有一些常用的JMeter脚本案例,可以作为参考。可打印半版本目录。

(8)LICENSE JMeter ——许可说明

(9)NOTICE JMeter ——简单信息说明

(10) README.md ——JMeter 官方基本介绍

6.3打开backup,如下图:

6.4打开bin,如下图:

examples:目录下包含Jmeter使用实例,打开里面是一个csv样例

ApacheJMeter.jar:JMeter源码包

jmeter.bat:windows的启动文件

jmeter.log:Jmeter运行日志文件

jmeter.sh:linux的启动文件

jmeter.properties:系统配置文件

jmeter-server.bat:windows分布式测试要用到的服务器,启动负载生成器服务文件

jmeter-server:Linux下启动负载生成器文件

shutdown.cmd windows 下 jmeter 关闭文件

stoptest.cmd windows 下 jmeter 测试停止文件

6.5打开docs,如下图:

api:api文件以及css和图像样式

6.6打开lib,如下图:

 此文件夹里面全是一些jar包

7.JMeter主要配置文件

7.1jmeter.properties配置文件

jmeter.properties,定义jmeter运行的关键配置;下边列举了一下这个文件的关键配置如下:

#默认语言设置language=en#捕捉cookie开关CookieManager.save.cookies=true#配置编辑器的字体和尺寸jsyntaxtextarea.font.family=宋体jsyntaxtextarea.font.size=20#配置默认编码格式sampleresult.default.encoding=UTF-8#SSL 配置:重点关注下面几个配置# 指定 HTTPS 协议层  # 指定 HTTPS 协议层https.default.protocol=TLS# 指定 SSL 版本,实际应用中可能需要修改https.default.protocol=SSLv3# 设置启动的协议https.socket.protocols=SSLv2Hello SSLv3 TLSv1# 缓存控制,控制 SSL 是否可以在多个迭代中重用https.use.cached.ssl.context=true#JMeter 测试项目自动备份配置# 设置是否启用自动备份,默认是 truejmeter.gui.action.save.backup_on_save=true# 设置自动备份目录,默认备份至 JMeter 根目录的 backups下jmeter.gui.action.save.backup_directory=# 设置自动备份项目数,默认为最近 10 个jmeter.gui.action.save.keep_backup_max_count=10#远程主机配置# 配置远程主机的 IP,默认为本机。用逗号","可以设置多个远程主机remote_hosts=127.0.0.1# 多个远程主机指定示例如下,其中:后为端口remote_hosts=127.0.0.1:1099,127.0.0.1:1200,127.0.0.1:1300对于 RMID 的配置请直接看配置文件中的选项说明#日志管理配置# 设置日志格式log_format_type=default# 设置日志输出级别log_level.jmeter=INFO# 设置 junit 日志输出级别log_level.jmeter.junit=DEBUG# 设置日志输出目标文件,默认为 jmeter.loglog_file=jmeter.log# jmeter.bat 关键配置修改
#为了更优化的使用 jmeter,需要对 jmeter.bat 中的一些配置根据当前机器的配置进行优化,这里进行关键配置项说明,大家根据自己的机器的配置来进行修改。jvm 相关配置,大概在 80 行左右,找到这些配置,对其中的数值根据当前机器的硬件配置来修改。set HEAP=-Xms2048m -Xmx2048mset NEW=-XX:NewSize=512m -XX:MaxNewSize=512mset SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%set TENURING=-XX:MaxTenuringThreshold=2if %current_minor% LEQ "8" (rem Increase MaxPermSize if you use a lot of Javascript in your Test Plan :set PERM=-XX:PermSize=512m -XX:MaxPermSize=1024m)# 设置输出报告模板格式jmeter.save.saveservice.output_format = csv

7.2system.properties配置文件

system.properties,定义Java进程的系统变量,通过System.getProperties()可查询。

7.3user.properties配置文件

user.properties,自定义配置,可覆盖jmeter.properties。

7.4拓展

1.配置文件可能存在优先级关系,好像user.properties会覆盖jmeter.properties,一般修改配置都是修改或者添加user.properties,不建议修改jmeter.properties

2.通过修改reportgenerator.properties的下面配置,可以减少采样时间,增加采样精度。生成的报告的其他内容也可以在这里修改。当然,建议这些修改,都放到user.properties里面去

3. 修改jmeter.properties里的这些配置,可以控制报告DashBoard的显示时间,建议这些配置放到user.properties里面去

4.输出的控制报告的显示时间如下:

8.小结

  好了,今天有关JMeter的知识就分享到这里吧,谢谢大家的阅读,如果您觉得还可以就给个推荐呗!!!


             【下面是我整理的2023年最全的软件测试工程师学习知识架构体系图】


一、Python编程入门到精通


二、接口自动化项目实战 

三、Web自动化项目实战


四、App自动化项目实战 

五、一线大厂简历


六、测试开发DevOps体系 

七、常用自动化测试工具


八、JMeter性能测试 

九、总结(尾部小惊喜)

生命不息,奋斗不止。每一份努力都不会被辜负,只要坚持不懈,终究会有回报。珍惜时间,追求梦想。不忘初心,砥砺前行。你的未来,由你掌握!

生命短暂,时间宝贵,我们无法预知未来会发生什么,但我们可以掌握当下。珍惜每一天,努力奋斗,让自己变得更加强大和优秀。坚定信念,执着追求,成功终将属于你!

只有不断地挑战自己,才能不断地超越自己。坚持追求梦想,勇敢前行,你就会发现奋斗的过程是如此美好而值得。相信自己,你一定可以做到!

                                    

相关文章:

Jmeter(一) - 从入门到精通 - 环境搭建(详解教程)

1.JMeter 介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序)。它可以用来测试静态和动态资源的性能,例如:静态文件,Java Servlet,CGI Scripts,Java Object,数据库和FTP服务器…...

外贸企业选择CRM的三大特点

外贸营销管理CRM云平台可以帮助外贸企业实现更高质量的营销管理和客户管理。无论是销售、市场营销或客户服务团队的成员,CRM都可以帮助企业更好地理解客户需求,并提供更好的服务。 1.便捷轻量级 云平台的一大优势是用户可以随时随地访问数据&#xff0…...

软件测试与游戏测试的区别

软件测试和游戏测试是两种不同领域的测试活动,它们之间存在一些区别,包括以下几个方面: 1. 测试目标 软件测试主要是验证和确认软件功能是否符合预期,通常关注软件的正确性、稳定性和兼容性等方面;而游戏测试则更关注游…...

Programming Abstractions in C阅读笔记:p72-p75

《Programming Abstractions In C》阅读P72-p75,每次阅读其实都有很多内容需要总结,这里摘抄其中一部分。 一、技术总结 1.字符串数组 学习《Programming Abstractions in C》第75页的时候,遇到一段代码: static string bigCitie…...

bash测试test详解

bash测试test详解 概述 任何相对完整的计算机语言都能够测试某个条件,然后根据测试的结果采取不同的动作。对于测试条件, Bash使用test命令、各种方括号和圆括号、if/then结构等来测试条件。 7.1. Test Constructs 一个if/then语句结构测试一个或多个命…...

你来问我来答,ChatGPT对话软件测试!主题互动

你来问我来答,ChatGPT对话软件测试! 大家好,我是聪明而有趣的ChatGPT。作为IT专家,我将竭尽全力为你解答技术问题,并提供适合各个级别人群理解的解决方案。无论你是初学者还是专业人士,我都会用智能、简单…...

无人机巢的作用及应用领域解析

无人机巢作为无人机领域的创新设备,不仅可以实现无人机的自主充电和电池交换,还为无人机提供安全便捷的存放空间。为了帮助大家更好地了解无人机巢,本文将着重解析无人机巢的作用和应用领域。 一、无人机巢的作用 无人机巢作为无人机技术的重…...

面试热题(环形链表II)

给定一个链表,返回链表开始入环的第一个节点。 从链表的头节点开始沿着 next 指针进入环的第一个节点为环的入口节点。如果链表无环,则返回 null。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引…...

策略模式:优雅地实现可扩展的设计

策略模式:优雅地实现可扩展的设计 摘要: 策略模式是一种常用的设计模式,它可以帮助我们实现可扩展的、灵活的代码结构。本文将通过一个计算器案例来介绍策略模式的概念、使用场景以及如何在实际项目中应用策略模式来提高代码的可维护性和可扩…...

从8个新 NFT AMM,聊聊能如何为 NFT 提供流动性

DeFi 的出现,开启了数字金融民主化的革命。其中,通过 AMM 自由创建流动性池极大地增加了 ERC-20 Token 的流动性,并为一些长尾 Token 解锁了价值的发现,因而今天在链上可以看到各种丰富的交易、借贷和杠杆等活动。 而另一方面&am…...

习题1.27

先写代码 (defn square [x] (* x x)) (defn expmod[base exp m](cond ( exp 0) 1(even? exp) (mod (square (expmod base (/ exp 2) m)) m):else (mod (* base (expmod base (- exp 1) m)) m)))(defn fermat-test[n](defn try-it [a](cond ( a n) (println "test end&qu…...

简单游戏截图_可控截取内容2

一个需求 我需要在场景中截取不同层级的截图(如只截模型或只截UI或只截外部相加看到的画面 或全都截或和Shader配合呈现人眼夜视仪热成像的画面切换) 将截图排到列表中,在场景UI中展示出来 如何做 相机要能够看到不同的画面 将当前帧画面存储下来 将存储的画面展示出…...

跨域+四种解决方法

文章目录 一、跨域二、JSONP实现跨域请求三、前端代理实现跨域请求四、后端设置请求头实现跨域请求五、Nginx代理实现跨域请求5.1 安装Nginx软件5.2 使用Ubuntu安装nginx 本文是在学习课程满神yyds后记录的笔记,强烈推荐读者去看此课程。 一、跨域 出于浏览器的同…...

RW-Everything的RwDrv.sys驱动调用

RW-Everything的RwDrv.sys驱动调用 一、RwDrv.sys二、示例代码三、总结 一、RwDrv.sys RW-Everything是一个硬件底层的工具,可用于物理内存、BIOS、PCI和IO端口的查看和修改,其基于驱动RwDrv.sys来实现,利用这个驱动可以实现系统的侵入。 二…...

0101docker mysql8镜像主从复制-运维-mysql

1 概述 主从复制是指将主数据库的DDL和DML操作通过二进制日志传到从库服务器,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。 Mysql支持一台主库同时向多台从库进行复制,从库同时可以…...

uC-OS2 V2.93 STM32L476 移植:系统启动篇

前言 前两篇已经 通过 STM32CubeMX 搭建了 NUCLEO-L476RG 的 STM32L476RG 的 裸机工程,下载了 uC-OS2 V2.93 的源码,并把 uC-OS2 的源文件加入 Keil MDK5 工程 本篇适配 uC-OS2 的 系统定时器(Systick)与 PendSV_Handler&#xf…...

redis 集群 1:李代桃僵 —— Sentinel

目前我们讲的 Redis 还只是主从方案,最终一致性。读者们可思考过,如果主节点凌晨 3 点突发宕机怎么办?就坐等运维从床上爬起来,然后手工进行从主切换,再通知所有的程序把地址统统改一遍重新上线么?毫无疑问…...

重置 Macbook 中MySQL 的 root 用户密码

Mac上好久前安装测试用的MySQL的Root密码忘记,猜了些常用密码都不对,只能重置密码。 重置密码 1、关闭MySQL服务,可以直接在系统偏好里关闭 sudo /usr/local/mysql/support-files/mysql.server stop 2、进入安装目录,启动安全…...

2308C++搞笑的概念化

前一篇的概念化,太搞笑 元<类 T>概念 可画要求(T&t,整 i){t.画(i);}; 构 方形{空 画(整 i){打印(2*i);} };元<可画 T>空 f(T&t,整 i){t.画(i);t.画(i); }空 主(){方形 e;f(e,33); }用得着那么复杂吗?...

修改node_modules里的源码

最近在工作中使用到一款生成二维码的依赖&#xff08;以vue项目为例讲解&#xff09;&#xff1a;vue-qr&#xff0c;安装的4.0.9版本的&#xff0c;在启动工程的时候报错&#xff1a; You may need an appropriate loader to handle this file type后我查阅各种资料发现 1&a…...

深层分析C++ 二叉搜索树(BST)完全指南:从概念原理、核心操作到底层实现

在计算机科学的世界里&#xff0c;数据结构就像是建筑的基石&#xff0c;而二叉搜索树&#xff08;Binary Search Tree&#xff0c;简称 BST&#xff09;则是其中一块极为重要的基石。它不仅在算法设计、数据库管理等领域有着广泛的应用&#xff0c;而且对于理解其他更复杂的数…...

接入Taotoken多模型路由后服务端响应稳定性提升感受

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 接入Taotoken多模型路由后服务端响应稳定性提升感受 1. 背景&#xff1a;生产环境对AI服务稳定性的需求 在构建依赖大模型API的生…...

避坑指南:从ADS导入DXF到Altium Designer时,如何解决封装丢失和铺铜失败的常见问题

从ADS到Altium Designer的工程迁移&#xff1a;封装与铺铜问题的深度解决方案 在射频与微波电路设计领域&#xff0c;工程师常常面临一个典型困境&#xff1a;如何在ADS&#xff08;Advanced Design System&#xff09;中完成高频仿真后&#xff0c;将设计无缝迁移到Altium Des…...

OneNote 2016/2019/2021多版本共存?教你管理不同版本的笔记同步与数据源

OneNote多版本共存管理&#xff1a;数据同步与版本控制的终极指南 在数字笔记领域&#xff0c;微软OneNote凭借其灵活的层级结构和多平台同步能力&#xff0c;成为许多知识工作者的核心工具。但鲜为人知的是&#xff0c;当同一台设备上同时运行多个OneNote版本&#xff08;如UW…...

NotebookLM引用格式生成失效真相:Google官方未公开的citation token截断限制(含绕过验证方案)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM引用格式生成失效真相&#xff1a;Google官方未公开的citation token截断限制&#xff08;含绕过验证方案&#xff09; NotebookLM 在处理长篇 PDF 或网页源时&#xff0c;常出现引用标记&am…...

别再手动发邮件了!用Power Automate为SharePoint列表搭建自动化审批流(保姆级教程)

别再手动发邮件了&#xff01;用Power Automate为SharePoint列表搭建自动化审批流&#xff08;保姆级教程&#xff09; 在快节奏的现代办公环境中&#xff0c;手动处理审批流程已成为效率的隐形杀手。想象一下&#xff1a;员工提交的请假申请需要HR手动转发邮件&#xff0c;采购…...

AltSnap:重新定义Windows窗口管理效率的革命性工具

AltSnap&#xff1a;重新定义Windows窗口管理效率的革命性工具 【免费下载链接】AltSnap Maintained continuation of Stefan Sundins AltDrag 项目地址: https://gitcode.com/gh_mirrors/al/AltSnap 你是否曾经在Windows系统中为繁琐的窗口操作而烦恼&#xff1f;当需要…...

别再死记硬背了!用Unity游戏开发中的真实案例,5分钟搞懂C#继承与多态

用Unity游戏案例5分钟掌握C#继承与多态的精髓 在Unity游戏开发中&#xff0c;面向对象编程&#xff08;OOP&#xff09;的概念如继承和多态不仅是理论上的抽象概念&#xff0c;更是构建灵活、可扩展游戏系统的基石。想象一下&#xff0c;当你需要设计一个包含多种敌人类型的游戏…...

【NI-DAQmx实战解析】连续采集中采样点设定的深层逻辑与性能优化

1. 连续采集的核心挑战与采样点设定的意义 第一次接触NI-DAQmx连续采集时&#xff0c;很多工程师都会疑惑&#xff1a;既然是连续采集&#xff0c;为什么还要指定采样点数&#xff1f;这个问题背后藏着数据采集系统的关键设计逻辑。想象一下&#xff0c;你正在用高速摄像机拍摄…...

热敏电阻测温实战:从原理到Arduino/CircuitPython代码实现

1. 项目概述&#xff1a;从电阻到温度的桥梁在嵌入式开发和电子DIY项目中&#xff0c;温度测量是一个极其常见的需求。无论是环境监测、设备状态反馈&#xff0c;还是简单的温控风扇&#xff0c;你都需要一个可靠的“温度计”。市面上有琳琅满目的温度传感器&#xff0c;从数字…...