JMeter+Jenkins+ANT搭建配置教程

ANT安裝及JMeter配置

1.下載ANTphp

2.解壓到D盤根目錄html

3.配置環境變量express

CLASSPATH
%JMETER_HOME%\\lib\\ext\\ApacheJMeter_core.jar;%JMETER_HOME%\\lib\\jorphan.jar;%JMETER_HOME%\\lib\\logkit-1.2.jar;D:\apache-ant-1.10.5\lib
Path
D:apache-ant-1.10.5bin

4.把D:\apache-jmeter-5.1.1\extras中的ant-jmeter-1.1.1.jar複製到D:\apache-ant-1.10.5\lib中apache

5.把附1中內容添加到apache-jmeter-5.1.1\bin\jmeter.properties文件中vim

6.把須要測試的jmx文件和build.xml(見文章末尾)放在同一文件夾中工具

build.xml中使用了jmeter.results.shanhe.me.xsl文件, 點此下載後放到D:\apache-jmeter-5.1.1\extras中

7.測試一下看,打開命令行切換到demo文件夾下,輸入ant或ant run執行,正常運行後結果以下:測試

打開/demo/report/html中剛生成的報告看一下ui

Jenkins安裝及配置

Jenkins安裝

1.進入Jenkins官網下載地址下載最新的版本
2.安裝時記得保存管理員碼,或者新建本身的用戶
3.選擇安裝推薦的插件,同時我推薦幾個本身用到的插件,能夠在
http://localhost:8080/pluginManager/available中搜索安裝編碼

Locale plugin,HTML Publisher,Performance Plugin,Build Timestamp

4.進入系統管理-系統設置,配置Jenkins各項設置url

設置Jenkins爲中文(需安裝Locale plugin)

配置郵件,這裏有兩處須要配置
用qq郵箱的千萬注意,用的不是qq密碼,而是郵箱裏單獨獲取的受權碼

勾選之後能夠測試一下郵箱配置正確沒有

系統管理-全局工具設置裏面配置ANT

5.新建任務

勾選一下使用自定義工做空間,這個地址和你在build.xml裏生成報告的路徑統一下,由於郵件發送附件用的是相對目錄

添加ANT


添加後續動做

這裏的路徑和build.xml裏的html報告路徑一致

這個路徑和build.xml裏的jtl報告路徑一致

添加郵箱提醒


郵件模板內容見文章末尾
${BUILD_TIMESTAMP}是變量,須要安裝Build Timestamp插件並在系統設置中按下圖配置以保證和生成的報告時間戳相同

錯誤總結

1.

The <jmeter> type doesn't support nested text data ("       ").

網上回答:
多是由於編碼問題,在複製粘貼的過程當中,產生了一些不可見的亂碼。 解決辦法是將build.xml文件複製粘貼到vim editor中,並刪除其中的亂碼,保存後,再次運行 ant,能夠解決問題

2.

taskdef class org.programmerplanet.ant.taskdefs.jmeter.JMeterTask cannot be found

把D:apache-jmeter-5.1.1extras中的ant-jmeter-1.1.1.jar複製到D:apache-ant-1.10.5lib中

附錄

1.jmeter.properties

jmeter.save.saveservice.data_type=true
jmeter.save.saveservice.label=true
jmeter.save.saveservice.response_code=true
# response_data is not currently supported for CSV output
jmeter.save.saveservice.response_data=true
# Save ResponseData for failed samples
jmeter.save.saveservice.response_data.on_error=false
jmeter.save.saveservice.response_message=true
jmeter.save.saveservice.successful=true
jmeter.save.saveservice.thread_name=true
jmeter.save.saveservice.time=true
jmeter.save.saveservice.subresults=true
jmeter.save.saveservice.assertions=true
jmeter.save.saveservice.latency=true
jmeter.save.saveservice.connect_time=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.responseHeaders=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.encoding=false
jmeter.save.saveservice.bytes=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.filename=true
jmeter.save.saveservice.hostname=true
jmeter.save.saveservice.thread_counts=true
jmeter.save.saveservice.sample_count=true
jmeter.save.saveservice.idle_time=true
jmeter.save.saveservice.output_format=xml

