1. 程式人生 > 實用技巧 >jmeter+ant+tomcat持續整合

jmeter+ant+tomcat持續整合

@

目錄

前言

2018年的時候,我寫過一篇文章:Jenkins+Jmeter+ant介面自動化框架for Linux學習

但是由於兩年了,我自己試了一下也不能使用了。所以趁著週末把這篇文章翻新一下。

下載安裝

我們需要下載四個檔案

在伺服器的當前使用者目錄新建api_test目錄

使用FileZilla工具連結伺服器(此工具的使用在此不做贅述)上傳至此目錄。

上傳完成後對三個解壓包進行解壓

hoou@hoou-PC:~/api_test$ tar -zxvf apache-jmeter-5.3.tgz

hoou@hoou-PC:~/api_test$ tar -zxvf apache-ant-1.9.15-bin.tar.gz

hoou@hoou-PC:~/api_test$ tar -zxvf apache-tomcat-8.5.57.tar.gz

配置Ant環境變數

開啟檔案,並編輯

hoou@hoou-PC:~/api_test$ vim ~/.bashrc

並新增以下內容

export ANT_HOME=/home/hoou/api_test/apache-ant-1.9.15
export PATH=$ANT_HOME/bin:$PATH

然後驗證一下

用ant構建命令來調動Jmeter執行介面測試,並生成測試報告

配置Jmeter

新建report目錄

在Jmeter主目錄下新建一個report資料夾並在report中新建如圖所示的三個資料夾

複製ant-jmeter-1.1.1.jar

將jmeter目錄下的extras目錄下的ant-jmeter-1.1.1.jar檔案複製到ant目錄下的lib資料夾中

hoou@hoou-PC:~/api_test$ cp apache-jmeter-5.3/extras/ant-jmeter-1.1.1.jar apache-ant-1.9.15/lib/

新建配置ant的編譯檔案 build.xml

注:將新建的build.xml檔案放入在Jmeter目錄中新建的report資料夾。

<?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="/home/hoou/api_test/apache-jmeter-5.3" />  
    <property name="basedirectory" value="${jmeter.home}/extras" />  
    <!-- jmeter生成jtl格式的結果報告的路徑-->   
    <property name="jmeter.result.jtl.dir" value="${jmeter.home}/report/jtl" />  
    <!-- jmeter生成html格式的結果報告的路徑-->  
    <property name="jmeter.result.html.dir" value="${jmeter.home}/report/html" />  
    <!-- Name of test (without .jmx) -->  
    <property name="test" value="Test"/>  
    <!-- 生成的報告的字首-->    
    <property name="ReportName" value="TestReport" />  
    <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/index.jtl" />  
    <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/index.html" />  
      
    <path id="xslt.classpath">  
        <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>  
        <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>  
    </path>  
      
    <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="${jmeter.home}/report/run" includes="*.jmx" />  
        </jmeter>  
    </target>  
          
    <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-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>  
      
</project>

jmeter.home部分可根據自己的配置進行修改。

配置jmeter.properties文件

找到jmeter.properties文件,在/opt/apache-jmeter-4.0/bin目錄下,開啟該文件並編輯

修改jmeter報告輸出格式為xml:

改jmeter.save.saveservice.output_format=csv 為jmeter.save.saveservice.output_format=xml,並去掉前面的註釋符號#

執行構建測試

選取一個做好的Jmeter測試指令碼demo放入report目錄中的run目錄。如不知此目錄在哪,還請閱讀上文

執行測試
第一步:cd到build.xml檔案所在目錄

hoou@hoou-PC:~/api_test/apache-jmeter-5.3/report$

第二步:輸入 ant 回車,執行測試

出現如圖所示successful,成功!

檢視測試結果報告
在報告輸出存放路徑下檢視是否有jtl和html結果報告

開啟html文件,測試結果展現了執行的用例名稱、成功率、用例執行時間等結果引數

這樣的結果是不是不太直觀,因為用jmeter自帶的測試報告得到的測試報告資訊並不是很全,下面講一下怎麼優化測試報告

優化測試報告

下載報告模板

下載優化模板 jmeter-results-shanhe-me.xsl,拷貝到jmeter的extras目錄中
下載地址:

連結:https://pan.baidu.com/s/17UlGb1o0tZ37PLmtay40-g

密碼:bftq

將下載的東西移動到 /opt/apache-jmeter-4.0/extras 目錄下

設定報告要輸出的內容

進入/opt/apache-jmeter-4.0/bin目錄。

在jmeter.properties中,設定需要輸出的內容為true,並去掉前面的註釋符號#

切換報告模板

在report目錄設定buildxml檔案的報告模板為優化後的模板jmeter.results.shanhe.me.xsl

此處:標紅的名字已為替換後的檔名

構建測試

再次用ant構建測試,檢視優化後的測試報告

到了這一步Jmeter和ant之間的銜接已經完成了。接下來配置Jenkins。

配置Jenkins

將Jenkins.war安裝包。移動到Tomcat中webapps目錄下。

hoou@hoou-PC:~/api_test$ mv jenkins.war apache-tomcat-8.5.57/webapps/

完成後我們進入Tomcat中的bin目錄,執行tomcat

在瀏覽器中輸入http://伺服器地址:8080/,進入後出現如下介面

注:如果地址沒有響應,多半是埠沒有對外開放。

iptables -I INPUT 5 -m  state  --state  NEW  -m  tcp  -p  tcp  --dport  8080  -j  ACCEPT

輸入上面的命令即可

然後輸入

http://伺服器地址:8080/Jenkins

就可以啟動Jenkins了。

進入後按步驟操作。

並設定使用者名稱。

注:使用者名稱必須設定。

新建並配置一個任務

設定專案名稱:

配置構建:

基本配置完成,應用並儲存

執行構建

執行完成後控制檯輸出如下。

點選HTML Report會看到最新的構建測試報告

HTML結果開啟如下圖所示:

當然樣式丟失了,如果要開啟樣式。

請移步大佬的方案: [上海悠悠——jenkins顯示html樣式問題的幾種解決方案總結](https://www.cnblogs.com/yoyoketang/p/7518351.html)

至於構建失敗傳送郵件,請看我另外一篇博文。Jenkin構建失敗傳送郵件