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性能测试 

九、总结(尾部小惊喜)

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

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

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

                                    

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

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

相关文章

Hadoop学习:深入解析MapReduce的大数据魔力(二)

Hadoop学习:深入解析MapReduce的大数据魔力(二) 3.3 Shuffle 机制3.3.1 Shuffle 机制3.3.2 Partition 分区3.3.3 Partition 分区案例实操3.3.4 WritableComparable 排序3.3.5 Combiner 合并 3.4 OutputFormat 数据输出3.4.1 OutputFormat 接口…

HttpServletRequest和HttpServletResponse的获取与使用

相关笔记:【JavaWeb之Servlet】 文章目录 1、Servlet复习2、HttpServletRequest的使用3、HttpServletResponse的使用4、获取HttpServletRequest和HttpServletResponse 1、Servlet复习 Servlet是JavaWeb的三大组件之一: ServletFilter 过滤器Listener 监…

医学图像处理

医学图像处理 opencv批量分片高像素图像病理图像色彩特征提取基于 imgaug、skimage 实现色彩增强基于 Cycle-GAN 完成染色标准化 病理图像细微特征提取自动数据标注分类场景下的医学图像分析分割场景下的医学图像分析检测场景下的医学图像分析 , i ] k 8 < * I opencv批量…

4.DNS和负载均衡

文章目录 coreDNS概念部署croeDNS测试 kubernetes多master集群结构master节点部署 负载均衡配置部署nginx做四层反向代理安装高可用 keepalivednginx监控脚本修改k8s中组件的配置文件 coreDNS 概念 coreDNS是kubernetes的默认DNS实现。可以为集群中的service资源创建一个资源名…

PyTorch中加载模型权重 A匹配B|A不匹配B

在做深度学习项目时&#xff0c;从头训练一个模型是需要大量时间和算力的&#xff0c;我们通常采用加载预训练权重的方法&#xff0c;而我们往往面临以下几种情况&#xff1a; 未修改网络&#xff0c;A与B一致 很简单&#xff0c;直接.load_state_dict() net ANet(num_cla…

Java课设--学生信息管理系统(例1)

文章目录 前提一、运行效果二、Text实现类三、Manage选择类四、StudentWay学生方法类五、StudnetSql数据库类 前题 例1为无使用GUI图形界面&#xff0c;例2使用GUI图形界面&#xff01; 首先自己的JDBC驱动已经接好了&#xff0c;连接自己的数据库没有问题。连接数据库可以看…

《吐血整理》高级系列教程-吃透Fiddler抓包教程(33)-Fiddler如何抓取WebSocket数据包

1.简介 本来打算再写一篇这个系列的文章也要和小伙伴或者童鞋们说再见了&#xff0c;可是有人留言问WebSocket包和小程序的包不会抓&#xff0c;那就关于这两个知识点宏哥就再水两篇文章。 2.什么是Socket&#xff1f; 在计算机通信领域&#xff0c;socket 被翻译为“套接字…

物联网||不一样的点灯实验(2)|通过使用CMSIS库函数实现点灯实验-学习笔记(12)

文章目录 通过使用CMSIS库函数实现点灯实验1 如何使用CMIS库2 如何利用CMSIS库操作IO 两种实现方法的比较课后作业:完整代码&#xff1a;LED.C:test.c:led.h:systick.h:systick.c: 通过使用CMSIS库函数实现点灯实验 1 如何使用CMIS库 #####如何使用此驱动#####[. .](#)启用GPI…

langchain-ChatGLM源码阅读:参数设置

文章目录 上下文关联对话轮数向量匹配 top k控制生成质量的参数参数设置心得 上下文关联 上下文关联相关参数&#xff1a; 知识相关度阈值score_threshold内容条数k是否启用上下文关联chunk_conent上下文最大长度chunk_size 其主要作用是在所在文档中扩展与当前query相似度较高…

RichTextBox基本用法

作用&#xff1a;富文本编辑器&#xff0c;支持多种文本展示 常用属性&#xff1a; 允许显示多行 自动换行 展示滚动条 ScrollBars属性值&#xff1a; 1、Both&#xff1a;只有当文本超过RichTextBox的宽度或长度时&#xff0c;才显示水平滚动条或垂直滚动条&#xff0c;或两…

