JMeter 文件目录介绍
JMeter 的目录结构如下图所示:

(1)bin 目录:可执行文件目录
主要理解其下面的以下文件以及命令。
- jmeter.bat:Windows 的启动命令。
- jmeter.log:日志文件。
- jmeter.sh:Linux 系统下的启动文件。
- jmeter.properties:系统配置文件,如配置编码格式。
- jmeter-server.bat:Windows 分布测试要用到的服务器配置。
- jmeter-server:Linux 分布式测试要用到的服务器配置。
(2)docs:接口文档目录
对 JMeter 集成的接口进行说明。
(3)extras:扩展插件目录
例如:进行持续集成时,会将用到的 Ant、Maven 的插件放在这个目录下面。
(4)lib:JMeter 运行所依赖的插件目录
该目录下面全部都是 jar 包,JMeter 会自动在 JMETER_HOME/lib 和 ext 目录下寻找需要的类。
这里补充一下,如果在 Jmeter 中运行脚本时报如下错误:

即发生 java.lang.NOClassDefFoundError 的错误,都是因为缺少依赖的 jar 造成的。
(5)licenses:Jmeter 证书目录
这个目录没有什么好说的,理解即可。
(6)printable_docs:用户操作手册目录
这个目录下面都是官网 API。
(7)backups:脚本备份目录
这个目录是在 3.3 版本后才加入的新功能,防止我们误删脚本,所有的脚本都会自动备份在里面。
JMeter 功能概要
JMeter 功能组成部分
可以概括为四大神器,具体如下。
- 资源生成器:用于生成测试过程中服务器、负载机的资源代码(类似于 LR 中的 VuGen)。
- 用户运行器:一般情况下是一个脚本运行引擎,根据脚本要求去模拟指定的用户行为(类似于 LR 中的 Controller)。
- 报表生成器:根据测试中实时的数据生成报表,提供可视化的数据显示方式(类似于 LR 中的 Analysis)。
- 负载发生器:用于产生负载,通常以多线程或是多进程的方式模拟用户行为(类似于 LR 中的 Load Generators)。
TestPlan(测试计划)

用来描述一个性能测试,包含与本次性能测试所有相关的功能。也就是说:实施一次性能测试的所有内容都是基于一个测试计划的(可以理解为 LR 的一个测试场景)。
有了测试计划后,我们要依照需求添加八大元件,下面依次做个解释。
线程组(Threads(Users))

- setUp Thread Group:一种特殊类型的 ThreadGroup(线程组),可用于执行预测试操作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程在测试前进行定期线程组的执行。可以理解为 LR 的 init() 初始化操作。
- tearDown Thread Group:一种特殊类型的 ThreadGroup(线程组),可用于执行测试后操作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程在测试结束后进行定期线程组的执行。可以理解为 LR 的 end() 结束录制操作。
- 线程组:这个是我们通常情况下添加运行的线程组。可以理解为是一个虚拟用户组,线程组中的每个线程都可以理解为是一个虚拟用户,线程组中包含的线程数量在测试执行过程中是不会发生改变的,类似于 LR 的 action()。
测试片段(Test Fragment)

测试片段是控制器上的一个特殊的线程组,它在测试树上与线程组处于一个层级。它与线程组有所不同的是:它一般情况下不被执行,除非是一个模块控制器或者是被控制器所引用时才会被执行。
线程组下的8类可执行元件
(1)配置元件(Config Element)
配置元件:用于提供对静态数据的支持,如 CSV Data Set config 可以将本地数据文件形成数据池(Data pool)。

(2)定时器(Timer)
定时器用于操作之间设置等待时间,类似于 LR 中的思考时间,JMeter 中可以定义 Bean Shell Timer、Constant Throughput Timer、固定定时器等不同类型的 Timer。

(3)前置处理器(Per Processors)
用于在实际的请求发出之前对即将发出的请求进行特殊处理。例如,我们每次访问某个 URL 时,都会生成一个 sessionID,就可以写在这里面,即初始化浏览器。

(4)后置处理器(post Processors)
用于对 Sampler 发出请求后得到的服务器响应进行处理。一般用来提取响应数据中的特定数据。

(5)断言(Assertions)
断言一般用来设置检查点,用以保证性能测试过程中的数据交互与预期一致。

(6)监听器(Listener)
用来对测试结果数据进行处理和可视化展示的一系列元件,包含图形结果、查看结果树、聚合报告等等,都是我们经常会用到的监控元件。需要说明的是:这个监听器不是用来监听系统资源的元件。
(7)取样器(Sampler)与逻辑控制器(Logic Controller)
说明:取样器(Sampler)与逻辑控制器(Logic Controller)是最最重要的两种控制器,用这两个元件来驱动一个测试。
- 取样器(Sampler):是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,JMeter 支持多种不同的 Sampler,如 HTTP 请求、Java 请求等,每一种类型的 Sampler 都可以根据设置的参数向服务器发出不同类型的请求,即类似于 LR 选择协议的过程。

- 逻辑控制器:逻辑控制器包含两类元件,具体如下。
一类用于控制 test plan 中 Sampler 节点发送请求的逻辑顺序的控制器。常用的有如果(if)控制器、switch Controller、Runtime Controller、循环控制器。
例如,我们给一个 HTTP 请求添加一个循环控制器,循环次数设置为2。

此时 HTTP 请求就会循环执行两次。我们可以查看结果树验证下:

请先忽略 HTTP 请求的错误。
另一类是用来组织可控制 Sampler 节点的,如事务控制器、吞吐量控制器。


浙公网安备 33010602011771号