Java程序员难道就不配拥有测试工具?
当然不!最牛逼的 Apache-Jmeter 就是为你量身打造的 测压工具
JMeter官网与下载
Apache-JMeter 官网:https://jmeter.apache.org/download_jmeter.cgi
下载JMeter
去人家Apache-JMeter官网下载 zip包,就行了。
解压JMter - 启动JMeter
你下载的 ZIP 文件夹 并 打开解压的目录,bin目录下面有个 jmeter.bat 文件

双击 启动jmeter.bat 打开界面如图所示:

我这里是设置中选择中文启动的,所以是中文界面。
JMeter 开启中文UI
操作 在Jmetet 主界面 找到 --> 选项 - 选择语言 - 中文(简体)

了解JMeter操作元素之间的层级关系
JMeter核心元素
- 测试计划 (Test Plain):是组织和管理测试的主要容器。它是 JMeter 测试的顶层元素,包含了所有的测试组件和配置元素。
- 线程组(Thread Group):是测试计划的元素,在 JMeter 中用于模拟并发用户的主要组件之一。它定义了测试计划中的并发用户数、循环次数、启动延迟等参数,以及每个用户要执行的请求序列。
线程组的元素
线程组的”元素分类”
这里一大堆,只是分类,看起来文字越多,令人越烦,很多分类初学我们压根不关注,我们只需要关注分类高亮内容即可。
元素分类你甚至不需要关注,不同JMeter的分类名称、规则也是不尽相同的。所以大致了解高亮内容就行了。
- 逻辑控制器(Logic Controller):逻辑控制器用于控制请求的执行顺序和条件。常见的逻辑控制器包括 If 控制器、While 控制器、Switch 控制器等,它们根据特定的条件或逻辑来决定是否执行请求。
- 配置元素(Config Element):配置元素用于提供请求的配置信息,例如 HTTP 请求默认值、用户定义的变量、CSV 数据文件配置等。它们可以影响请求的行为和参数。
- 定时器(Timer):定时器用于模拟用户的请求间隔时间。您可以使用固定定时器(Constant Timer)或随机定时器(Random Timer)来控制请求之间的时间间隔。
- 前置处理器(Pre-Processor)和后置处理器(Post-Processor):前置处理器和后置处理器用于在发送请求之前或之后对请求进行预处理或后处理。例如,可以使用正则表达式提取响应中的数据,或者使用 BeanShell 脚本对请求进行动态修改。
- 监听器(Listener):监听器用于收集和显示测试结果。您可以添加各种类型的监听器来查看请求的响应时间、错误率、并发用户数等信息。常见的监听器包括查看结果树(View Results Tree)、聚合报告(Aggregate Report)、图表(Graphs)等。
- 断言(Assertion):断言用于验证请求的响应是否符合预期。您可以添加各种类型的断言来检查响应的内容、状态码、响应时间等。常见的断言包括响应断言(Response Assertion)、大小断言(Size Assertion)等。
- 配置元件(Configuration Element):配置元件用于配置 JMeter 的一些全局设置,如代理服务器、 SSL 设置、用户定义的变量等。
线程组元素”具体实例”
- HTTP请求:线程组执行的元素。
- 查看结果树:线程组执行后统计的元素。
- 汇总图:线程组执行后统计的元素。
- 响应时间图:线程组执行后统计的元素。
太多了我不介绍了,如图,自己去创建出来吧

实操:JMeter线程组循环发送请求
我们先编辑”线程组”

