乐于分享
好东西不私藏

JMeter 插件安装与使用完全手册

JMeter 插件安装与使用完全手册

先说说什么是插件
刚学 JMeter 的时候,我就纳闷:怎么自带的元件有时候不够用?后来才知道,原来 JMeter 支持插件,可以装各种增强功能。比如想要漂亮的图表、模拟复杂的负载场景、测试数据库或者 Redis,这些都得靠插件。
插件主要分几种:
  • 功能插件:给 JMeter 增加新的元件,比如新的监听器、新的定时器
  • 协议插件:让 JMeter 能测试更多类型的系统,比如 Redis、Kafka
  • 可视化插件:让测试结果看起来更直观,比如各种图表
第一步:安装 Plugins Manager
说实话,手动下载插件再复制到 JMeter 目录这种事儿,我干过几次,真的挺麻烦的。后来发现了 Plugins Manager,简直是解放生产力。
下载地址:
https://jmeter-plugins.org/downloads/all/
找到 JMeterPluginsManager.jar下载就行
怎么装:
  1. 下载完成后,把这个 jar 文件复制到 JMeter 的 ‘lib/ext’ 目录
  2. 重启 JMeter
  3. 点击菜单栏的 ‘Options’ → ‘Plugins Manager’
  4. 弹出窗口就说明装好了
就这么简单,之后安装其他插件就不用这么麻烦了。
第二步:通过 Plugins Manager 装插件
打开 Plugins Manager 之后,你会看到两个标签页:
  • Installed Plugins:你已经装了的插件
  • Available Plugins:可以安装的插件
想装什么就勾选什么,然后点 ‘Apply Changes and Restart JMeter’,JMeter 会自动下载安装包、重启,省心。
第三步:常用插件介绍
1. Standard Set – 必装的基础包
下载地址: 通过 Plugins Manager 安装
能干啥:
装了这个之后,监听器里会多出几个实用的图表:
  • Response Times Over Time:看响应时间怎么变化的
  • Transactions per Second:每秒处理多少请求
  • Active Threads Over Time:看看有多少线程在跑
怎么用:
测试计划里添加监听器 → ‘jp@gc – Response Times Over Time’,跑完测试就能看到图表了。
2. Extras Set – 高级负载模拟
下载地址: 通过 Plugins Manager 安装
能干啥:
这个包含几种高级线程组,比 JMeter 自带的简单线程组灵活多了:
  • Ultimate Thread Group:可以设置多个负载阶梯,比如先加到 100 用户,保持 5 分钟,再加到 200 用户
  • Stepping Thread Group:阶梯式增加线程
怎么用:
添加线程组 → 选择 ‘jp@gc – Ultimate Thread Group’ → 点击 ‘Add Row’ 添加阶梯
3. WebDriver Sampler – 浏览器测试
下载地址: 通过 Plugins Manager 安装
能干啥:
这个可以控制真实浏览器来做测试,比如想测试用户登录页面加载要多久,用这个就能模拟真实浏览器环境。
前置要求:
装完插件之后,还需要下载浏览器的驱动:
  • Chrome 驱动:https://chromedriver.chromium.org/downloads
  • Firefox 驱动:https://github.com/mozilla/geckodriver/releases
