通过案例带你轻松玩转JMeter连载(50)

简介: 通过案例带你轻松玩转JMeter连载(50)

JMeter的运行



JMeter可以在GUI下运行也可以在非GUI下运行。由于在GUI下会占用一定的压测机器的资源,所以JMeter官方不支持在GUI下面运行,打开JMeter.bat,在命令行中会显示如图1内容。


image.png

图1 JMeter启动界面


Don't use GUI mode for load testing !, only for Test creation and Test debugging.
For load testing, use CLI Mode (was NON GUI):
jmeter -n -t [jmx file] -l [results file] -e -o [Path to web report folder]
& increase Java Heap to meet your test requirements:
 Modify current env variable HEAP="-Xms1g -Xmx1g -XX:MaxMetaspaceSize=256m" in the jmeter batch file
 Check : https://jmeter.apache.org/usermanual/best-practices.html


在非GUI模式下,运行JMeter通常有以下三种方法,分别是“通过JMeter自带工具运行”“通过Apache Ant运行”和“通过Taurus运行”,下面一一来进行介绍。


1通过JMeter自带工具运行


通过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:…\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通过Apache Ant运行


Apache Ant,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。由Apache软件基金会所提供。由于JMeter是一个由Java开发的软件,因此给Apache Ant的运行提供了可能。下面为配置Apache Ant运行JMeter的方法。

1)安装并且配置Apache Ant
2)修改%JMETER_HOME%\bin\jmeter.properties


jmeter.save.saveservice.output_format=xml


配置build.xml


<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
    <tstamp>
        <format property="time" pattern="yyyyMMddhhmm" />
    </tstamp>
    <!-- 需要改成自己本地的 Jmeter 目录--> 
    <property name="jmeter.home" value="C:\apache\apache-jmeter-5.4.1" />
    <!-- jmeter生成jtl格式的结果报告的路径-->
    <property name="jmeter.result.jtl.dir" 
value="C:\apache\apache-jmeter-5.4.1\bin\test\report\jtl" />
    <!-- jmeter生成html格式的结果报告的路径-->
    <property name="jmeter.result.html.dir" 
value="C:\apache\apache-jmeter-5.4.1\bin\test\report\html" />
    <!-- 生成的报告的前缀--> 
    <property name="ReportName" value="TestReport" />
    <property name="jmeter.result.jtlName" 
value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
    <property name="jmeter.result.htmlName" 
value="${jmeter.result.html.dir}/${ReportName}.html" />
    <target name="run">
        <antcall target="test" />
        <antcall target="report" />
    </target>
    <target name="test">
        <taskdef name="jmeter" 
classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
        <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
             <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
            <testplans dir="C:\apache\apache-jmeter-5.4.1\scripts" includes="*.jmx" 
/>
             <property name="jmeter.save.saveservice.output_format" value="xml"/>
        </jmeter>
    </target>
     <path >
        <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               
              classpat 
              force="true"
              in="${jmeter.result.jtlName}"
              out="${jmeter.result.htmlName}"
              style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" />  
        <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
        <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.4.1\”为JMETER 的安装目录,即%JMETER_HOME%。
“C:\apache\apache-jmeter-5.4.1\scripts”为jmx文件所在位置
运行Ant


C:\apache\apache-jmeter-5.4.1\scripts>ant
Buildfile: C:\apache\apache-jmeter-5.4.1\scripts\build.xml
run:
test:
   [jmeter] Executing test plan: C:\apache\apache-jmeter-5.4.1\scripts\login.jmx ==> 
C:\apache\apache-jmeter-5.4.1\bin\test\report\jtl\TestReport202108190413.jtl
   [jmeter] 八月 19, 2021 4:13:42 下午 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 
