ANT批量执行Jmeter脚本

本文详细介绍如何通过Apache Ant自动化工具来运行JMeter性能测试脚本,并生成详细的XML及HTML格式测试报告。从环境搭建到具体步骤均有涉及。

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

一、环境准备:

  1、Jdk1.6或以上:http://www.oracle.com/technetwork/java/javase/downloads/index.html

    命令行输入:java -version,出现如下提示说明安装成功

  

  2、ANT下载:http://ant.apache.org/bindownload.cgi

    命令行输入:ant -v,出现如下提示说明安装成功

  

  3、Jmeter下载:http://jmeter.apache.org/download_jmeter.cgi

  4、将 jmeter的extras目录中ant-jmeter-1.1.1.jar包拷贝至ant安装目录下的lib目录中

  5、修改Jmeter的bin目录下jmeter.properties文件的配置:jmeter.save.saveservice.output_format=xml  

  

二、Jmeter脚本:

  1、如何编写脚本请参见:http://www.cnblogs.com/puresoul/p/4740436.html

   2、脚本目录:D:\apache-jmeter-2.13\demo

  

  3、脚本内容:

  测试百度.jmx                    Google1.jmx

    

 

三、build.xml代码: 

复制代码
 1 <?xml version="1.0" encoding="UTF-8"?>
 2 
 3 <project name="ant-jmeter-test" default="run" basedir=".">
 4     <tstamp>
 5         <format property="time" pattern="yyyyMMddhhmm" />
 6     </tstamp>
 7     <!-- 需要改成自己本地的 Jmeter 目录-->  
 8     <property name="jmeter.home" value="D:\apache-jmeter-2.13" />
 9     <!-- jmeter生成jtl格式的结果报告的路径--> 
10     <property name="jmeter.result.jtl.dir" value="D:\apache-jmeter-2.13\demo\report\jtl" />
11     <!-- jmeter生成html格式的结果报告的路径-->
12     <property name="jmeter.result.html.dir" value="D:\apache-jmeter-2.13\demo\report\html" />
13     <!-- 生成的报告的前缀-->  
14     <property name="ReportName" value="TestReport" />
15     <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
16     <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
17     
18     <target name="run">
19         <antcall target="test" />
20         <antcall target="report" />
21     </target>
22     
23     <target name="test">
24         <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
25         <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
26              <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->
27             <testplans dir="D:\apache-jmeter-2.13\demo" includes="*.jmx" />
28 
29        <property name="jmeter.save.saveservice.output_format" value="xml"/>
30 
31         </jmeter>
32     </target>
33         
34     <target name="report">
35         <xslt in="${jmeter.result.jtlName}"
36               out="${jmeter.result.htmlName}"
37               style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" />
38                 <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 --> 
39         <copy todir="${jmeter.result.html.dir}">
40             <fileset dir="${jmeter.home}/extras">
41                 <include name="collapse.png" />
42                 <include name="expand.png" />
43             </fileset>
44         </copy>
45     </target>
46 </project>
复制代码

 

四、运行脚本:

 1、cmd进入脚本目录:D:\apache-jmeter-2.13\demo

 2、输入:ant  或 ant run(run为build.xml中的task名),执行结果:

复制代码
D:\apache-jmeter-2.13\demo>ant
Buildfile: build.xml

all:

test:
   [jmeter] Executing test plan: D:\apache-jmeter-2.13\demo\Google1.jmx ==> D:\apache-jmeter-2.13\demo\report\jtl\TestReport201509141114.jtl
   [jmeter] Creating summariser <summary>
   [jmeter] Created the tree successfully using D:\apache-jmeter-2.13\demo\Google1.jmx
   [jmeter] Starting the test @ Mon Sep 14 23:14:32 CST 2015 (1442243672984)
   [jmeter] Waiting for possible shutdown message on port 4445
   [jmeter] summary +      1 in     1s =    1.9/s Avg:   248 Min:   248 Max:   248 Err:     1 (100.00%) Active: 1 Started: 1 Finished: 0
   [jmeter] summary +      5 in     1s =    7.8/s Avg:   119 Min:   107 Max:   137 Err:     0 (0.00%) Active: 0 Started: 1 Finished: 1
   [jmeter] summary =      6 in   1.2s =    5.2/s Avg:   140 Min:   107 Max:   248 Err:     1 (16.67%)
   [jmeter] Tidying up ...    @ Mon Sep 14 23:14:34 CST 2015 (1442243674232)
   [jmeter] ... end of run
   [jmeter] Executing test plan: D:\apache-jmeter-2.13\demo\测试百度.jmx ==> D:\apache-jmeter-2.13\demo\report\jtl\TestReport201509141114.jtl
   [jmeter] Creating summariser <summary>
   [jmeter] Created the tree successfully using D:\apache-jmeter-2.13\demo\测试百度.jmx
   [jmeter] Starting the test @ Mon Sep 14 23:14:35 CST 2015 (1442243675376)
   [jmeter] Waiting for possible shutdown message on port 4445
   [jmeter] summary +      1 in   0.5s =    2.1/s Avg:   196 Min:   196 Max:   196 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0
   [jmeter] summary +      5 in     1s =    8.4/s Avg:   113 Min:   107 Max:   133 Err:     0 (0.00%) Active: 0 Started: 1 Finished: 1
   [jmeter] summary =      6 in   1.1s =    5.6/s Avg:   126 Min:   107 Max:   196 Err:     0 (0.00%)
   [jmeter] Tidying up ...    @ Mon Sep 14 23:14:36 CST 2015 (1442243676535)
   [jmeter] ... end of run