2.build.xml
複製使用時記得把下面的jmeter版本號替換成本身的,不然目錄不對會報錯

<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
    <tstamp>
        <format property="time" pattern="yyyyMMddhhmm" />
    </tstamp>
    <!-- 須要改爲本身本地的 Jmeter 目錄-->  
    <property name="jmeter.home" value="D:\apache-jmeter-5.1.1" />
    <!-- jmeter生成jtl格式的結果報告的路徑--> 
    <property name="jmeter.result.jtl.dir" value="D:\apache-jmeter-5.1.1\demo\report\jtl" />
    <!-- jmeter生成html格式的結果報告的路徑-->
    <property name="jmeter.result.html.dir" value="D:\apache-jmeter-5.1.1\demo\report\html" />
    <!-- 生成的報告的前綴-->  
    <property name="ReportName" value="TestReport" />
    <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="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="D:\apache-jmeter-5.1.1\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.shanhe.me.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>
</project>

3.郵件模板

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次構建日誌</title>
</head>

<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0">
<table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
    <tr>
        <td>(本郵件由程序自動下發,請勿回覆!)</td>
    </tr>
    <tr>
        <td>
            <h2><font color="#FF0000">構建結果 - ${BUILD_STATUS}</font></h2>
        </td>
    </tr>
    <tr>
        <td><br />
            <b><font color="#0B610B">構建信息</font></b>
            <hr size="2" width="100%" align="center" />
        </td>
    </tr>
    <tr>   SVN_URL
        <td>
            <ul>
                <li>項目名稱:${PROJECT_NAME}</li>
                <li>SVN路徑:${SVN_URL}</li>                    
                <li>構建編號:${BUILD_NUMBER}</li>                    
                <li>SVN版本:${SVN_REVISION}</li>
                <li>觸發緣由:${CAUSE}</li>   
                <li>構建日誌:<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
                <li>測試報告:<a href="D:/apache-jmeter-5.1.1/demo/report/html/TestReport${BUILD_TIMESTAMP}.html">
                  D:/apache-jmeter-5.1.1/demo/report/html/TestReport${BUILD_TIMESTAMP}.html</a><br/><hr/></li>
            </ul>
        </td>
    </tr>
    <tr>
        <td>
            <b><font color="#0B610B">變動信息:</font></b>
           <hr size="2" width="100%" align="center" />
        </td>
    </tr>
    <tr>
        <td>
            <ul>
                <li>上次構建成功後變化 :  ${CHANGES_SINCE_LAST_SUCCESS}</a></li>
            </ul>    
        </td>
    </tr>
<tr>
        <td>
            <ul>
                <li>上次構建不穩定後變化 :  ${CHANGES_SINCE_LAST_UNSTABLE}</a></li>
            </ul>    
        </td>
    </tr>
    <tr>
        <td>
            <ul>
                <li>歷史變動記錄 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>
            </ul>    
        </td>
    </tr>
    <tr>
        <td>
            <ul>
                <li>變動集:${JELLY_SCRIPT,template="html"}</a></li>
            </ul>    
        </td>
    </tr>
    
    <tr>
        <td>
            <b><font color="#0B610B">Failed Test Results</font></b>
            <hr size="2" width="100%" align="center" />
        </td>
    </tr>
    <tr>
        <td>
            <pre style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre>
            <br />
        </td>
    </tr>

    <tr>
        <td>
            <b><font color="#0B610B">構建日誌 (最後 100行):</font></b>
            <hr size="2" width="100%" align="center" />
        </td>
    </tr>
     <tr>
        <td>Test Logs (if test has ran): 
           <a href="${space}\${PROJECT_NAME}\builds\${BUILD_NUMBER}\log">${space}\${PROJECT_NAME}\builds\${BUILD_NUMBER}\log</a>
            <br />
        <br />
        </td>
    </tr> 
    
    <tr>
        <td>
            <textarea cols="80" rows="30" readonly="readonly" style="font-family: Courier New">${BUILD_LOG, maxLines=100,escapeHtml=true}</textarea>
        </td>
    </tr>
    <hr size="2" width="100%" align="center" />

</table>

</body>
</html>
相關文章
相關標籤/搜索