ant+jenkins+jmeter環境配置

杨磊微信發表於2024-10-21

關於jmeter中build.xml配置(ant+jenkins+jmeter)

jmeter+ant+Jenkins<!-檔案用於描述,可選擇項--> Sample build file for use with ant-jmeter.jar See http://www.programmerplanet.org/pages/projects/jmeter-ant-task.php
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}的取值 -->
funcMode = ${funcMode}
<! -- 刪除前一次的測試報告,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}

相關文章