七、Jmeter5.6命令行执行

本文介绍了JMeter命令行和GUI两种执行方式的适用场景,如命令行适用于自动化、批量等测试,GUI适用于单个测试、实时调试等。还阐述了JMeter的使用信息和命令行选项,以及生成HTML报告和整理书面报告的方法,为测试结果传达和性能分析提供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

命令行执行

  1. 自动化执行:将性能测试集成到持续集成/持续交付(CI/CD)流程中,实现自动化执行。
  2. 批量执行:需要在多个环境、配置或数据集上执行多个测试计划。
  3. 远程执行:在远程服务器上执行性能测试,例如分布式测试环境或云服务器。
  4. 资源优化:在资源受限的环境中运行测试,例如模拟大量用户并发访问。
  5. 性能监控:实时监控性能指标并将数据导出到外部监控工具进行处理和展示。

GUI 执行

  1. 单个测试执行:只需要执行单个测试计划,无需自动化或批量执行。
  2. 实时调试和修改:需要实时调试和修改测试计划,例如在测试执行过程中发现问题并需要即时修改脚本。
  3. 小规模测试:进行小规模的性能测试,模拟少量用户并发访问。

这些情况只是一般性的指导,具体使用命令行执行还是 GUI 执行取决于你的具体需求和情况。在做出决策时,考虑自动化需求、批量执行需求、远程执行需求、资源限制、性能监控以及实时调试和修改的需求,选择适合的执行方式。

注意:

当进行压力测试时,是否需要在图形用户界面(GUI)上执行压测取决于项目的规模和并发量。对于小项目或并发量较低的情况,可以直接在GUI上运行测试。如果压测机的数量较多或者压测机的配置高于被压测机,也可以通过GUI运行测试。这在面试过程中,有些人可能会错误地认为压力测试一定需要使用非GUI方式,但这是片面的观点。

另外,如果用户要求满足1万个并发用户运行测试,这将需要较高的服务器配置才能支撑。在这种情况下,我们可以将服务器配置写入性能测试报告中,并提供最大并发数的建议供用户参考。这样用户就能了解到服务器配置对于满足并发需求的重要性,并可以根据报告中的建议进行决策。

一、使用信息

帮助

jmeter -h  

参数信息(也就是第二大点)

jmeter.bat(Windows)/jmeter.sh(Linux) -?

GUI

jmeter.bat(Windows)/jmeter.sh(Linux) 

非 GUI

jmeter.bat(Windows)/jmeter.sh(Linux)  -n -t test-file [-p property-file] [-l results-file] [-j log-file] -e -o [Path to output folder]

-n: 指定以非GUI模式运行JMeter。这意味着JMeter将在命令行中执行测试计划,而不会打开图形用户界面。

-t test-file: 指定要运行的测试文件。你需要提供测试计划文件的路径和名称。

-p property-file(可选): 指定属性文件,用于加载JMeter的配置。属性文件可以包含自定义的配置参数。

-l results-file(可选): 指定结果文件的路径和名称,用于保存测试结果。测试结束后,JMeter将结果保存为 CSV 格式的文件。

-j log-file(可选): 指定日志文件的路径和名称,用于记录JMeter的日志信息。

-e -o [Path to output folder]: 生成报告。使用这两个选项可以指定生成HTML报告的输出文件夹的路径。JMeter将根据测试结果生成一个包含图表和统计数据的HTML报告。


总结起来,这个命令的作用是在非GUI模式下运行指定的JMeter测试文件,并将测试结果保存为CSV文件。然后,根据这些结果生成一个包含图表和统计数据的HTML报告。请注意,[Path to output folder] 是一个占位符,你需要替换为实际的输出文件夹的路径。确保指定的路径是有效的,并且你有足够的权限在该位置创建文件和文件夹。

举例说明

jmeter.bat(Windows)/jmeter.sh(Linux) -n -t test.jmx -l results.jtl -j jmeter.log -e -o report

-n: 指定以非 GUI 模式运行 JMeter。

-t test.jmx: 指定要运行的测试文件为 test.jmx。该文件应该是一个 JMeter 测试计划的 XML 文件,它包含了你要执行的测试脚本和配置。

