關於jmeter中build.xml配置(ant+jenkins+jmeter)
To run a test and create the output report:
ant -Dtest=script
To run a test only:
ant -Dtest=script run
To run report on existing test output
ant -Dtest=script report
The "script" parameter is the name of the script without the .jmx suffix.
Additional options:
-Dshow-data=y - include response data in Failure Details
-Dtestpath=xyz - path to test file(s) (default user.dir).
N.B. Ant interprets relative paths against the build file
-Djmeter.home=.. - path to JMeter home directory (defaults to parent of this build file)
-Dreport.title="My Report" - title for html report (default is 'Load Test Results')
</description>
<property name="jmeter.home" value="${user.dir}"/>
<! --${user.dir}當前目錄的意思,在此指向%JMETER_HOME%目錄 -->
<property name="jmeter.home" value="${basedir}/.."/>
<property name="script.dir" value="${user.dir}/script">
<! --定義Jmeter的指令碼存放目錄,指向%JMETER_HOME%/script目錄 -->
<! --定義jmeter的測試結果存放目錄,指向% JMETER_HOME%/result 目錄 -->
<property name="jmeter.result" value="${user.dir}/result"/>
<property name="report.title" value=" Performance Test Summary Report "/>
<!-- Name of test (without .jmx) -->
<! --定義測試結果名稱 -->
<!-- Should report include response data for failures? -->
<! --測試報告中是否顯示失敗事務,n為不顯示 -->
<property name="show-data" value="n"/>
<! --定義樣式版本,有更新時只需要修改此處即可,其他呼叫處不用更改 -->
<condition property="style_version" value="_21">
<equals arg1="${format}" arg2="2.1"/>
</condition>
<condition property="funcMode">
<equals arg1="${show-data}" arg2="y"/>
</condition>
<condition property="funcMode" value="false">
<not>
<equals arg1="${show-data}" arg2="y"/>
</not>
</condition>
<!-- Allow jar to be picked up locally -->
<! -- 定義依賴包目錄 -->
<! -- {$basedir}指向當前目錄,此bulib.xml所在的目錄 -->
<! -- 把ant-jmeter字元開頭的包.jar結尾的包引入進來,在此*一般是版本資訊 -->
<! -- 定義任務,即測試活動,依賴於ant-jmeter.jar包 -->
<taskdef
name="jmeter"
classpathref="jmeter.classpath"
classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
<! -- 定義任務,一個是run,即執行指令碼,一個是report,即生成報告 -->
<! -- 定義run任務 -->
<! --顯示上面定義的${show-data}的取值 -->
<! -- 刪除前一次的測試報告,html格式的,上面有定義${test}變數的值-->
<jmeter
jmeterhome="${jmeter.home}"
<! -- 載入執行時設定,設定配置在jmeter.properties檔案中 -->
jmeterproperties="${user.dir}/bin/jmeter.properties"
<! -- 是否進行遠端執行 -->
runremote="true"
<! -- 測試結果儲存目錄 -->
resultlog="${jmeter.home}/result/${test}.jtl">
<! -- 制定測試指令碼或者測試指令碼所在的目錄 -->
<! -- 如果是單一指令碼,直接指定指令碼名稱,如果是執行多個指令碼,指定指令碼所在的目錄 -->
<! -- 指定單指令碼,名稱是csveg1.jmx -->
<! --指定測試結果輸出格式,在此指定的xml格式,也可以指定成文字格式以及CSV格式 -->
<! -- -->
testplan ="${testpath}/${test}.jmx"
resultlog="${testpath}/${test}.jtl">
<!--
<jvmarg value="-Xincgc"/>
<jvmarg value="-Xmx128m"/>
<jvmarg value="-Dproperty=value"/>
<jmeterarg value="-qextra.properties"/>
-->
<!-- Force suitable defaults -->
<property name="jmeter.save.saveservice.output_format" value="xml"/>
<! --先暫且指定成xml格式,後續會變化成文字格式-->
<property name="jmeter.save.saveservice.assertion_results" value="all"/>
<property name="jmeter.save.saveservice.bytes" value="true"/>
<property name="file_format.testlog" value="${format}"/>
<! --是否記錄錯誤資訊,上面已經定義了 ${funcMode}=n -->
<property name="jmeter.save.saveservice.response_data.on_error" value="${funcMode}"/>
</jmeter>
</target>
<! --定義依賴包目錄-->
<!-- Use xalan copy from JMeter lib directory to ensure consistent processing with Java 1.4+ -->
<path id="xslt.classpath">
<fileset dir="${lib.dir}" includes="xalan*.jar"/>
<fileset dir="${lib.dir}" includes="serializer*.jar"/>
</path>
<! --定義report任務,此任務依賴於"xslt-report,copy-images" 這兩個任務-->
<! --xslt-report是使用xslt來把xml檔案轉換成HTml格式來顯示-->
<! --copy-images是用來copy圖片,xslt模板中的圖片由copy-images任務copy到報告目錄-->
<target name="report" depends="xslt-report,copy-images">
<echo>Report generated at ${report.datestamp}</echo>
</target>
<! --_massage_xalan被xslt-reportxslt依賴,由它生成報告-->
<xslt
classpathref="xslt.classpath"
force="true"
<! --測試結果輸出-->
in="${jmete.home}/result/${test}.jtl"
out="${jmete.home}/result/${test}.html"
<! --xslt定義的模板檔案地址-->
<! --即%JMETER_HOME%/extras/jmeter-results-detali-report_21.xsl-->
style="${basedir}/jmeter-results-detail-report${style_version}.xsl">
<! --生成html報告時需要copy圖示到報告目錄,expand.png展開圖示,college.png收起圖示-->
<! --判斷${jmeter.home}與${basedir}是否指向同一目標-->
<! --檢查依賴-->
<!-- Check that the xalan libraries are present -->
<condition property="xalan.present">
<and>
<!-- No need to check all jars; just check a few -->
<available classpathref="xslt.classpath" classname="org.apache.xalan.processor.TransformerFactoryImpl"/>
<available classpathref="xslt.classpath" classname="org.apache.xml.serializer.ExtendedContentHandler"/>
</and>
</condition>
<target name="_message_xalan" unless="xalan.present">
<echo>Cannot find all xalan and/or serialiser jars</echo>
<echo>The XSLT formatting may not work correctly.</echo>
<echo>Check you have xalan and serializer jars in ${lib.dir}</echo>
</target>
<! -僅僅列印前面定義的變數的值,檢查是否如你所願,在定義變數時作除錯用,可以去掉--->
< echo>basedir= ${basedir}
< echo>jmeter.home = ${jmeter.home}