基于粒子群优化算法的配电网光伏储能双层优化配置模型[IEEE33节点](选址定容)(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f308;4 Matlab代码、数据、讲解 &#x1f4a5;1 概述 由于能源的日益匮乏&#xff0c;电力需求的不断增长等&#xff0c;配电网中分布式能源渗透率不断提高&#xff0c;且逐渐向主动配电网方…

【雕爷学编程】Arduino动手做(184)---快餐盒盖,极低成本搭建机器人实验平台2

吃完快餐粥&#xff0c;除了粥的味道不错之外&#xff0c;我对个快餐盒的圆盖子产生了兴趣&#xff0c;能否做个极低成本的简易机器人呢&#xff1f;也许只需要二十元左右 知识点&#xff1a;轮子&#xff08;wheel&#xff09; 中国词语。是用不同材料制成的圆形滚动物体。简…

Mac端口扫描工具

端口扫描工具 Mac内置了一个网络工具 网络使用工具 按住 Command 空格 然后搜索 “网络实用工具” 或 “Network Utility” 即可 域名/ip转换Lookup ping功能 端口扫描 https://zhhll.icu/2022/Mac/端口扫描工具/ 本文由 mdnice 多平台发布

【具生智能】前沿思考与总结(DALL-E-Bot TinyBot)

1. DALL-E-Bot DALL-E-Bot: Introducing Web-Scale Diffusion Models to Robotics (robot-learning.uk) **&#xff08;2023-05-04&#xff09;**DALL-E-Bot: Introducing Web-Scale Diffusion Models to Robotics DALL-E-Bot&#xff1a;将网络规模的扩散模型引入机器人 第…

C语言----动态内存分配(malloc calloc relloc free)超全知识点

目录 一.动态内存函数 1.malloc 2.free 3.calloc 4.malloc和calloc的区别 5.realloc 二.动态内存分配的常见错误 1.对null进行解引用操作 2.对动态开辟空间的越界访问 3.对非动态开辟内存使用free释放 4.使用free释放动态开辟内存的一部分 5.对同一块动态内存多次…

物联网|按键实验---学习I/O的输入及中断的编程|读取I/O的输入信号|中断的编程方法|轮询实现按键捕获实验-学习笔记(13)

文章目录 实验目的了解擒键的工作原理及电原理图 STM32F407中如何读取I/O的输入信号STM32F407对中断的编程方法通过轮询实现按键捕获实验如何利用已有内工程创建新工程通过轮询实现按键捕获代码实现及分析1 代码的流程分析2 代码的实现 Tips:下载错误的解决 实验目的 了解擒键…

Leetcode-每日一题【剑指 Offer 09. 用两个栈实现队列】

题目 用两个栈实现一个队列。队列的声明如下&#xff0c;请实现它的两个函数 appendTail 和 deleteHead &#xff0c;分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素&#xff0c;deleteHead 操作返回 -1 ) 示例 1&#xff1a; 输入&#xff1a; [&…

springboot第34集:ES 搜索,nginx

#用search after解决深分页性能问题 #第一页 GET /bank/_search {"size": 10,"sort": [{"account_number": {"order": "asc"}}] }#第二页 GET /bank/_search {"size": 10,"sort": [{"account_numb…

【WEB逆向】前端全报文加密的分析技巧

由于前端全报文加密&#xff0c;无法从变量的全文搜索来快速定位加密函数对加密参数的定位&#xff08;全局搜索还有个弊病是编码混淆的js也不能全局搜到&#xff0c;需要进一步分析判定混淆的编码形式后再全局搜编码后的变量名&#xff09;&#xff0c;因此可利用xhr断点全局拦…

LLM reasoners 入门实验 24点游戏

LLM reasoners Ber666/llm-reasoners 实验过程 实验样例24games&#xff0c;examples/tot_game24&#xff0c;在inference.py中配置使用代理和open ai的api key。 首先安装依赖 git clone https://github.com/Ber666/llm-reasoners cd llm-reasoners pip install -e .然后…