天天看點

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

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

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

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

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

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

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

這裡我選擇下載下傳的是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 出現以下便是配置好了

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

3,下載下傳及配置ant

下載下傳位址:http://ant.apache.org/

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

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

先将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

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

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格式

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

測試一下,打開jmeter添加線程組,線程屬性先不設定,添加HTTP請求,伺服器名稱或IP一欄中輸入www.baidu.com

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

添加監聽器-檢視結果樹,先運作一下,檢視結果,我們設定的請求是成功的

儲存到我們剛設定好的D:\apache-ant\JmeterTest檔案夾下,指令行進入該檔案夾下,輸入ant,檢視結果

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

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

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

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,檢視結果

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

這下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