当前介绍基于5.6.3版本
Jmeter核心原理
在介绍Jmeter面板之前,先总结一下J meter的运行原理。
JMeter 通过线程组(Thread Group)模拟多个并发用户,每个线程独立执行测试计划中的操作,类似真实用户的行为。
面板基础介绍
打开Jmeter之后我们可以大致将Jmeter 划分为三个区域 :顶部功能栏,左侧目录区域,右侧内容区域
功能区
功能区主要注意以下几个按钮的作用。
templates:快速创建测试模板,快速生成基础测试结构。
start:开始运行测试计划,模拟真实用户行为,适用于需要贴近实际场景的性能测试。
start no pauses:忽略所有定时器,请求之间无等待时间,连续发送请求。快速产生高负载压力,测试系统极限性能。
clear :清除当前所在监听器中的结果
5. clear all:清空所有监听器(如聚合报告、查看结果树)中的历史数据,释放内存。
search:搜索组件,在测试计划树中搜索组件名称(如查找所有 HTTP 请求)。
reset search:重置搜索条件。
补充:
stop:立即终止正在运行的测试(会中断所有线程),不执行清理操作。
shutDown:等待当前请求完成,并执行清理操作,优雅停止测试。
目录区
Test Plan 内容面板
Run Thread Groups consecutively(顺序执行线程组):默认不勾选,所有线程并行执行。勾选后线程按照顺序执行。
使用场景
需要先执行初始化操作(如数据准备),再执行主测试逻辑。
避免多个线程组同时运行导致资源竞争(如数据库锁冲突)。
Run tearDown Thread Groups after shutdown of main threads(主线程结束后执行tearDown线程组):
tearDown Thread Group
是特殊线程组,用于测试后的清理工作(如删除测试数据、释放资源)。勾选后,tearDown 线程组会在主线程组完全停止后执行。
使用场景
确保测试完成后自动清理环境(如删除临时用户、关闭连接)。
Functional Test Mode(功能测试模式):勾选后会保存完整的响应数据和采样器元数据(如请求头、响应体),方便调试和功能验证。会显著增加内存消耗,性能测试时建议关闭。
Add directory or jar to classpath(类路径管理): 向 JMeter 的类路径中添加外部目录或 JAR 文件,用于扩展功能或引入依赖库。比如:添加数据库驱动 JAR(如
mysql-connector-java.jar
)
Test Plan 操作详解
1. Add (添加)
对test plan 添加测试元素。
Threads (Users)
Threads (Users) -> Thread Group(线程组): 添加一个标准的线程组,用于定义虚拟用户(线程)的数量、启动时间(Ramp-up Period)和循环次数,是 JMeter 测试的基本执行单元。
Threads (Users) -> setUp Thread Group(设置线程组): 添加一个特殊的线程组,在主测试开始前运行,用于执行初始化任务,例如创建测试数据或建立连接。
Threads (Users) -> tearDown Thread Group(清理线程组): 添加一个特殊的线程组,在主测试结束后运行,用于执行清理任务,例如关闭连接或删除临时数据。
Threads (Users) -> Open Model Thread Group(开放模型线程组): 添加一个高级线程组,允许用户自定义线程行为的模型,适用于复杂的负载测试场景。
Config Element(配置元素): 添加配置元素,用于设置测试的默认值或提供数据
Listener(监听器): 添加监听器,用于收集、显示和分析测试结果,例如 View Results Tree(结果树视图)或 Summary Report(摘要报告)。
Timer(定时器): 添加定时器,用于在请求之间引入延迟,以模拟真实用户行为,例如 Constant Timer(固定定时器)或 Gaussian Random Timer(高斯随机定时器)。
Post Processors(后置处理器): 添加后置处理器,在采样器执行后运行,用于处理响应数据,例如提取变量(Regular Expression Extractor)。
Assertions(断言): 添加断言,用于验证服务器响应是否符合预期,例如 Response Assertion(响应断言)。
Test Fragment(测试片段): 添加一个可重用的测试计划片段,可以被其他元素引用。
Non-Test Elements(非测试元素): 添加非测试元素,例如 HTTP(S) Test Script Recorder(HTTP(S) 测试脚本录制器),用于录制测试脚本或代理相关任务。
2. Paste(粘贴)
用途: 将之前复制的元素(例如线程组、采样器或监听器)粘贴到 Test Plan 中,便于在测试结构内复制或移动元素。
3. Open...(打开...)
用途: 打开一个现有的 JMeter 测试计划文件(.jmx),并将其合并到当前 Test Plan 中,适用于将多个测试计划组合成一个。
注意
与工具栏的 Open 不同,此处的Open...
通常用于合并或导入外部组件到当前测试计划中(如导入另一个.jmx
文件的片段)。
4. Merge(合并)
用途: 与“Open...”类似,允许将另一个 JMeter 测试计划文件(.jmx)合并到当前 Test Plan 中,可能提供额外的选项来处理冲突或重复项。
5. Save Selection As...(另存为选定内容...)
用途: 将选定的 Test Plan 部分(或整个 Test Plan)保存为单独的 JMeter 文件(.jmx),便于创建可重用的测试片段或备份。保存常用组件作为模板(如登录请求模块)。
6. Copy Code(复制代码)
用途: 复制当前选中组件的 XML 格式代码(JMeter 测试计划的底层代码)。可以通过代码对比工具分析不同版本测试计划的差异。
7. Save Node As Image(将节点保存为图片)
用途: 将 Test Plan 或其子树保存为图片文件,生成测试计划结构图,用于文档或汇报。或者用户快速分享测试逻辑。
8. Save Screen As Image(将屏幕保存为图片)
用途: 捕获整个 JMeter 窗口(或可见屏幕)并保存为图片文件,适用于创建报告或文档的截图。
9. Enable(启用)& Disable(禁用)& Toggle(切换)
Enable:启用被禁用的组件(灰色图标变为彩色)。
Disable:禁用选中的组件(执行测试时跳过该组件)。
Toggle:切换启用/禁用状态(快捷键
Ctrl + T
)。
Thread Group 内容面板
1. Action to be taken after a Sampler error(采样器错误后的处理策略)
Continue:忽略错误,继续执行后续请求。测试需完整执行,即使部分请求失败(如监控系统对错误请求的容忍度)。
Start Next Thread Loop:终止当前迭代,立即开始下一次循环。
Stop Thread:停止当前线程,其他线程继续运行。单用户异常退出时不影响整体测试(如模拟部分用户因错误退出场景)。
Stop Test:等待当前所有线程执行完毕后,优雅停止整个测试。发现关键错误后安全终止测试(如数据库连接池耗尽需停止压测)。
Stop Test Now:立即强制停止所有线程。紧急终止测试(如服务器宕机,需立即停止所有请求)。
2. Thread Properties(线程属性)
Number of Threads (users):模拟的并发用户数,设置为
100
表示模拟 100 个用户同时操作。Ramp-up period (seconds):所有线程在多长时间内启动完毕,设为
60
秒时,100 个用户会在 60 秒内逐步启动(每秒约启动 1.67 个线程)。Loop Count:每个线程的循环次数,
1
:每个用户执行一次测试逻辑。 Infinite:无限循环,需手动停止或通过其他条件终止。Same user on each iteration:每次循环使用相同的用户参数,需重复同一用户操作(如测试同一账号的多次登录)。
Delay Thread creation until needed:延迟创建线程,直到需要时才启动,节省资源,适用于长时间测试(如逐步增加负载的场景)。
Specify Thread lifetime:设置线程组的运行时间和启动延迟,需精确控制测试时长(如持续压测 10 分钟)。
Duration (seconds):线程组的总运行时间,设为
600
表示线程组持续运行 10 分钟(600 秒),之后自动停止。Startup delay (seconds):线程组启动前的等待时间,设为
30
表示测试计划开始后,等待 30 秒再启动该线程组(用于协调多线程组的启动顺序)。
Sampler: HTTP request 内容面板
Name:标识当前采样器的名称,比如按照接口名来命名
comments:可以在这里添加关于该请求的备注或说明,例如请求的目的、测试场景或注意事项。
Protocol(协议):选择请求使用的协议。
Server Name or IP:输入目标服务器的域名或IP地址。
Port Number:指定服务器的端口号
复选框选项:
Redirect Automatically(自动重定向):如果勾选,工具会自动处理服务器返回的重定向响应(例如301或302状态码),直接跳转到新地址。
Follow Redirects(跟随重定向):如果勾选,工具会跟随重定向响应,但不会自动跳转,而是显示重定向的详细信息
Use KeepAlive(使用KeepAlive):如果勾选,启用HTTP Keep-Alive机制,允许在同一TCP连接上发送多个请求,减少连接建立的开销,提升性能。
Use multipart/form-data(使用multipart/form-data):如果勾选,请求将使用multipart/form-data格式发送数据,通常用于文件上传。
Browser-compatible headers(浏览器兼容头):如果勾选,工具会添加浏览器常用的请求头(例如User-Agent),以模拟浏览器发送请求。
Parameters:用于添加URL查询参数(例如?key=value)。
Body Data:用于输入请求体数据(当前选中)。
Files Upload:用于上传文件。 当前显示的是“Body Data”选项卡。
右上角面板
如果是黄色感叹号则是正常的,如果是红色数字的代表有问题
点击可以查看日志【这个日志是Jmeter工具使用加载信息的日志,并不是测试脚本运行的日志】