盘点JMeter不为人知那一些细节
Jmeter工作原理
向服务器提交请求,并从服务器取回请求返回的结果。即建立一个线程池,多线程运行取样器产生大量负载,在运行过程中通过断言来验证结果的正确性,通过监听器来记录测试结果.
文章内容以Jmeter5.0 版本为分享, 前提条件, 需要有jdk1.8 以上环境.
我们都知道jmeter是以java语言开发的, 它是免费的,跨平台的,开源的apache项目,且无需安装
相比于LR, 它的优势是显而易见的.
我们将Jmeter解压后可以看到如下结构目录:

1.Backups目录
文件备份目录, 备份jmeter运行时的脚本,备份文件的存储位置
2.Bin 目录
bin存放了配置文件(比如jvm设置,日志设置), 核心可执行文件, 启动文件, 报告生成方式, 启动jar包, 示例脚本等.

启动文件就在bin目录下, 点击jmeter 就可以启动jmeter应用程序了.
bin/jmeter
网上有很多文章介绍如何修改jmeter内存配置, Windows环境在jmeter.bat , Linux或Mac os 在jmeter.sh文件里, 我们通过实际操作发现修改这两文件没有作用, 那该怎么办呢? 官网肯定会给出解释.
我们来查阅一下官方文档提供的权威说明
https://jmeter.apache.org/usermanual/get-started.html#non_gui
直译:Jmeter需要设置一些环境变量去配置JVM 使用, 这些变量的设置在shell启动jmeter script 里. 翻译的如有偏颇请勿拍砖!
原来配置jvm内存在这里

我们打开看下

果然我们在jmeter 的启动脚本里找到了它.
这里是配置jmeter所需的jvm空间,我们要找的是jmeter启动后,运行时内存大小该如何配置, 接着往下看官网的解释

在这里我们发现了jmeter start后,java运行时内存管理

我们依然在对应的文件里顺利的找到了.
以上设置完成后, 我们保存重启jmeter.
我们设置jmeter好以后, 去验证一下jmeter启动后内存设置情况, 这里我们用到了Jconsole远程连接来查看jmeter内存情况.

从中我们不难发现, 和我们配置是相符的.
Bin/jmeter-server
在使用Jmeter进行接口的性能测试时,由于Jmeter 是JAVA应用,对于CPU和内存的消耗比较大, 当需要模拟数以万计的并发用户时,使用单台机器模拟所有并发用户就有些力不从心, 甚至会引起JAVA内存溢出错误。为了让jmeter工具提供更大的负载能,可以使用Jmeter提供的分布式功能来启动多台电脑来分压测试. 模型是一台Master, 多台slave,jmeter分布式 很好的解决了单台运算能力不足的问题.
Bin/jmeter.properties
一个重要的核心配置文件, 包含配置默认语言, 远程主机配置, 以及各类结果文件配置, 报告输出格式等等

知识点扩展:Jmeter的命令行功能也是非常强大的,在你的系统上配置好jmeter环境变量,直接指向bin目录,就可以使用如下脚本了jmeter -n -t demo.jmx -l test.jtl
参数说明:-h 帮助 -> 打印出有用的信息并退出-n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter-t 测试文件 -> 要运行的 JMeter 测试脚本文件-l 日志文件 -> 记录结果的文件

docs目录
放置JMeter API 离线文档,是一个类似于java doc的在线帮助文档

extras目录
扩展插件目录。提供了对Ant的支持,可以使用Ant来实现自动化测试,如批量脚本执行,产生html格式的报表,测试运行时,可以把测试数据记录下来,jmeter会自动生成一个.jtl文件,将该文件放到extras目录下,运行"ant -Dtest=文件名 report",就可以生成测试统计报表。
lib目录
JMeter 依赖的一些基础包放在 lib 根目录下,比如我们扩展了Java 请求,这个扩展是为了完成特定的任务,而这个特定的任务程序需要依赖其他的 Jar 包,那么这些 Jar 包就放置在 lib 根目录下。
JMeter 组件以 Jar 包的形式放置在 lib/ext 目录下,如果我们要扩展 JMeter 组件,扩展后的 Jar 包即放在此目录下,JMeter 启动时会加载此目录下的 Jar 包。
此地无论是我们自己扩展的还是第三方扩展jar包, 都在这个目录下进行管理, 因为jmeter启动的时候会对扩展包进行读取.

jmeter提供丰富的插件工具包可供下载 https://jmeter-plugins.org/install/Install/粗略的统计下大概有80个可供下载

并且支持在线和离线2种方式可供选择, 即使是在线方式安装插件,也会默认放在lib/ext目录下.
如何在线安装插件包我们在之前文章已经分享过.
license目录
JMeter licenses 相关声明信息放在此文件夹,全部是文本文件,对测试没有任何实际意义.
printable_docs目录
jmeter提供的在线帮助文档, 类似于一个用户学习文档, 是我们学习了解jmeter的最佳渠道.

