1. 程式人生 > >工作環境下Apache Jmeter + ANT +Jenkins 持續整合環境搭建

工作環境下Apache Jmeter + ANT +Jenkins 持續整合環境搭建

最近工作需要在公司使用jmeter實現介面自動化測試,我就選取了jmeter+ant+jenkins,搭建環境過程如下

本地環境:win7 64位 雲桌面系統

1,本地電腦上JDK安裝,網上教程很多,這裡不再記錄

2,本地電腦上Apache jmeter下載與安裝

地址:http://jmeter.apache.org/

這裡我選擇下載的是4.0版本的,下載到D盤

下載下來之後解壓,這隻jmeter的環境變數

變數名:JMETER_HOME
變數值:D:\apache-jmeter-4.0
變數名:CLASSPATH

變數值:

%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib/logkit-2.0.jar;

變數名:Path

變數值:D:\apache-ant\bin;

命令列中輸入jmeter -v 出現以下便是配置好了

3,下載及配置ant

下載地址:http://ant.apache.org/

將下載的ant解壓放到jmeter一塊,我都是放在D盤根目錄下

先將D:\apache-jmeter-4.0\extras\extra資料夾下的ant-jmeter-1.1.1.jar 包放到D:\apache-ant\lib 目錄下

配置ant的環境變數

變數名:ANT_HOME
變數值:D:\apache-ant
變數名:CLASSPATH

變數值:D:\apache-ant\lib

變數名:Path

變數值:D:\apache-ant\bin

命令列輸入ant -v

 

4,配置 jmeter+ant

在D:\apache-ant目錄下新建一個JmeterTest的資料夾,這個資料夾我們以後可以將jmeter的 .jmx指令碼放到這裡

在D:\apache-ant\JmeterTest新建一個D:\apache-ant\JmeterTest\resultLog資料夾,這個檔案我們可以存放報告

在D:\apache-ant\JmeterTest\resultLog檔案下配置html資料夾放置生成的html格式的報告,配置一個jtl資料夾放置jtl格式的報告

在D:\apache-ant\JmeterTest新建一個build.xml檔案,內容如下:

<?xml version="1.0" encoding="utf-8"?>
<project name="JmeterTest" default="all" basedir=".">
    <tstamp>
        <format property="time" pattern="yyyyMMddhhmm" />
    </tstamp>
    <!-- 需要改成自己本地的 Jmeter 目錄-->
    <property name="jmeter.home" value="D:\apache-jmeter-4.0" />
    <!-- jmeter生成jtl格式的結果報告的路徑-->
    <property name="jmeter.result.jtl.dir" value="D:\apache-ant\JmeterTest\resultLog\jtl" />
    <!-- jmeter生成html格式的結果報告的路徑-->
    <property name="jmeter.result.html.dir" value="D:\apache-ant\JmeterTest\resultLog\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="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"指包含此目錄下的所有jmeter指令碼 -->
            <testplans dir="D:\apache-ant\JmeterTest" includes="*.jmx" />
            <property name="jmeter.save.saveservice.output_format" value="xml"/>
            <property name="jmeter.save.saveservice.output_format" value="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}"/>
            <property name="jmeter.save.saveservice.response_data.on_error" value="${funcMode}"/>
        </jmeter>
    </target>
    <!--生成報告-->
    <target name="report">
        <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>

這裡需要注意每個檔案地址都需要一個一個的小心配置,如果漏掉某一個沒有配置會出錯

 

build.xml檔案內容的生成報到的部分:它的作用就是把生成的.jtl資料檔案轉換為.html格式的報告

這裡我們還要把 D:\apache-jmeter-4.0\bin目錄下的jmeter.properties修改如下,去掉註釋,這樣設定生成的格式是CSV格式

 

測試一下,開啟jmeter新增執行緒組,執行緒屬性先不設定,新增HTTP請求,伺服器名稱或IP一欄中輸入www.baidu.com

新增監聽器-檢視結果樹,先執行一下,檢視結果,我們設定的請求是成功的

儲存到我們剛設定好的D:\apache-ant\JmeterTest資料夾下,命令列進入該資料夾下,輸入ant,檢視結果

build 成功,我們到D:\apache-ant\JmeterTest\resultLog\html目錄下有html格式的報告,開啟檢視報告

min time 、max time 都是NaN

將D:\apache-jmeter-4.0\lib目錄下的xalan-2.7.2.jar、serializer-2.7.2.jar兩個包拷貝到D:\apache-ant\lib目錄下,再次執行ant,檢視結果

這下min time 、max time 顯示內容了

5,配置jenkins+ant了

我在本地搭建好jmeter+ant之後便直接在遠端的Jenkins上配置,沒有在jenkins上配置jmeter與ant,結果報錯

 

Building in workspace /root/.jenkins/workspace/jmeter
ERROR: Unable to find build script at D:\Test\apache-ant\JmeterTest\build.xml
[htmlpublisher] Archiving HTML reports...
[htmlpublisher] Archiving at PROJECT level D:\Test\apache-ant\JmeterTest\resultLog\html to /root/.jenkins/jobs/jmeter/htmlreports/Report
ERROR: Specified HTML directory 'D:\Test\apache-ant\JmeterTest\resultLog\html' does not exist.
Finished: FAILURE

後來才知道指令碼是需要在遠端的jenkins伺服器上跑的,所以需要在jenkins的伺服器上也需要配置,而且jenkins配置的內容都是伺服器的地址檔案,所以報錯是必然的(當然一開始我是不知道的)

下文:https://blog.csdn.net/be_x_man/article/details/81075197