下载对应版本的驱动,放到本地某个目录就行,比如 ‘D:\Tools\WebDriver\’
示例代码(Groovy):
import org.openqa.selenium.Byimport org.openqa.selenium.WebDriverimport org.openqa.selenium.chrome.ChromeDriverSystem.setProperty("webdriver.chrome.driver""D:/Tools/WebDriver/chromedriver.exe")WebDriver driver = new ChromeDriver()try {driver.get("https://example.com")driver.findElement(By.name("username")).sendKeys("test")driver.findElement(By.name("password")).sendKeys("123456")driver.findElement(By.id("login")).click()Thread.sleep(2000)finally {driver.quit()}
第四步:第三方库
有时候测试需要连接数据库、加密数据、发送特殊的 HTTP 请求,这时候就得添加第三方库了。
重要原则:
  • JMeter 插件 → 放到 ‘lib/ext’ 目录
  • 第三方 jar 包 → 放到 ‘lib’ 目录(不是 ext)
1. MySQL 数据库驱动
下载地址:
https://dev.mysql.com/downloads/connector/j/
文件: ‘mysql-connector-java-8.0.x.jar’
怎么装:
下载 jar 文件,丢到 ‘lib’目录,重启 JMeter
怎么用:
测试计划里添加 `JDBC Connection Configuration`,配置:Variable Name: mysql_dbJDBC Driver Class: com.mysql.cj.jdbc.DriverJDBC URLjdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTCUsername: rootPassword123456然后添加 `JDBC Request` 元件就可以执行 SQL 了。
2. PostgreSQL 数据库驱动
下载地址:
https://jdbc.postgresql.org/download/
文件: ‘postgresql-42.x.x.jar’
怎么装: 跟 MySQL 一样,下载后丢到 ‘lib’ 目录
怎么用: 配置跟 MySQL 类似,只是驱动类和 URL 改一下
3. Jackson – JSON 处理
下载地址:
https://github.com/FasterXML/jackson/releases
需要下载三个 jar:
  • ‘jackson-core-2.13.x.jar’
  • ‘jackson-databind-2.13.x.jar’
  • ‘jackson-annotations-2.13.x.jar’
怎么装: 三个都丢到 ‘lib’ 目录
怎么用:
Groovy 脚本里:
import com.fasterxml.jackson.databind.ObjectMapperdef mapper = new ObjectMapper()def json = mapper.readTree(prev.getResponseDataAsString())def name = json.data.name.asText()log.info("解析结果: ${name}")
其实 Groovy 自带 JsonSlurper 也可以处理 JSON,Jackson 功能更强大一些,比如支持复杂的序列化反序列化。
4. Bouncy Castle – 加密库
下载地址:
https://www.bouncycastle.org/latest_releases.html
需要下载两个 jar:
  • ‘bcprov-jdk15on-1.70.jar’
  • ‘bcpkix-jdk15on-1.70.jar’
怎么装: 丢到 `lib` 目录
怎么用:
import org.bouncycastle.jce.provider.BouncyCastleProviderimport java.security.SecuritySecurity.addProvider(new BouncyCastleProvider())// MD5 加密def md = MessageDigest.getInstance("MD5")def digest = md.digest("test".getBytes())log.info("MD5: " + digest.encodeHex())
做接口签名的时候经常会用到这个。
第五步:Redis 插件
有时候测试需要用到 Redis 存的数据,比如读取用户会话信息。
下载地址:
 https://jmeter-plugins.org/wiki/RedisDataSet/
怎么装: 通过 Plugins Manager 安装,搜索 ‘Redis Data Set’ 勾选安装
怎么用:
  1. 添加 ‘Redis Data Set’配置元件
  2. 填写 Redis 连接信息:
Variable Names: userId, tokenRedis Host: localhostRedis Port: 6379Redis Database: 0Redis Key: user:session:list
3.在 HTTP 请求里用 ‘${userId}’ 和 ‘${token}’ 引用数据
前提是你得有个 Redis 服务,没有的话得先装一个。
第六步:Kafka 插件
如果测试场景涉及到消息队列,Kafka 插件能帮上忙。
下载地址: 通过 Plugins Manager 安装,搜索 ‘Kafka’
怎么用:
配置 broker 地址和 topic:
Broker List: localhost:9092Topic: test-topicSerialization Classorg.apache.kafka.common.serialization.StringSerializer
常见问题
装了插件 JMeter 启动不了
  • 八成是插件冲突或者版本不兼容
  • 解决办法:把 ‘lib/ext’ 里的插件一个个删掉排查,或者查看 ‘bin\jmeter.log’ 找原因
找不到类/方法
  • 检查 jar 包是不是放错目录了,要放 ‘lib’ 不是 ‘lib/ext’
  • 也有可能是版本冲突,删掉旧版本试试
WebDriver 跑不起来
  • 确认浏览器版本和驱动版本得对应上
  • 检查 ‘webdriver.chrome.driver’ 路径对不对
JDBC 连不上数据库
  • 确认驱动 jar 放对了目录
  • 检查数据库服务有没有启动
  • 看看 JDBC URL 格式对不对
目录结构
D:\Jmeter\apache-jmeter-5.6.3\├── bin\                    # 启动脚本│   ├── jmeter.bat          # 启动文件│   └── jmeter.log          # 日志文件,出了问题先看这个├── lib\                    # 类库目录│   ├── ext\                # 插件放这里│   │   ├── JMeterPluginsManager.jar│   │   └── 其他插件.jar│   └── *.jar               # 第三方库放这里
总结
  1. Plugins Manager 装好之后,其他插件基本不用手动下载了
  2. JMeter 插件 放 ‘lib/ext’,第三方库 放 ‘lib’
  3. 遇到问题先看 ‘jmeter.log’,大部分错误原因都能找到
  4. 不是插件装越多越好,用不到的别装,会影响 JMeter 启动速度

性能测试工具选型求助:JMeter/LR/?你们在用那个?