您的位置:軟件測試 > 開源軟件測試 > 開源性能測試工具 > Jmeter
Ant批量處理Jmeter腳本
作者:Ryana 發(fā)布時間:[ 2017/3/21 11:26:10 ] 推薦標簽:性能測試工具 Jmeter 腳本

  Ant是一個可以把代碼從某個地方拿來,編譯,再拷貝到某個地方去的構(gòu)建工具。一時沖動學(xué)習(xí)一下,順便王婆賣瓜嘗試著處理jmeter的腳本,于是,采坑之旅也從此開始。本文省略ant安裝步驟和ant腳本說明,直接寫遇到的問題以及解決的方法。
  首先,谷歌"ant批量處理jmeter腳本",以賀滿博客為主(其實寫得都差不多)
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="all" basedir=".">
<!--為生成的jtl和html文件加時間戳-->
<tstamp>
<format property="time" pattern="yyyyMMddhhmm" />
</tstamp>
<!--更改為自己的jmeter路徑-->
<property name="jmeter.home" value="D:apache-jmeter-3.0_slave" />
<!--更改為自己的jtl文件結(jié)果存放路徑-->
<property name="jmeter.result.jtl.dir" value="D:apache-jmeter-3.0_slaveapache-jmeter-3.0_slave" />
<!--更改為自己的html文件結(jié)果存放路徑-->
<property name="jmeter.result.html.dir" value="D:apache-jmeter-3.0_slaveapache-jmeter-3.0_slave" />
<!--生成的html報告的前綴-->
<property name="ReportName" value="TestReport" />
<!--jlt和html文件名稱-->
<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" />
<target name="all">
<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文件所在路徑-->
<testplans dir="D:apache-jmeter-3.0_slaveapache-jmeter-3.0_slavein" includes="*.jmx" />
</jmeter>
</target>
<target name="report">
<!--使用jmeter自己的轉(zhuǎn)化文件:將jtl轉(zhuǎn)化為xsl文件,改為自己的xsl文件所在路徑-->
<xslt 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>
  初版大致如上,幸運指數(shù)的話,cmd進入ant目錄,輸入ant會直接生成如下圖.html格式的測試報告

  不幸的話繼續(xù)看:
  問題1:unexpected text “ ”
  解決辦法:隱藏所有注釋前面的空格
  問題2:jmeter-results-detail-report_21.xsl doesn’t exist
  解決辦法:下載jmeter-results-detail-report_21源碼,jmeter3.0沒有這個文件,jmeter-results-detail-report_21和jmeter-results-detail-report是兩個不同文件。將下載的源碼格式從.xml改為.xsl,投機取巧直接改后綴行,放在jmeterextras文件下
  問題3:測試報告NaN
  解決辦法:從jmeter的lib包里復(fù)制一份xalan-2.7.2.jar和serializer-2.7.2.jar 到Ant的lib包,并且在build.xml添加如下代碼
<path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
</path>
  問題4:測試報告沒有標題信息,添加如下代碼,可能遇到的type param is undefined
<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}"/>
<param name="titleReport" expression="${report.title}${report.datestamp}"/>
</xslt>
  解決方法:注意style標簽結(jié)尾沒有反斜杠
  后,無比同情的恭喜你成功了

  build.xml完整如下:
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="all" basedir=".">
<!--為生成的jtl和html文件加時間戳-->
<tstamp>
<format property="time" pattern="yyyyMMddhhmm"/>
</tstamp>
<!--更改為自己的jmeter路徑-->
<property name="jmeter.home" value="D:apache-jmeter-3.0_slaveapache-jmeter-3.0_slave"/>
<property name="report.title" value="XXXX接口測試"/>
<!--更改為自己的jtl文件結(jié)果存放路徑-->
<property name="jmeter.result.jtl.dir" value="D:apache-jmeter-3.0_slaveapache-jmeter-3.0_slave"/>
<!--更改為自己的html文件結(jié)果存放路徑-->
<property name="jmeter.result.html.dir" value="D:apache-jmeter-3.0_slaveapache-jmeter-3.0_slave"/>
<!--生成的html報告的前綴-->
<property name="ReportName" value="TestReport"/>
<!--jlt和html文件名稱-->
<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"/>
<target name="all">
<antcall target="test"/>
<antcall target="report"/>
</target>
<path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
</path>
<target name="test">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<!--改為自己的jmx文件所在路徑-->
<testplans dir="D:apache-jmeter-3.0_slaveapache-jmeter-3.0_slavein" includes="0222TestT.jmx"/>
</jmeter>
</target>
<target name="report">
<tstamp>
<format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/>
</tstamp>
<!--使用jmeter自己的轉(zhuǎn)化文件:將jtl轉(zhuǎn)化為xsl文件,改為自己的xsl文件所在路徑-->
<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}"/>
<param name="titleReport" expression="${report.title}${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>
  注:批量處理jmeter腳本的話,只需改成includes="*.jmx"

軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd