Jenkins+JMeter+Ant 接口持續集成

​JMeter安裝css

JMeter安裝包:html

  • 下載地址:https://jmeter.apache.org/download_jmeter.cginode

  • 依賴JDK環境web

JDK環境配置:數據庫

  • JAVA_HOME    E:\jdk1.8.0_51express

  • CLASSPATH    %JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;apache

 

JMeter配置文件修改瀏覽器

爲何要修改配置文件tomcat

  • jmeter執行結果文件默認保存的不是xml格式,沒法轉化成html格式安全

  • jmeter執行結果文件默認有不少執行數據是不保存的,而測試報告須要這些數據

  • 配置文件路徑 ${jmeterhome}/bin/jmeter.properties

  • 配置文件修改內容:修改jtl文件格式:去掉註釋(#),修改csv爲xml

若是出現以下內容,說明安裝成功:

Buildfile: build.xml does not exist!

Build failed


Ant相關使用:

定製集成Ant配置文件(bulid.xml):

具體參看build.xml文件

  • <?xml version="1.0" encoding="UTF-8"?>
    
    
    <project name="ant-jmeter-test" default="all" basedir=".">
    <tstamp>
    <format property="time" pattern="yyyyMMddhhmm" />
    </tstamp>
    <!-- 須要改爲本身本地的 Jmeter 目錄 -->
    <property name="jmeter.home" value="E:\apache-jmeter-3.2" />
    <!-- jmeter生成jtl格式的結果報告的路徑 -->
    <property name="jmeter.result.jtl.dir" value="C:\Users\Administrator\.jenkins\workspace\MiaomiApi\report\jtl" />
    <!-- jmeter生成html格式的結果報告的路徑 -->
    <property name="jmeter.result.html.dir" value="C:\Users\Administrator\.jenkins\workspace\MiaomiApi\report\html" />
    <!-- 生成的報告的前綴 htmlm名稱與jenkins,HTML directory to archive 設置一致,不然報告會出現404-->
    <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}/index.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="E:\ApiTest\jmx" includes="*.jmx" />
    </jmeter>
    </target>
    <!-- 解決html報告中沒有日期,以及NAN的問題-->
    <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">
    <!-- 解決html報告中沒有日期的問題-->
    <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>

     

    如上標註的爲路徑信息,須要修改成本身的本地路徑

  • style參數爲生成html文件的模板文件,能夠修改成本身的模板文件,jmeter提供了多個模板文件可供使用

  • 將bulid.xml文件拷貝到:C:\Users\Administrator\.jenkins\workspace\工做目錄\ 下


Jenkins相關插件介紹與配置:

Jenkins,以前叫作Hudson,是基於Java開發的一種持續集成工具,用於監控持續重複的工做,包括:

1.      持續的軟件版本發佈/測試項目。

2.      監控外部調用執行的工做。

Jenkins部署:

  • 下載地址:https://jenkins.io/index.html

  • 下載war包,將jenkins.war文件放入tomcat下的webapps目錄下

  • 啓動tomcat

  • 瀏覽器訪問:http://localhost:8080/jenkins

  • 新建項目:登陸jenkins--新建--輸入項目名稱--選擇:構建一個自由風格的軟件項目

Jenkins安裝插件:

  • 登陸jenkins--系統管理--管理插件--可選插件

  • 安裝:Ant Plugin、HTML Publisher plugin 、Performance plugin插件


JMeter插件:Performance plugin

  • 功能:用來展現jmeter執行結果

  • 配置:jenkins--選擇新建的項目--配置--增長構建後操做步驟--Publish Performance test result report--add a new report--選擇JMeter--Report files輸入: **/*.jtl

配置說明:

  • Report files:配置jtl文件路徑,相對路徑與絕對路徑都可,圖爲相對路徑

  • 其餘選項:配置失敗比例顯示圖形等參數,按需配置

     


    Ant插件:Ant plugin

  • 功能:用來執行Ant

  • 配置以下圖:

配置說明:

  • Ant Plugin能夠在構建步驟中添加,直接執行構建

  • Ant Version:在jenkins--系統管理--Global Tool Configuration--ant中維護

Html展現插件:HTML Publisher plugin

  • 功能:展現html報告

  • 配置截圖:

配置說明:

  • HTML directory to archive:填寫生成html文件的路徑(與Ant的 build.xml中設置的保持一致)

  • index page[s]:填寫展現報告的主頁(與Ant的build.xml中設置的保持一致)

  • 其餘選項:按需填寫

原理說明:

  • 本插件並不會本身產生html文件,而是經過xslt轉化xml生成的報告

  • xslt能夠本身在服務器中安裝,也能夠經過經過Ant配置文件指定jar包,本文就是經過Ant指定jmeter內部集成的jar包

  • 生成的html文件並非在jenkins中默認的報告路徑展現,而是會複製${jenkinshome}/jobs/projectname/htmlreports/HTML_REPORT 目錄下

  • 每次只能展現最新版本的html報告,也就是說上一次編譯的html報告會被覆蓋

  • 由於jenkins安全性的問題,默認加載出來的報告是無css的,經過如下配置解決:

  • HTML Publisher Plugin 插件在新的Jenkins版本中會致使打開的網頁中沒法加載CSS以及沒法點擊按鈕的狀況, 因爲CSP致使,可在Jenkins控制檯中執行,jenkins--系統管理--腳本命令行:System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","")以解決此問題。其餘因爲CSP緣由致使的html插件也可用此方法解決

Jenkins配置:

服務器環境與依賴:

  • Jdk:安裝並配置環境變量

  • Ant:安裝並配置環境變量

  • Jmeter:安裝並添加須要的插件

其餘:

  • Jmeter+Ant,須要將${jmeterhome}/extras/ant-jmeter-1.1.1.jar文件拷貝到${anthome}/lib目錄下,不然編譯會報錯

  • Jmeter如需連接數據庫,需添加jdbc插件

  • 若是不引入jmeter中的xslt,須要手動安裝該軟件

  • Jenkins項目配置:

  • jenkins的工做路徑,一樣的jar包均可能會生成不一樣的路徑。 jenkins--系統設置--系統設置


 

測試執行與報告優化:

測試報告模板:

jmeter自帶模板:

  • jmeter自帶了4個模板(jmeter3後下降爲2個)

  • 模板路徑:${jmeterhome}/extras/jmeter-results*.xsl

  • 模板效果(jmeter-result-detail_21.xsl):

  • 修改報告的名稱:${jmeterhome}/extras/jmeter-results*.xsl文件中<xsl:param    name="titleReport" select="'MiaomiTestReprot'"/>修改標紅部分

第三方模板:

  • 下載地址:http://shanhe.me/node/18/314

  • 把下載的文件放到jmeter的extras目錄下

  • 修改jmeter.properties文件以下部分,我這裏都修改爲true,這樣執行完腳本後就會保存這些結果到.jtl文件裏面:

第三方模板:

  • 下載地址:http://shanhe.me/node/18/314

  • 把下載的文件放到jmeter的extras目錄下

  • 修改jmeter.properties文件以下部分,我這裏都修改爲true,這樣執行完腳本後就會保存這些結果到.jtl文件裏面:

 

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=true
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

 

l  修改build.xml文件,以下style的值修改成新下載的xsl文件名:
  • <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>

     

    輸出的報告如圖:

 

關注微信公衆號,自動化測試交流

 

相關文章
相關標籤/搜索