-l results.jtl: 指定结果文件的路径和名称为 results.jtl。在测试执行期间,JMeter 会将结果以 CSV 格式写入到这个文件中。

-j jmeter.log: 指定日志文件的路径和名称为 jmeter.log。JMeter 会将日志信息写入到这个文件中,包括错误信息、警告和其他运行时日志。

-e -o report: 生成报告。使用 -e 选项告诉 JMeter 在执行结束后生成报告,-o report 则指定了报告的输出文件夹为 report。在这个例子中,报告将生成在当前工作目录下的 report 文件夹中。

CSV文件转换为HTML 报告

jmeter.bat(Windows)/jmeter.sh(Linux) -g [csv results file] -o [path to output folder (empty or not existing)]

-g [csv results file]: 指定要生成报告的 CSV 结果文件。你需要提供一个已经存在的 CSV 文件作为输入,该文件包含了 JMeter 测试的结果数据。
-o [path to output folder (empty or not existing)]: 指定报告的输出文件夹路径。你可以提供一个空的文件夹路径或者一个不存在的文件夹路径,JMeter 将在指定的路径下生成报告。

举例说明

Windows: jmeter.bat -g results.csv -o report
Linux: jmeter.sh -g results.csv -o report

-g results.csv: 指定要生成报告的 CSV 结果文件为 results.csv。你需要将实际的 CSV 结果文件路径和文件名替换为 results.csv。
-o report: 指定报告的输出文件夹为report。在这个例子中,报告将生成在当前工作目录下的report文件夹中。

设置代理服务器

jmeter.bat(Windows)/jmeter.sh(Linux) -H [your.proxy.server] -P [your proxy server port]

-H [your.proxy.server]: 这个参数用于指定代理服务器的主机名或 IP 地址。你需要将 [your.proxy.server] 替换为实际的代理服务器主机名或 IP 地址。
-P [your proxy server port]: 这个参数用于指定代理服务器的端口号。你需要将 [your proxy server port] 替换为实际的代理服务器端口号。

举例说明

Windows: jmeter.bat -H [your.proxy.server] -P [your proxy server port]
Linux: jmeter.sh -H [your.proxy.server] -P [your proxy server port]

-H [your.proxy.server]: 指定代理服务器的主机名或IP地址。你需要将[your.proxy.server]替换为实际的代理服务器主机名或 IP 地址。
-P [your proxy server port]: 指定代理服务器的端口号。你需要将[your proxy server port]替换为实际的代理服务器端口号。

启动Jmeter服务器,用于分布式压测(即远程启动)

jmeter-server.bat(Windows)/jmeter-server(Linux)

Windows:jmeter-server.bat
Linux:./jmeter-server

举例说明

jmeter -n -t testplan.jmx -R 192.168.0.101,192.168.0.102

-n 表示以非GUI模式运行JMeter,-t testplan.jmx 指定要运行的测试计划文件。
-R 后跟着要连接的JMeter服务器的IP地址或主机名,多个服务器之间用逗号分隔。
在这个例子中,JMeter将连接到IP地址为192.168.0.101和192.168.0.102的两台服务器上执行负载测试。

jmeter -n -t testplan.jmx -r

-r 表示 JMeter 将在本地机器上启动一个服务器实例,并将其作为一个远程服务器来执行负载测试。这对于简化分布式负载测试的设置很有用,因为你不需要单独启动远程服务器实例。

二、命令行选项

打印命令行选项并退出

该选项不需要参数
jmeter --?

 打印使用信息并退出

打印使用信息并退出
jmeter -h 或 --help

 打印版本信息并退出

该选项不需要参数
jmeter -v 或 --version

指定要使用的Jmeter属性文件

参数是属性文件的路径。
jmeter -p 或 --propfile /path/to/my.properties

 添加额外的 JMeter 属性文件

参数是属性文件的路径。
jmeter -q 或 --addprop /path/to/extra.properties

指定要运行的JMeter测试文件(.jmx) 

参数是测试文件的路径。
jmeter -t 或 --testfile /path/to/mytest.jmx

将样本记录到指定的文件

参数是日志文件的路径。
jmeter -l 或 --logfile /path/to/results.jtl

指定 JMeter 的日志配置文件(log4j2.xml)

