1. 程式人生 > 實用技巧 >Jmeter+ant生成html報告教程(4)

Jmeter+ant生成html報告教程(4)

此教程屬於Jmeter基本操作熟練後,進行提升的專案

主要應用於介面的迴歸或者效能的簡單檢視功能。操作為先在jmeter中寫好測試計劃,儲存為jmx檔案,在cmd視窗對應路徑下執行ant命令,會完成jmx計劃的執行和生成jtl檔案,並將jtl檔案轉化為html頁面進行檢視。後續可擴充套件為接入jenkins整合,並郵件傳送。

一 、安裝ant;下載apache-ant,放到對應路徑下,然後進行環境變數配置。
下載地址:http://ant.apache.org/bindownload.cgi

(下載你需要的apache-ant版本,在這裡是要下載bin的)

二、ant環境配置;(如同jdk配置一樣簡單,新增你自己的路徑)

系統變數的CLASSPATH新增E:\Installation Pack\eclipse\apache-ant-1.9.6\lib;(新增lib絕對路徑)
使用者變數的PATH新增:E:\Installation Pack\eclipse\apache-ant-1.9.6\bin;(新增bin絕對路徑)

開啟cmd,執行 ant,提示"Buildfile:build.xml does not exist! Build failed"則配置成功,
ant命令可用。如下圖所示。

三、配置檔案環境:

(1)將JMeter所在目錄下extras子目錄裡的ant-JMeter-1.1.1.jar複製到Ant所在目錄lib子目錄之下,這樣Ant執行時才能找到"org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"這個類,從而成功觸發JMeter指令碼

(2)編寫指令碼build.xml檔案(重要!!!此步驟影響後期html成功與失敗,大部分問題出自這裡,我編寫程式碼是用Notepad++,記得要用英文輸入編寫)

build.xml檔案程式碼如下:

<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="G:\jmeter\JmeterTest\demo" includes="*.jmx" />
		<property name="jmeter.save.saveservice.output_format" value="xml"/>
    </jmeter>
</target>

<path id="xslt.classpath">
    <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 
		  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}"/>
	</xslt>
            <!-- 因為上面生成報告的時候,不會將相關的圖片也一起拷貝至目標目錄,所以,需要手動拷貝 --> 
    <copy todir="${jmeter.result.html.dir}">
        <fileset dir="${jmeter.home}/extras">
            <include name="collapse.png" />
            <include name="expand.png" />
        </fileset>
    </copy>
</target>

(3)檔案的位置,影響cmd是否可以成功啟動ant(資料夾名稱隨意起)
生成前:

Jmetertest:jmeter測試,存放結果記錄、指令碼
Resultlog:結果記錄,存放執行ant後生成的jtl、html報告
Script:指令碼,jm的執行指令碼
Build.xml:執行ant必須的指令碼,上面已經給出

(4)當全部檔案配置成功,cmd進入Jmetertest資料夾中,執行ant;

如圖成功生成html報告:

(5)開啟resultlogh中html資料夾中生成出的html檔案,就可以看見html報告。如圖成功生成

(6)常見問題;

問題1:配置完畢,無法生成;
解決:缺少jmeter-results-detail-report_21.xsl檔案

問題2:發現Min Time和Max Time盡然沒有顯示出來顯示的Nan
解決:下載一個xalan.jar,serializer.jar,將這兩個jar包入ant的lib包中再次切 換到jemeterTest目錄下,輸入ant檢視執行結果

問題3:就是在執行 最後生成報告的 task 時,一直報下面這個錯:
TransformerException, Content is not allowed in prolog.
解決:bin/jmeter.properties檔案內容,儲存
jmeter.save.saveservice.output_format=xml