软件测试交流718897738,测试工具测试资料都给你整理好了,免去网络上到处找寻资料的免费,节约时间高效率学习软件测试。
总结:
测试是一门技术, 更是一门艺术. 也许你今天拥有的技术, 明天就会被淘汰. 同时需要我们开拓思维和眼界, 积极拥抱变化, 学习新知识, 新方法,新技能, 计算机领域讲究的是实践, 学习更要讲究方式方法. 学习和动手一定要结合, 光看不练,犹如看武功秘籍, 是永远成不了武功大侠的.
盘点JMeter不为人知那一些细节的更多相关文章
- JMeter 性能测试进阶实战
课程简介 本课程制作的主要目的是为了让大家快速上手 JMeter,期间穿插了大量主流项目中用到的技术,以及结合当今主流微服务技术提供了测试 Dubbo 接口.Java 工程技术具体实施方案,注重实践. ...
- Jmeter +Jenkins +Ant 集成发送邮件报告
[TOC] 一.什么是接口测试? 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换,传递和控制管理过程,以及系 ...
- JMeter常用测试元件—学习笔记
线程组 Ramp-Up Period:告诉JMeter达到最大线程数需要多长时间.假定共有10个线程,Ramp-Up Period为100秒,那么JMeter就会在100秒内启动所有线程,并让它们运转 ...
- Jmeter默认报告优化
一.本文目的: 之前写了两篇文章搭建持续集成接口测试平台(Jenkins+Ant+Jmeter)和ANT批量执行Jmeter脚本,功能实现上都没有什么问题,但是最后生成的报告有一点小问题,虽然不影响使 ...
- Jmeter之Badboy录制脚本及简化脚本http请求(三)
测试脚本的精简对于测试来说是一项基础的能力,因为你得看懂一行脚本代表的是什么意思,是怎么运行的,做了什么内容.才能得到对应的测试结果分析. 上一节介绍的代理服务器的录制童鞋们也明白了,有点麻烦,而且不 ...
- 快销品 车销批发管理手持终端PDA系统 打印开单 入库 库存 盘点多功能一体
手持POS终端PDA移动开单 PDA通过扫描商品条码移动开单,实现便携式办公,伴随式销售,浩瀚技术研发团队开发的一款最新产品,PDA能通过WIFI无线局域网.GPRS互联网直接与主机连接,让公司业务人 ...
- 使用 Jmeter 做 Web 接口测试
接口测试概述 定义 API testing is a type of software testing that involves testing application programming in ...
- 盘点mysql中容易被我们误会的地方
引语:mysql作为数据库的一大主力军,到处存在于我们各种系统中,相信大家都不陌生!但是,你知道你能用不代表你知道细节,那我们就来盘点盘点其中一些我们平时不太注意的地方,一来为了有趣,二来为了不让自己 ...
- Jmeter组件执行顺序与作用域
一.Jmeter重要组件: 1)配置元件---Config Element: 用于初始化默认值和变量,以便后续采样器使用.配置元件大其作用域的初始阶段处理,配置元件仅对其所在的测试树分支有效,如,在同 ...
随机推荐
- 基于 abp vNext 和 .NET Core 开发博客项目 - Blazor 实战系列(八)
系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 ...
- CODING DevOps 系列第三课:云计算、云原生模式下 DevOps 的建设
本文首先会和大家分享当前整个应用生命周期的演变历程,然后讲解云计算模式下 DevOps 建设包含的过程.流程规范和标准,最后讲解云原生时代到来会带来哪些改变,以及标准化的建设会有哪些改变和突破. 应用 ...
- Fabric网络组织与主节点选举
一.Fabric网络组织 Fabric网络组织按如下结构组成:Fabric网络-->Channel通道-->组织(成员)-->节点.即整个网络由数个通道组成,每个通道都由多个组织构成 ...
- 成为python程序员,对疫情过后的毕业生来说,真是一个不错的方向吗?
Python最近几年,一直被炒得很火,这其中有商业因素,但更重要的是即将到来的人工智能时代,而python就恰好是最适合的编程语言. 所以无论是在职的人,还是在校的学生,都想着跟上这一趋势,但,在今年 ...
- 如何去除List集合中重复的元素
1.通过循环进行删除 public static void removeDuplicate(List list) { for ( int i = 0 ; i < list.size() - 1 ...
- StringBuider 在什么条件下、如何使用效率更高?
声明:本文首发于博客园,作者:后青春期的Keats:地址:https://www.cnblogs.com/keatsCoder/ 转载请注明,谢谢! 引言 都说 StringBuilder 在处理字符 ...
- React源码之组件的实现与首次渲染
react: v15.0.0 本文讲 组件如何编译 以及 ReactDOM.render 的渲染过程. babel 的编译 babel 将 React JSX 编译成 JavaScript. 在 ba ...
- idea2020.1.2破解,亲测可行,激活至2089年!
一.下载最新版IDEA2020安装包 官网:https://www.jetbrains.com/idea/download/ 旧版:https://www.jetbrains.com/idea/dow ...
- 什么是EL表达式?
1.什么是EL表达式? EL(Expression Language) 是为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 JSP 中简 ...
- Python中的错误和异常
前言 错误是程序中的问题,由于这些问题而导致程序停止执行.另一方面,当某些内部事件发生时,会引发异常,从而改变程序的正常流程. python中会发生两种类型的错误. 语法错误 逻辑错误(异常) 语法错 ...