参数是配置文件的路径。
jmeter -i 或 --jmeterlogconf /path/to/log4j2.xml

 以非 GUI 模式运行JMeter

该选项不需要参数
jmeter -n 或 --nongui

 运行JMeter服务器

该选项不需要参数
jmeter -s 或 --server

设置代理服务器的代理方案

参数是代理方案的名称
jmeter  -E 或 --proxyScheme https

 设置 JMeter 使用的代理服务器

参数是代理服务器的主机地址
jmeter -H 或 --proxyHost proxy.example.com

 设置 JMeter 使用的代理服务器端口

参数是端口号
jmeter -P 或 --proxyPort 8080

 设置非代理主机列表

参数是非代理主机的列表,使用|分隔多个主机。
jmeter -N 或 --nonProxyHosts *.apache.org|localhost

设置 JMeter 使用的代理服务器用户名

参数是用户名
jmeter -u 或 --username myusername

设置 JMeter 使用的代理服务器密码 

参数是密码
jmeter -a 或 --password mypassword

定义额外的 JMeter 属性 

参数是属性名称和属性值的组合,使用=分隔
jmeter -J 或 --jmeterproperty myproperty=value

 定义全局属性(发送到服务器)

参数是属性名称和属性值的组合,使用=分隔。
jmeter -G 或 --globalproperty port=123 或 jmeter -G global.properties

 定义额外的系统属性

参数是属性名称和属性值的组合,使用=分隔。
jmeter -D 或 --systemproperty myproperty=value

 指定额外的系统属性文件

参数是属性文件的路径
jmeter -S 或 --systemPropertyFile /path/to/system.properties

 在启动测试之前强制删除现有的结果文件和 Web 报告文件夹(如果存在)

这个选项不需要参数
jmeter -f 或 --forceDeleteResultFile

 设置日志级别

参数是日志类别和级别的组合,使用=分隔。
jmeter -L 或 --loglevel jorphan=INFO 或 jmeter -L 或 --loglevel jmeter.util=DEBUG

启动远程服务器(根据 remote_hosts 定义)

该选项不需要参数
jmeter -r 或 --runremote

 启动指定的远程服务器(覆盖 remote_hosts)

参数是远程服务器的主机名或IP地址,使用英文逗号分隔多个服务器。
jmeter -R 或 --remotestart server1,server2

 使用指定的 JMeter 主目录

参数是主目录的路径
jmeter -d 或 --homedir /path/to/jmeter

 在测试结束时退出远程服务器(非 GUI 模式)

这个选项不需要参数
jmeter -X 或 --remoteexit

 仅生成报告仪表板

参数是结果文件的路径
jmeter -g 或 --reportonly /path/to/results.jtl

 在负载测试后生成报告仪表板

该选项不需要参数
jmeter -e 或 --reportatendofloadtests

指定报告仪表板的输出文件夹 

参数是输出文件夹的路径
jmeter -o 或 --reportoutputfolder /path/to/report

根据我们自身需要进行取用。我们通过gui进行相关脚本配置完成后,并成功运行,常见命令行输入如下:

jmeter -n -t test_cmd.jmx -l test.jtl

注意:我的jmx文件,是放在桌面下的,这里应该-n -t 应该是绝对路径,生成的jtl文件也应该是绝对路径,再写该文章的时候,发现一个问题,若不配置参数绝对路径,就不会出现打印的摘要信息。 

运行效果,如图: 

