1.1 起源、定位与发展演进


1.1 起源、定位与发展演进

本节摘要:JMeter 是 Apache 基金会的开源性能测试工具,2003 年起步,现在能测多种协议。本节讲它的发展脉络和定位,帮你理解它为什么长成现在这样。

学习目标

阅读完本节,你应当能够:

  1. 说出 JMeter 的起源和定位
  2. 概述它的发展阶段
  3. 理解它和 Gatling、Locust 等工具的差异

概念脉络

一、JMeter 是什么

Apache JMeter 是一个 100% 纯 Java 的开源性能测试工具,最初用来测 Web 应用的压力,后来扩展到数据库、JMS、TCP、FTP、邮件等多种协议。它的核心能力是模拟大量并发用户向目标系统发请求,采集响应时间和成功率,生成性能报告

定位:性能测试与负载测试工具。它不是功能测试工具(虽然能做断言),不是监控工具(虽然能采集指标),核心是"加压 + 测量"。

二、发展演进

图 1-1 JMeter 演进时间线

图 1-1 JMeter 演进时间线

  • 2003 起步:Apache Jakarta 项目分支,主要测 HTTP/FTP,单进程模型
  • 2009 分布式:支持 Remote Testing 主从协同,BeanShell 扩展
  • 2015 工程化:maven 插件融入 CI、Backend Listener 对接时序库、JSR223 普及
  • 2020+ 云原生:官方 Docker 镜像、Kubernetes Operator 方案、Taurus 声明式编排

三、和同类工具的差异

工具 语言 特点 适合
JMeter Java GUI+CLI、协议广、生态成熟 通用、团队协作
Gatling Scala 基于Akka、代码即脚本、报告漂亮 开发主导、声明式
Locust Python 代码写脚本、轻量、易扩展 灵活定制、开发友好
K6 Go JS 脚本、性能高、云原生 现代化、CI 友好

JMeter 的优势是协议覆盖广、GUI 易上手、生态成熟;劣势是基于 JVM 单机并发有限、GUI 笨重、脚本 XML 不友好。选工具看团队技术栈和场景。

四、为什么还用 JMeter

新兴工具不少,JMeter 仍占主流因为:

  • 协议支持广,HTTP/JDBC/JMS/TCP 等开箱即用
  • GUI 录制调试方便,门槛低
  • 插件生态丰富,特殊需求多能找到插件
  • 团队协作时 XML 脚本可读、可版本管理

⚠️ 常见坑:拿 JMeter 当浏览器测前端渲染——JMeter HTTP 采样器不执行 JS、不渲染页面,测不了前端性能。前端性能用浏览器工具或 WebDriver Sampler。

💡 关键直觉:JMeter 是"加压+测量"工具,协议广、GUI 易上手、生态成熟。它不测前端渲染、不是监控工具。选它看团队和场景。

要点速记

  • 定位:Apache 开源性能/负载测试工具,模拟并发用户加压并测量。
  • 演进:2003 HTTP 起步→2009 分布式→2015 工程化→2020+ 云原生。
  • vs 同类:协议广/GUI 易上手/生态成熟是优势,JVM 单机并发有限/GUI 笨重是劣势。
  • 不测前端:HTTP 采样器不执行 JS,前端性能用浏览器工具。
  • 选工具看团队技术栈和场景,没有绝对优劣。

下一节讲 JMeter 的核心术语——线程组、采样器、监听器这些基本概念。

常见问题

  1. JMeter 和 LoadRunner 怎么选? 预算充足、需要企业级支持选 LoadRunner;追求开源、轻量、易集成选 JMeter。JMeter 的插件生态(jmeter-plugins.org)提供了大量扩展,社区活跃度更高。

  2. JMeter 算不算压测标准工具? 在开源领域 JMeter 是事实标准,大量互联网公司的压测平台基于它构建;商业领域 LoadRunner、k6、Gatling 也占有一席之地。

  3. 为什么要了解演进历史? 理解版本演进能帮你判断网上教程的适用版本,也能理解为何某些特性(如分布式、云原生)是后期才加入的。

对比表格

维度 JMeter Gatling Locust
语言 Java Scala Python
脚本形式 GUI 配置 + 少量脚本 代码化 DSL 代码化
学习曲线 平缓 较陡 中等
报告 内置丰富 内置精美 需插件
分布式 原生支持 需配置 原生支持
协议覆盖 广(HTTP/JDBC/JMS 等) 以 HTTP 为主 以 HTTP 为主

小结

JMeter 作为开源压测工具的事实标准,其定位是"加压 + 测量":通过线程组模拟并发、采样器发起请求、监听器展示指标。理解它的发展脉络,有助于判断功能边界与选型。

动手体验

在深入理论之前,建议先跑通一个最小示例感受 JMeter 的工作方式:打开 JMeter 后新建测试计划,添加一个线程组(线程数 1)、一个 HTTP 请求采样器(填任意公开接口地址)、一个查看结果树监听器,点击运行即可看到请求与响应明细。通过这个最小闭环,你能直观理解"线程组发请求、采样器指定目标、监听器看结果"的三段式模型,为后续系统学习奠定感性基础。

历史版本要点

JMeter 主要版本演进:2.x 奠定基础架构(线程组、采样器、断言体系);3.x 引入 WebSocket 支持与性能优化;4.x 改善 GUI 与报告;5.x 增加 JSON/YAML 支持、改进分布式与 HTML 报告模板。理解版本差异有助于判断教程与插件的兼容性,也提醒我们在生产环境固定版本、谨慎升级。

命令行示例

jmeter -v # 查看版本 jmeter -n -t plan.jmx -l result.jtl # CLI 执行 jmeter -g result.jtl -o report_dir # 生成报告

快速验证

使用命令行模式执行一次简单压测并生成 HTML 报告,对比 GUI 与 CLI 两种执行方式的资源占用差异,体会工程实践中推荐 CLI 执行的原因。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U