上图有个不合理的地方,就是Ramp-UP时间(秒),原则上我们统计的维度是每秒钟X个,推荐写成1
| 参数名称 | 英文 | 含义 | 示例说明 |
|---|---|---|---|
| 线程数 | Number of Threads (users) | 模拟的虚拟用户数量。JMeter 会创建这么多并发线程去执行请求。 | 填 10 表示 10 个并发用户同时发请求。 |
| Ramp-Up 时间 | Ramp-Up Period (seconds) | 表示 JMeter 在多少秒内把所有线程逐步启动。 | 填 10 秒 + 线程数 10 ⇒ 每秒启动 1 个线程。填 0 ⇒ 全部线程瞬间启动。 |
| 循环次数 | Loop Count | 每个线程执行测试请求的次数。 | 填 1 ⇒ 每个线程只跑一轮。填 10 ⇒ 每个线程执行 10 次请求。勾选“永远”表示无限循环直到你手动停止。 |
| Same user on each iteration | 每次循环是否用同一个用户 | 对带登录态的接口很有用 —— 勾选表示每次循环都保持同一个 Session,不重新登录。 | 压测需要持续 session 时建议勾选。 |
| 延迟启动线程组 | Delay Thread creation until needed | 表示是否在第一次运行时再动态启动线程。 | 一般保持未勾选(默认)。 |
| 调度器(Scheduler) | Scheduler | 你可以设置固定开始和结束时间或持续时长,自动执行压力测试。 | 常用于定时自动跑压测任务。 |
每秒请求数(RPS) ≈ 线程数 × 循环次数 / 测试总时长
而 Ramp-Up 时间决定压力增长速度:
- Ramp-Up 越短 → 压力陡增
- Ramp-Up 越长 → 压力平缓上升
实战小技巧
| 场景 | 建议 |
|---|---|
| 想模拟平滑流量上升 | Ramp-Up 时间 = 线程数(比如 100 线程 → Ramp-Up 100 秒) |
| 想测试系统崩溃点 | Ramp-Up 设得非常短(瞬时爆发) |
| 想测大量循环业务 | 勾选“Same user”,防止每次都重新登录 |
| 想精准控制时长 | 开启“调度器”,设置开始时间和持续时长 |
| 想避免 UI 假卡顿 | 用 Non-GUI 模式运行(命令行方式) |
案例说明
| 序号 | 测试场景 | 线程数(并发用户数) | Ramp‑Up 时间(秒) | 循环次数 | 是否勾选 “Same user on each iteration” | 场景说明与目的 |
|---|---|---|---|---|---|---|
| ① | 功能调试 / 接口验证 | 1 | 0 | 1~5 | 可不勾选 | 开发阶段验证接口正确性、响应逻辑,不关注性能。 |
| ② | 小流量并发测试 | 10 | 10 | 10 | 勾选 | 模拟 10 个用户在 10 秒内陆续请求,用于验证基本并发稳定性。 |
| ③ | 即时高并发冲击测试 | 100 | 0~2 | 1 | 勾选 | 瞬间启动全部线程,观察系统峰值承受能力或是否出现错误。 |
| ④ | 平滑升压测试 | 100 | 100 | 10 | 勾选 | 压力在一分钟内缓慢增加,看系统在渐进负载下的性能变化。 |
| ⑤ | 长时间稳定性测试 / 耐压测试 | 50 | 50 | 永远(√ 调度 3600 秒) | 勾选 | 多用户持续运行长时间,监控内存泄漏、性能衰退。 |
| ⑥ | 登录态业务回归测试 | 20 | 20 | 5 | 勾选 | 每个用户保持登录状态反复执行业务操作,验证 session 管理正确性。 |
| ⑦ | 接口批量循环访问 | 1 | 0 | 1000 | 不勾选 | 单线程连续请求同一接口,用于测试缓存命中率、接口性能波动。 |
| ⑧ | 容量测试(逐步提升线程数) | 10 → 50 → 100 | 各阶段递增 | 永远或调度固定时间 | 勾选 | 分阶段上压测,找系统瓶颈点,对接监控工具。 |
| ⑨ | 场景组合测试(登录+查询+下单) | 30 | 30 | 永远(√ 调度 600 秒) | 勾选 | 综合业务流程模拟真实用户行为,测试整体性能。 |
“线程组”添加”HTTP请求”
随便简单设置一些内容。

启动前,会让你去保存这个文件,不保存也能运行!
我们先看下启动前 文章阅读数:

启动”线程组”

我们启动后 大约 10s,在去看下文章阅读数吧:

阅读数是 205 了 。
这种形式,会多服务器进行大量的网络压力、CPU压力等等。请不要利用此长时间测试,更不能利用此 DDoS 别人!
JMeter 监听器(监听器用于收集和显示测试结果)
注意:监听器的结果是多次线程组多次执行后的结果,如果想获得单次线程组的执行结果,每次执行线程组前需要清理一下监听器下面内容的数据哦!
例如:"查看结果树" - "右键" - "清除" 即可
察看结果树/查看结果树
注意这里不同JMeter版本汉化UI不同导致名称有点差异!
添加”察看结果树”步骤
"线程组" - "添加" - "监听器" - "查看结果树"
注意,如果 创建多个 察看结果树 ,那么每个 结果树都会有结果,实际我们只需要一个 结果树就够了。创建 多个结果树,无非增加JMeter的的压力。

创建结果 如图:

直接 启动我们的JMeter线程组, 随便 选择一个 结果树的 结果

完成!!!
汇总报告
添加”汇总报告”步骤
"线程组" - "添加" - "监听器" - "汇总报告"

线程组发送请求后,会有一个统计结果

JMeter也支持将统计结果转换为图
"线程组" - "添加" - "监听器" - "汇总图"
"线程组" - "添加" - "监听器" - "响应时间图"
自己研究下吧,我就不贴图了。
JMeter技巧补充
JMeter导入cURL

导入cURL弹窗截图

导入结果

模拟多个用户发送请求
JMeter可以从文件中获取数据作为参数发送请求。
${token}
第三方平台不会及时更新本文最新内容。如果发现本文资料不全,可访问本人的Java博客搜索:标题关键字。以获取最新全部资料 ❤
免责声明: 本站文章旨在总结学习互联网技术过程中的经验与见解。任何人不得将其用于违法或违规活动!所有违规内容均由个人自行承担,与作者无关。

评论(0)