522afd0c60fc62cd04a2633bb60ca11a.png

  • summary + 1 in 00:00:00 = 5.2/s Avg: 49 Min: 49 Max: 49 Err: 0 (0.00%) Active: 1 Started: 1 Finished: 0:这是测试第一行摘要信息。它显示在过去的 0 秒内执行了 1 个请求,平均每秒执行 5.2 个请求。其中,平均响应时间为 49 毫秒,最短响应时间为 49 毫秒,最长响应时间为 49 毫秒。错误数为 0,表示没有发生错误。当前活跃线程数为 1,已启动线程数为 1,已完成的线程数为 0。

  • summary + 1132 in 00:00:26 = 43.3/s Avg: 45 Min: 16 Max: 113 Err: 0 (0.00%) Active: 2 Started: 2 Finished: 0:这是测试第二行摘要信息。它显示在过去的 26 秒内执行了 1132 个请求,平均每秒执行 43.3 个请求。其他指标和前面的摘要信息类似。

  • summary = 1133 in 00:00:26 = 43.0/s Avg: 45 Min: 16 Max: 113 Err: 0 (0.00%):这是整个测试的总体摘要信息。它显示在过去的 26 秒内执行了 1133 个请求,平均每秒执行 43.0 个请求。其他指标和前面的摘要信息类似。

  • summary + 167 in 00:00:04 = 44.1/s Avg: 45 Min: 17 Max: 79 Err: 0 (0.00%) Active: 0 Started: 2 Finished: 2:这是测试第三行摘要信息。它显示在过去的 4 秒内执行了 167 个请求,平均每秒执行 44.1 个请求。其他指标和前面的摘要信息类似。

  • summary = 1300 in 00:00:30 = 43.1/s Avg: 45 Min: 16 Max: 113 Err: 0 (0.00%):这是测试第四行的总体摘要信息。它显示在过去的 30 秒内执行了 1300 个请求,平均每秒执行 43.1 个请求。其他指标和前面的摘要信息类似。

  • Tidying up ... @ August 8, 2023 3:34:33 PM CST (1691480073810):这表示 JMeter 正在进行一些清理操作,释放资源。时间戳表示清理操作开始的时间。

  • ... end of run:这表示测试运行结束

会在桌面生成两个文件一个是log文件、jtl文件。

 需要注意的是:在我们通过命令行执行的时候,一定注意时间

48bb1f577f1570bba2b8d3441ceec5d2.png

不然会一直发送请求,就完全没有参考意义的。

 查看jtl文件,如图:

5208dd5d5315279a70c8245f762a4ad5.png

 察看结果树需要注意的是,再我们导入jtl文件时,是没有响应内容的。如图:

4dada853d7dd58619f0475ce4da4519f.png

可以配置如下:
1.在bin目录下user.properties追加配置:

jmeter.save.saveservice.output_format=xml
jmeter.save.saveservice.response_data=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.responseHeaders=true

48fa79e866def71d2ec6e205694507fd.png

 2.在bin目录下修改配置,搜索jmeter.save.saveservice.response_code和jmeter.save.saveservice.samplerData。如图:

1593477b88e22f672f2a9fea17e43249.png

注意:在非GUI模式下,是默认不保存的。修改完配置后重启,再此导入即可见响应信息内容

0985c5ae0e7f07ccb39a29f2504a09b2.png

d48681fb7c09c05408a5d429484ab74c.png

 ddd09f6a11c88402d56f6cde6d0a4b93.png

当生成 JMeter 自带的 HTML 报告时,该报告通常以原生的 HTML 格式呈现,对于非技术人员或开发人员来说可能不太友好。建议需要整理一个正式的书面报告,进行适当的整理和提取关键信息,以便更好地传达测试结果和性能分析。

  1. 生成 HTML 报告:使用 JMeter 的命令行选项 -e -o testfile 生成 HTML 报告。这将在指定的 testfile 目录下生成报告文件。

  2. 报告整理:打开生成的 HTML 报告,并浏览其中的信息。根据你的需求和目标,选择要在书面报告中呈现的关键信息。

  3. 截图选取:根据报告中的图表和数据,选择适当的部分进行截图。这些截图可以是性能趋势图、响应时间分布图、吞吐量图等。确保截图清晰可读,并与报告内容相符。

  4. 写入报告:在书面报告中,使用文字描述性地解释每个截图所展示的内容和观察结果。可以提供一些关键指标的解释,例如平均响应时间、吞吐量、错误率等。

  5. 结论和建议:根据测试结果和观察,提供一份结论和建议部分,总结系统的性能表现,并提出优化建议或改进措施。

通过整理和提取关键信息,并结合截图和文字解释,你可以为非技术人员或开发人员提供一份更易于理解和阅读的报告,以便更好地传达测试结果和性能分析,并提供有针对性的建议。

jmeter -n -t test_cmd.jmx -l test.jtl -e -o testfile

 效果如图:

d33c95afa2162aaae6ac179f69ba8ae5.png

 其他命令常见的如开启jmeter服务、远程启动相关命令,至于其他根据自己需要。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值