使用命令行方式运行 JMeter 脚本

时间:2022-11-09 00:06:01

For non-interactive testing, you may choose to run JMeter without the GUI. To do so, use the following command options

-n This specifies JMeter is to run in non-gui mode

-t [name of JMX file that contains the Test Plan].

-l [name of JTL file to log sample results to].

-r Run all remote servers specified in JMeter.properties (or remote servers specified on command line by overriding properties)

The script also lets you specify the optional firewall/proxy server information:

-H [proxy server hostname or ip address]

-P [proxy server port]

Example : JMeter -n -t my_test.jmx -l log.jtl -H my.proxy.server -P 8000

上面这段说明来自 JMeter 的官方用户手册。其中提到了使用命令行方式运行 JMeter 脚本的方法。只有几个简单的参数,很直观,用起来也很方便。好处是可以节省一些系统资源。

今天尝试 300 个虚拟用户连续运行 5 分钟时——使用 GUI 方式,发现开始运行后不久 UI 就失去了响应,并提示一个有关  AWT 的错误,最终只能把 Java 进程结束掉。但是使用命令行方式时却很稳定。
不过当在命令行方式下尝试 500 个虚拟用户连续运行 5 分钟时,JMeter 抛出了一个 Out of Memory 的异常并退出了进程。

Note:
1.执行命令前要检查当前目录是否是 %JMeter_Home%\bin 目录;
2.如果 JMeter 脚本不在当前目录,需要指定完整的路径;如果要把执行的结果保存在其他地方也要指定完整的路径。



 使用非 GUI 模式,即命令行模式运行 JMeter 测试脚本能够大大缩减所需要的系统资源。使用命令
jmeter -n -t <testplan filename> -l <listener filename>
(比如 jmeter -n -t testplan.jmx -l listener.jtl)
        我的第一次使用命令行执行测试脚本时,看到的输出如下:
D:\Jmeter\bin>jmeter -n -t testplan.jmx -l listener.jtl
 Created the tree successfully using testplan.jmx
 Starting the test @ Fri Oct 28 07:50:29 CST 2009 (1256255429500)
 Waiting for possible shutdown message on port 4445
 Tidying up ...    @ Fri Oct 28 07:50:34 CST 2009 (1256255434468)
 ... end of run

        这些信息仅仅告诉我们执行成功啦。但是我想要看到本次测试的更多结果,JMeter 提供了一个可以显示结果概要的监听器,它在命令行中也可以进行输出显示。
        我们可以通过给我们的测试计划添加 "聚合报告" 来达到这个目的。
使用命令行方式运行 JMeter 脚本
        现在我们在命令行重新键入上边那个命令:
D:\Jmeter\bin>jmeter -n -t testplan.jmx -l listener.jtl
Created the tree successfully using testplan.jmx
Starting the test @ Thu Oct 29 11:23:49 CST 2009 (1256786629265)
Waiting for possible shutdown message on port 4445
Generate Summary Results +     5 in   8.5s =    0.6/s Avg:   981 Min:   296 Max:  2344 Err:     0 (0.00%)
Generate Summary Results +     1 in   0.2s =    4.3/s Avg:   232 Min:   232 Max:   232 Err:     0 (0.00%)
Generate Summary Results =     6 in   9.6s =    0.6/s Avg:   856 Min:   232 Max:  2344 Err:     0 (0.00%)
Tidying up ...    @ Thu Oct 29 11:24:02 CST 2009 (1256786642453)
... end of run

        这次我们可以清晰地看到每个线程的执行情况。
        这里是我们使用非 GUI 模式运行测试脚本时可以使用的一些命令:
  • -h 帮助 -> 打印出有用的信息并退出
  • -n 非 GUI 模式 -> 在非 GUI 模式下运行 JMeter
  • -t 测试文件 -> 要运行的 JMeter 测试脚本文件
  • -l 日志文件 -> 记录结果的文件
  • -r 远程执行 -> 启动远程服务
  • -H 代理主机 -> 设置 JMeter 使用的代理主机
  • -P 代理端口 -> 设置 JMeter 使用的代理主机的端口号
        例如:
jmeter -n -t test1.jmx -l logfile1.jtl -H 192.168.1.1 -P 8080
原文链接:https://girliemangalo.wordpress.com/2009/10/29/jmeter-run-scripts-from-the-console/
        译者续
        JMeter 默认去当前目录寻找脚本文件,并把日志记录在当前目录。比如你在 C:\tools\apache-jmeter-2.11\bin 目录下执行以上命令,JMeter 会去该目录下寻找 test1.jmx 脚本并把执行结果放在该目录。如果你的脚本在其他目录,而且想要把执行结果放在另外文件夹,可以使用绝对路径告诉 JMeter,比如:
C:\tools\apache-jmeter-2.11\bin>jmeter -n -t e:/defonds/work/20141106/add/addCustomerScript.jmx -l e:/defonds/work/20141106/add/addCustomerScript201411060954.jtl
使用命令行方式运行 JMeter 脚本
        执行结果可以使用 GUI 模式下的聚合报告查看,比如你想要看 addCustomerScript201411060954.jtl 的报告,可以

        打开 JMeter GUI 界面 -> 测试计划 -> 添加线程组 -> 添加聚合报告 -> 点击"所有数据写入一个文件"下的 "浏览..." 按钮找到你刚生成的 jtl 文件就可以对执行结果进行直观分析了:

使用命令行方式运行 JMeter 脚本