C:\apache\apache-jmeter-5.4.1\scripts\login.jmx
   [jmeter] Starting standalone test @ Thu Aug 19 16:13:53 CST 2021 (1629360833026)
   [jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message 
on port 4447
   [jmeter] summary +    152 in 00:00:06 =   27.4/s Avg:    31 Min:    11 Max:   255 
Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0
   [jmeter] summary +   1215 in 00:00:30 =   40.6/s Avg:    23 Min:    10 Max:   347 
Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0
   [jmeter] summary =   1367 in 00:00:35 =   38.6/s Avg:    24 Min:    10 Max:   347 
Err:     0 (0.00%)
   [jmeter] summary +   1203 in 00:00:25 =   48.7/s Avg:    20 Min:     9 Max:    62 
Err:     0 (0.00%) Active: 0 Started: 1 Finished: 1
   [jmeter] summary =   2570 in 00:01:00 =   42.7/s Avg:    22 Min:     9 Max:   347 
Err:     0 (0.00%)
   [jmeter] Tidying up ...    @ Thu Aug 19 16:14:54 CST 2021 (1629360894732)
   [jmeter] ... end of run
report:
     [xslt] Processing 
C:\apache\apache-jmeter-5.4.1\bin\test\report\jtl\TestReport202108190413.jtl to 
C:\apache\apache-jmeter-5.4.1\bin\test\report\html\TestReport.html
     [xslt] Loading stylesheet 
C:\apache\apache-jmeter-5.4.1\extras\jmeter-results-detail-report_21.xsl
     [copy] Copying 2 files to C:\apache\apache-jmeter-5.4.1\bin\test\report\html
BUILD SUCCESSFUL
Total time: 1 minute 19 seconds
C:\apache\apache-jmeter-5.4.1\scripts>


根据配置。
C:\apache\apache-jmeter-5.4.1\bin\test\report\jtl 产生jtl格式的报告文件。
C:\apache\apache-jmeter-5.4.1\bin\test\report\html产生html格式的报告文件。如图2所示。


image.png

图2 Apache Ant运行JMeter HTML测试报告


3通过Taurus运行


Taurus工具是一个开源测试自动化框架,提供简单的基于YAML的配置格式。要通过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


其中ebusiness.jmx为将运行的jmx文件。
最后运行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报告图。

image.png


图3 Taurus运行JMeter测试界面


3 总结



本章学习了运行JMeter的三种命令很方式,分别是:通过JMeter自带工具运行、通过Apache Ant运行和通过Taurus运行。


目录
相关文章
|
Java 测试技术 API
通过案例带你轻松玩转JMeter连载(49)
通过案例带你轻松玩转JMeter连载(49)
251 1
通过案例带你轻松玩转JMeter连载(49)
|
存储 Linux
通过案例带你轻松玩转JMeter连载(60)
通过案例带你轻松玩转JMeter连载(60)
179 0
通过案例带你轻松玩转JMeter连载(60)
|
算法
通过案例带你轻松玩转JMeter连载(59)
通过案例带你轻松玩转JMeter连载(59)
232 0
通过案例带你轻松玩转JMeter连载(59)
|
XML JavaScript Java
通过案例带你轻松玩转JMeter连载(58)
通过案例带你轻松玩转JMeter连载(58)
130 0
通过案例带你轻松玩转JMeter连载(58)
通过案例带你轻松玩转JMeter连载(57)
通过案例带你轻松玩转JMeter连载(57)
128 0
通过案例带你轻松玩转JMeter连载(57)
|
存储 索引
通过案例带你轻松玩转JMeter连载(56)
通过案例带你轻松玩转JMeter连载(56)
117 0
通过案例带你轻松玩转JMeter连载(56)
|
存储 Prometheus 监控
通过案例带你轻松玩转JMeter连载(55)
通过案例带你轻松玩转JMeter连载(55)
165 0
通过案例带你轻松玩转JMeter连载(55)
|
存储 监控 数据可视化
通过案例带你轻松玩转JMeter连载(54)
通过案例带你轻松玩转JMeter连载(54)
157 0
通过案例带你轻松玩转JMeter连载(54)
|
存储 Prometheus 监控
通过案例带你轻松玩转JMeter连载(53)
通过案例带你轻松玩转JMeter连载(53)
138 0
通过案例带你轻松玩转JMeter连载(53)
|
JSON 监控 数据可视化
通过案例带你轻松玩转JMeter连载(52)
通过案例带你轻松玩转JMeter连载(52)
200 0
通过案例带你轻松玩转JMeter连载(52)