前言
在jmeter中提供了一系列的不同的组件,每一种组件都提供了某类功能的实现,用于支持性能测试的实施。
请看下图,jmeter的核心组件构成。

学习、研究jmeter之前,深入了解jmeter的基本组件及其作用是必须的。接下来我们开始讨论基于jmetere进行性能测试必须掌握的组件,以便大家逐步掌握jemter的核心基本能力。
下面的几个组件是入门jmeter必须掌握的:
- Thread Group
- Samplers
- Listeners
- Configuration
Thread Group(线程组)
线程组是一系列线程的集合,每一个线程代表着一个正在使用应用程序的用户。在jmeter中,每个线程意味着模拟一个真实用户向服务器发起请求。
在jmeter中,线程组组件运行用户设置线程数量、初始化方式等等配置。
例如,如果你设置线程数为100,那么jmeter将创建并模拟测试100个用户请求到服务器端。
如下图所示:

Samplers
我们常用的jmeter测试有HTTP、FTP、JDBC协议,以及其他各种支持的协议。
在上节我们已经知道线程组件用于模拟用户请求至服务器端。
但还未讲解如何在线程组件中实现某种请求类型(比如如何发起HTTP请求?)。
在本节中,我们将演示如何利用Samplers组件的元素来实现各类请求类型。
我们先看一下在jmeter中Samplers组件已经实现了哪些协议的支持。如下图所示:

下面我们就重要的Samplers组件元素进行一一讲解,以便大家有个初步的了解。
- BeanShell Sampler
这个组件元素允许我们在jmeter中写Bean Shell脚本,写这个脚本有什么作用?意味着你可以完全的控制和实现自己的需要。灵活定制,自然也就有难度,你得有点脚本功底。
参见图说明:

注:每一个Sampler都有自己独立的beanshell解析器,并且sampler只能在自己的线程中调用(意味着不可跨线程使用)。
- FTP Request
FTP Request元素提供了测试ftp服务器的能力,这个元素让我们能够去测试ftp的上传、下载功能。
下面我们看一下ftp元素的基本配置说明:

注:我们经常在windows和linux直接通过ftp进行文件传输,建议勾选Use Binary Mode,避免编码问题。
- HTTP Request
HTTP Request提供了HTTP/HTTPS协议的测试支持能力。
下面我们一起看看HTTP Request元素的基本配置说明,了解下基本的功能。

- Java Request
Java Request提供了测试java API的支持,但要注意要测试的java API需要有对应的测试类,该测试类必须继承AbstractJavaSamplerClient。
示例如下:
待测类class Sum; -> 生成sum.jar
继承至AbstractJavaSamplerClient的测试类Class TestSum(AbstractJavaSamplerClient) -> 生成testSum.jar
==注:==
一个java测试应该要实现以下几个方法,以便jmeter java sampler可以正确调用:

更详细的后续出专题讲解,本篇不举具体示例了。
注意testSum.jar要能调用sum.jar。
将上述sum.jar、testSum.jar拷贝至jmeter安装目录的lib/ext下。
下面我们看看如何在jmeter配置java测试。

对于JDBC Request、JMS Point-to-Point、JSR223、SMTP、JUnit Request等Sampler组件元素就不一一说明了在后续的分享中,主要基于HTTP和java请求来分享实战。
Listeners(监听器)
在jmeter中Listeners提供了执行结果生成和显示能力的支持,提供了树形结构、表、图形和日志方式。
下面我们先看下几种结果显示示例图。
图形模式:

树模式:

表模式:

日志方式

Configuration Elements(即配置元件)
配置元件包含了Samplers下各种Sampler的默认配置设置,如果有配置默认配置,在Sampler下对应的sampler就会使用该默认配置。
下面我们看看我们主要用到的默认配置有哪些。

下面进行逐一的说明。
- CSV Data Set Config
CSV Data Set Config主要用于读取csv格式的文件中数据,实现参数化。

- HTTP Cookie Manager
HTTP Cookie Manager主要用于默认cookie管理。

- HTTP Request Defaults
HTTP Request Defaults用于配置HTTP request的默认值,例如IP、端口等等都设置好默认值后,在后续HTTP request元素里就不需要重复设置,节省时间。

总结
本次就jmeter常用的相关组件元素进行了大概的说明,以便大家有个基本的了解,为后续深入学习和实践打下基础。
网友评论