report:
     [xslt] Processing D:\apache-jmeter-2.13\demo\report\jtl\TestReport201509141114.jtl to D:\apache-jmeter-2.13\demo\report\html\TestReport201509141114.html
     [xslt] Loading stylesheet D:\apache-jmeter-2.13\extras\jmeter-results-detail-report_21.xsl
     [copy] Copying 2 files to D:\apache-jmeter-2.13\demo\report\html

BUILD SUCCESSFUL
Total time: 5 seconds
复制代码

 3、测试报告目录:D:\apache-jmeter-2.13\demo\report\html,其中有一个红色失败的案例是我故意设置失败,以便查看的。 

 

 

四:最后,说一个我在使用过程中碰到一个问题,上面build.xml文件第29行有一句必须要加上:<property name="jmeter.save.saveservice.output_format" value="xml"/>,否则会报如下的错误:   

report:
     [xslt] Processing D:\Tools\apache-jmeter-2.13\demo\report\jtl\TestReport201509210923.jtl to D:\Tools\apache-jmeter-2.13\demo\report\html\TestReport201509210923.html
     [xslt] Loading stylesheet D:\Tools\apache-jmeter-2.13\extras\jmeter-results-detail-report_21.xsl
     [xslt] : Error! 前言中不允许有内容。
     [xslt] : Error! com.sun.org.apache.xml.internal.utils.WrappedRuntimeException: 前言中不允许有内容。
     [xslt] Failed to process D:\Tools\apache-jmeter-2.13\demo\report\jtl\TestReport201509210923.jtl

 因为不加上这一句,生成的.jtl文件是文本文件不是xml文件,使用xsl去转换.jtl文件时就会报错。

 

更新补充:

  上面生成的报告有如下两个问题,解决办法参见Jmeter自带报告优化(一)

  1、Date report这里的时间没有正确显示出来

  2、Summary里的字段Min Time和Max Time显示的是NaN,没有显示正确的时间。

 

 

 

 

 

 

参考:

1、http://rainbow702.iteye.com/blog/2159244

2、http://www.programmerplanet.org/projects/jmeter-ant-task/

### JMeter 批量测试与脚本配置 #### 使用 CSV 文件实现批量接口测试 为了高效完成大量接口的测试工作,可以通过使用 **CSV 数据集配置** 来加载多组测试数据。这种方式允许用户定义一组或多组输入参数,并将其应用于不同的请求中[^4]。 以下是具体方法: 1. 创建一个 `.csv` 文件,其中每一列代表一个变量名,每行表示一次测试的数据集合。 2. 在 JMeter 中添加 `CSV Data Set Config` 组件,设置文件路径以及各字段名称。 3. 将这些动态变量应用到 HTTP 请求或其他采样器中。 示例代码片段展示如何配置 CSV 输入源: ```properties # csv_example.csv 内容如下: username,password,expectedResult testUser1,testPass1,true testUser2,testPass2,false ``` 对应于上述 CSV 的 JMeter 配置应包含以下属性设定: | 属性 | 值 | |------|-----| | Filename | ${__P(csvPath)}\csv_example.csv | | Variable Names | username,password,expectedResult | 这样每次迭代都会自动替换 `${username}`,`${password}` 和其他关联变量的实际值[^5]。 #### 利用 Ant 工具自动化构建流程 对于更复杂的场景比如涉及多个独立模块或者需要分别记录不同部分的结果时,则推荐采用 Apache Ant 结合自定义 build.xml 实现更加灵活的任务调度机制[^3]。 下面给出一段简化版 XML 片段用于说明基本结构: ```xml <project name="BatchTestExecution" default="run-tests"> <!-- 定义全局属性 --> <property environment="env"/> <!-- 设置目标目录 --> <target name="init"> <mkdir dir="${basedir}/results"/> </target> <!-- 运行所有 .jmx 测试计划 --> <target name="run-tests" depends="init"> <foreach target="execute-single-test" param="file"> <path> <fileset dir="./tests/" includes="*.jmx"/> </path> </foreach> </target> <!-- 单独执行某个特定测试文件 --> <target name="execute-single-test"> <jmeter jmeterhome="/opt/apache-jmeter-5.x" testplan="${file}" resultlog="${basedir}/results/${ant.file.name}.jtl"/> </target> </project> ``` 此脚本会遍历指定文件夹下的每一个`.jmx`文档逐一启动它们,并把各自的日志保存至单独子文件夹里以便后续分析处理。 另外值得注意的是如果存在依赖关系则需额外考虑顺序控制逻辑;还有就是确保环境变量正确指向实际安装位置以防报错中断进程。 #### Python 自动生成 JMX 脚本 除了手动调整外还可以借助外部编程语言如 Python 自动化生成所需的 JMX 描述性语法描述符 (Document Object Model)[^2] 。这种方法特别适合那些重复性强但细节差异较大的情况——只需修改模板即可快速适应新需求而无需重新设计整个框架体系架构图谱模型等等复杂过程。 总结来说,在JMeter当中实施批量化作业可以从以下几个方面入手:利用CSV导入多样化样本资料、依靠ANT编排整体运作链条以及探索程序驱动型解决方案这三个维度展开探讨研究实践摸索前行之路不断优化改进直至达到理想效果为止!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值