JMeter是目前比较广泛使用的性能测试工具。JMeter通过Java的多线程来模拟性能的多用户的功能。JMeter可以在GUI下运行也可以在非GUI下运行。由于在GUI下会占用一定的压测机资源,所以JMeter官方不支持在GUI下面运行,打开JMeter.bat,在命令行中会显示如下内容:
通过日常的工作,我总结除了,在非GUI模式下运行JMeter的三种方法。
1 最通用的方式
格式:
jmeter -n -t jmx文件名 -l jtl格式记录文件 |
比如:
jmeter -n -t ebusiness.jmx -l logfile1.jtl |
在这里有几个最基本的参数:
- -h 帮助:打印出有用的信息并退出
- -n 非 GUI 模式:在非 GUI 模式下运行 JMeter
- -t 测试文件要运行的JMeter 测试脚本文件
- -l 日志文件记录结果的文件
- -r 远程执行:在Jmter.properties文件中指定的所有远程服务器
- -H 代理主机:设置 JMeter使用的代理主机
- -P 代理端口:设置 JMeter使用的代理主机的端口号
运行结果如下
D:\DOCUMENT\培训与演讲\培训\软件性能测试\JMeter Script\CLI>jmeter -n -t ebusiness.jmx -l logfile1.jtl Jun 07, 2021 5:38:23 PM java.util.prefs.WindowsPreferences <init> WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5. Creating summariser <summary> Created the tree successfully using ebusiness.jmx Starting the test @ Mon Jun 07 17:38:24 CST 2021 (1623058704060) Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445 summary + 1 in 00:00:03 = 0.3/s Avg: 17 Min: 17 Max: 17 Err: 0 (0.00%) Active: 2 Started: 2 Finished: 0 summary + 1792 in 00:00:29 = 61.2/s Avg: 300 Min: 2 Max: 7292 Err: 19 (1.06%) Active: 20 Started: 20 Finished: 0 summary = 1793 in 00:00:32 = 55.3/s Avg: 300 Min: 2 Max: 7292 Err: 19 (1.06%) summary + 1877 in 00:00:30 = 62.6/s Avg: 322 Min: 2 Max: 6837 Err: 15 (0.80%) Active: 20 Started: 20 Finished: 0 summary = 3670 in 00:01:02 = 58.8/s Avg: 312 Min: 2 Max: 7292 Err: 34 (0.93%) summary + 1663 in 00:00:30 = 55.2/s Avg: 373 Min: 3 Max: 6995 Err: 16 (0.96%) Active: 20 Started: 20 Finished: 0 summary = 5333 in 00:01:33 = 57.6/s Avg: 331 Min: 2 Max: 7292 Err: 50 (0.94%) …
运行产生的logfile1.jtl可以通过JMeter的GUI界面加载到报告中。
2 通过Taurus运行
要通过Taurus运行,首先要配置好python环境。然后通过pip3 install bzt命令安装Taurus插件。
接下来配置blaze_exist_jmeter_config.yml文件
execution: - scenario: simple scenarios: simple: script: ebusiness.jmx modules: jmeter: download-link: https://mirrors.tuna.tsinghua.edu.cn/apache//jmeter/binaries/apache-jmeter-{version}.zip version: 5.2.1
最后运行bzt blaze_exist_jmeter_config.yml即可。
D:\DOCUMENT\培训与演讲\培训\软件性能测试\JMeter Script\Taurus>bzt blaze_exist_jmeter_config.yml 17:54:16 INFO: Taurus CLI Tool v1.14.2 17:54:16 INFO: Starting with configs: ['blaze_exist_jmeter_config.yml'] 17:54:16 INFO: Configuring... 17:54:16 INFO: Artifacts dir: D:\DOCUMENT\培训与演讲\培训\软件性能测试\JMeter Script\Taurus\2021-06-07_17-54-16.816972 17:54:16 INFO: Preparing... 17:54:18 WARNING: There is newer version of Taurus 1.15.3 available, consider upgrading. What's new: http://gettaurus.org/docs/Changelog/ 17:54:21 INFO: 3 obsolete CookieManagers are found and fixed 17:54:27 INFO: Starting... 17:54:27 INFO: Waiting for results... 17:54:27 INFO: Did not mute console logging 17:54:28 INFO: Waiting for finish...
3 通过Ant启动
1) 安装并且配置Apache Ant
2) 修改%JMETER_HOME%\bin\jmeter.properties
jmeter.save.saveservice.output_format=xml |
配置build.xml
<!--需要改成自己本地的Jmeter目录--> <property name="jmeter.home" value="C:\apache\apache-jmeter-5.1.1\" /> <!-- jmeter生成jtl格式的结果报告的路径--> <property name="jmeter.result.jtl.dir" value="C:\apache\apache-jmeter-5.1.1\demoant\report\" /> <!-- jmeter生成html格式的结果报告的路径--> <property name="jmeter.result.html.dir" value="C:\apache\apache-jmeter-5.1.1\demoant\report\" /> <!--生成的报告的前缀--> <property name="ReportName" value="电子商务系统测试报告" /> <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" /> <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" /> <!--电脑地址--> <property name="ComputerName" value="JerryGu" /> <target name="all"> <antcall target="ebusiness" /> <antcall target="report" /> </target> <target name="ebusiness"> <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /> <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> <!--声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本--> <testplans dir=" D:\DOCUMENT\培训与演讲\培训\软件性能测试\JMeter Script\Ant\" includes="*.jmx" /> </jmeter> </target> <!--定义生成报告日期--> <path id="xslt.classpath"> <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/> <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/> </path> <target name="report"> <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp> <xslt classpathref="xslt.classpath" force="true" in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"> <param name="dateReport" expression="${report.datestamp}"/> </xslt> <!--因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝--> <copy todir="${jmeter.result.html.dir}"> <fileset dir="${jmeter.home}/extras"> <include name="collapse.png" /> <include name="expand.png" /> </fileset> </copy> </target> </project>
其中
- “C:\apache\apache-jmeter-5.1.1\”为%JMETER_HOME%。
- “D:\DOCUMENT\培训与演讲\培训\软件性能测试\JMeterScript\Ant\”为jmx文件所在位置
- “电子商务系统测试报告”为报告的头文件。
运行Ant
D:\DOCUMENT\培训与演讲\培训\软件性能测试\JMeter Script\Ant>ant Buildfile: D:\DOCUMENT\培训与演讲\培训\软件性能测试\JMeter Script\Ant\build.xml all: ebusiness: [jmeter] Executing test plan: D:\DOCUMENT\培训与演讲\培训\软件性能测试\JMeter Script\Ant\ebusiness.jmx ==> C:\apache\apache-jmeter-5.1.1\demoant\report\电子商务系统测试报告202106070611.jtl [jmeter] 六月 07, 2021 6:11:24 下午 java.util.prefs.WindowsPreferences <init> [jmeter] 警告: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows RegCreateKeyEx(...) returned error code 5. [jmeter] Creating summariser <summary> [jmeter] Created the tree successfully using D:\DOCUMENT\培训与演讲\培训\软件性能测试\JMeter Script\Ant\ebusiness.jmx [jmeter] Starting the test @ Mon Jun 07 18:11:25 CST 2021 (1623060685033) [jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445 [jmeter] summary + 1 in 00:00:03 = 0.3/s Avg: 23 Min: 23 Max: 23 Err: 0 (0.00%) Active: 2 Started: 2 Finished: 0 [jmeter] summary + 1660 in 00:00:28 = 58.4/s Avg: 330 Min: 3 Max: 5740 Err: 0 (0.00%) Active: 20 Started: 20 Finished: 0 [jmeter] summary = 1661 in 00:00:32 = 52.5/s Avg: 330 Min: 3 Max: 5740 Err: 0 (0.00%) [jmeter] summary + 1714 in 00:00:30 = 57.1/s Avg: 343 Min: 3 Max: 6958 Err: 3 (0.18%) Active: 20 Started: 20 Finished: 0 [jmeter] summary = 3375 in 00:01:02 = 54.7/s Avg: 336 Min: 3 Max: 6958 Err: 3 (0.09%) [jmeter] summary + 1792 in 00:00:30 = 59.7/s Avg: 340 Min: 3 Max: 6744 Err: 2 (0.11%) Active: 20 Started: 20 Finished: 0 [jmeter] summary = 5167 in 00:01:32 = 56.4/s Avg: 338 Min: 3 Max: 6958 Err: 5 (0.10%) [jmeter] summary + 1842 in 00:00:30 = 61.4/s Avg: 312 Min: 2 Max: 6929 Err: 10 (0.54%) Active: 20 Started: 20 Finished: 0 [jmeter] summary = 7009 in 00:02:02 = 57.6/s Avg: 331 Min: 2 Max: 6958 Err: 15 (0.21%) …
测试产生的报告,根据build配置产生在C:\apache\apache-jmeter-5.1.1\demoant\report中。