1. 程式人生 > >【jmeter】Jmeter介面HTML視覺化測試報告——Jenkins+Jmeter+Ant自動化整合環境搭建

【jmeter】Jmeter介面HTML視覺化測試報告——Jenkins+Jmeter+Ant自動化整合環境搭建

目錄

一、環境搭建

二、檔案下載

三、檔案配置

四、本地除錯

五、建立.bat檔案

六、Jenkins配置郵件

七、配置測試專案

八、自動部署成功校檢

九、jmeter儀表盤HTML報告自動化構建



一、環境搭建

(1)不做整合,只在本機生成報告,需要安裝以下軟體:

①jdk安裝:【jdk】window10:jdk 8下載和安裝步驟

②Ant安裝:【Ant】Windows:Windows 10 安裝部署Ant

③jmeter安裝:【jmeter】jmeter 4.0下載安裝和漢化步驟


(2)【Windows】需要做自動化整合的,需要安裝以下軟體:

①jdk安裝:【jdk】window10:jdk 8下載和安裝步驟

②Ant安裝:【Ant】Windows:Windows 10 安裝部署Ant

③jmeter安裝:【jmeter】jmeter 4.0下載安裝和漢化步驟

④Jenkins安裝:【Jenkins】Windows 10:Jenkins的下載和安裝



二、檔案下載

(1)jmeter 生成詳細html報告需要下載檔案:“jmeter.results.shanhe.me.xsl” ,此檔案下載地址如下:

官網下載:點選前往下載


(2)jmeter 生成詳細html報告需要下載檔案:“build.xml” ,並且進行必要的修改。


(3)“jmeter.results.shanhe.me.xsl”和“build.xml”2個檔案下載地址:

百度網盤下載地址:點選前往下載     提取碼:uc74 
我的資源下載地址:點選前往下載



三、檔案配置

(1)將“jmeter.results.shanhe.me.xsl” 檔案放到jmeter安裝目錄的 extras 目錄下:


(2)使用ant構建執行Jmeter,並且生成jtl、Html報告,需修改jmeter的bin目錄下的“jmeter.properties”檔案:

①為防止亂碼出現,務必修改編碼 :UTF-8

# The encoding to be used if none is provided (default ISO-8859-1)
#sampleresult.default.encoding=ISO-8859-1

新增以下內容:
sampleresult.default.encoding=UTF-8


②jmeter預設儲存的是.csv格式的檔案,由於HTML報告的需要,針對jmeter生成的jtl檔案所包含的資料需要做新的配置,以滿足測試需求修改生成的jtl檔案為xml格式儲存資料,所以我們先要設定一下bin/jmeter.properties檔案內容,修改jmeter.properties檔案 :jmeter.save.saveservice.output_format=xml,修改後的文件內容如下:

注意: 如果在使用ant的時候出現了報錯,就把此配置檔案中的 “jmeter.save.saveservice.output_format=xml” 前面的加上“#”註釋掉,如果使用ant整合並且沒有報錯可以不把前面的#去掉。 

注意:後面要生成jmeter報告儀表盤時,發現這裡需要設定成:jmeter.save.saveservice.output_format=csv,
否則會報錯:ERROR o.a.j.JMeter: Error in NonGUIDriver
這個報告卻認定xml或者空,不能為csv,這個後面會說如何兩全,所以這裡可以直接註釋掉,或者設定為:
jmeter.save.saveservice.output_format=csv

# legitimate values: xml, csv, db.  Only xml and csv are currently supported.
#jmeter.save.saveservice.output_format=csv
jmeter.save.saveservice.output_format=xml

# The below properties are true when field should be saved; false otherwise
#
# assertion_results_failure_message only affects CSV output
jmeter.save.saveservice.assertion_results_failure_message=true
#
# legitimate values: none, first, all
#jmeter.save.saveservice.assertion_results=none
#
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=false
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
# Only available with HttpClient4
jmeter.save.saveservice.connect_time=true
#jmeter.save.saveservice.samplerData=false
jmeter.save.saveservice.samplerData=true
#jmeter.save.saveservice.responseHeaders=false
jmeter.save.saveservice.responseHeaders=true
#jmeter.save.saveservice.requestHeaders=false
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.encoding=false
jmeter.save.saveservice.bytes=true
# Only available with HttpClient4
#jmeter.save.saveservice.sent_bytes=true
jmeter.save.saveservice.url=true
#jmeter.save.saveservice.filename=false
jmeter.save.saveservice.filename=true
#jmeter.save.saveservice.hostname=false
jmeter.save.saveservice.hostname=true
jmeter.save.saveservice.thread_counts=true
#jmeter.save.saveservice.sample_count=false
jmeter.save.saveservice.sample_count=true
jmeter.save.saveservice.idle_time=true

# Timestamp format - this only affects CSV output files
# legitimate values: none, ms, or a format suitable for SimpleDateFormat
jmeter.save.saveservice.timestamp_format=ms
jmeter.save.saveservice.timestamp_format=yyyy/MM/dd HH:mm:ss.SSS

(3)【Windows】將jmeter的extras目錄下的ant-jmeter-1.1.1.jar檔案,拷貝到Ant的lib目錄下:


(4)修改並儲存jmeter的extras目錄下的“build.xml”檔案【這裡直接拿下載好的檔案覆蓋原內容,全部換掉!部分註釋的路徑自己去修改即可。】:

 

<?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="G:\Jmeter\apache-jmeter-5.0" />
    <!-- jmeter生成jtl格式的結果報告的路徑,可自定義--> 
    <property name="jmeter.result.jtl.dir" value="G:\Jmeter\apache-jmeter-5.0\report\jtl" />
    <!-- jmeter生成html格式的結果報告的路徑,可自定義-->
    <property name="jmeter.result.html.dir" value="G:\Jmeter\apache-jmeter-5.0\report\html" />
    <!-- 生成的報告的字首名字-->  
    <property name="ReportName" value="效能測試報告" />
    <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" />
    
    <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="G:\Jmeter\apache-jmeter-5.0\workspace" 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-detail-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的extras目錄下開啟CMD,執行"ant.bat -file build.xml -Dtest=Test" . 檢視jmeter的report目錄jtl和html目錄下是否出現Test.jtl、Test.html檔案,若有,則構建成功。
若構建失敗,請分析cmd列印的日誌訊息,定位問題:

ant.bat -file build.xml -Dtest=Test



五、建立.bat檔案

在命令視窗輸入引數執行有點麻煩,太繁瑣了。 可以使用.bat 批處理檔案進行快速執行。每次需要執行時只需要雙擊.bat檔案就可自動執行,很方便。

批處理檔案建立方法:在jmeter的extras目錄下,新建txt文件,重新命名字尾名為.bat 就可以了,比如JmeterReport.bat,然後用記事本編輯或者Notepad++編輯該檔案:



六、Jenkins配置郵件

點選前往檢視我的另一博文:【Jenkins】Jenkins的系統訊息和郵件通知配置



七、配置測試專案

(1)新建測試專案(介面測試) 

在Jenkins首頁左邊:點選新建任務 -> 選擇"構建一個自由風格的軟體專案",輸入Item名稱(中英文不限,建議使用英文) –> 點選確定,進入你新建的測試專案的配置頁面:


(2)專案配置——配置專案描述、歷史檔案自動刪除

①描述:用於編寫該專案的介紹(可忽略,專案過多時,自己可以備註,以便區分)。


②丟棄舊的構建:這裡勾選上,為了避免多餘的構建日誌、臨時檔案佔磁碟空間,需要定期的清除過期檔案。

例如這裡選擇儲存3天之內的構建檔案,最大儲存10個構建專案的檔案:


③點選右側的高階 -> 勾選使用自定義的工作空間

目錄填寫你的Jmeter安裝目錄中的指令碼存放目錄路徑即可。

說明:比如jmeter安裝目錄為G:\Jmeter\apache-jmeter-5.0,指令碼目錄是workspace,則此處填寫
G:\Jmeter\apache-jmeter-5.0\workspace:

(注意:設定工作目錄主要是ant構建時用到了該目錄下的build.xml檔案,以及的的jmx指令碼檔案、jtl檔案、html檔案存放在此處; 
準確的來說,此工作目錄與jmeter沒有任何關係,為了避免干擾,這裡直接將工作空間新增在jmeter目錄下。)


(3)原始碼管理

選擇none(無):


(4)構建觸發器——定時監控

選擇此專案構建的觸發條件,例如本專案的是為了實現介面的定時監控,於是選擇Build periodically(定期構建)。

注意:具體引數說明點選幫助按鈕檢視詳情:

例子:

#每十五分鐘(也許在:07,:22,:37,:52)
H / 15 * * * * 
#每小時上半場每十分鐘一次(三次,也許在:04,:14,: 24)
H(0-29)/ 10 * * * * 
#每小時一次,每小時45分鐘,從上午9:45開始,每個工作日下午3:45結束。
45 9-16 / 2 * * 1-5 
#每個工作日上午9點到下午5點每兩小時一次(可能是上午10:38,下午12點38分,下午2點38分,下午4點38分)
HH (9-16)/ 2 * * 1-5 
#每月1日和15日每天一次,除了12月
HH 1,15 1-11 *


(5)構建——批處理命令

構建 -> 增加構建操作 -> 執行Windows批處理命令 :


①此處編寫刪除jtl檔案的命令:

因為Jmeter執行jmx指令碼檔案,生成jtl報告檔案。如果存在同名的jtl檔案,並不會覆蓋,而是追加;當然,上面build檔案構建的,不會存在重複,因為檔名帶有時間,可以區分,但是這個jtl報告,歷史報告用處不大,自己看著是否需要刪除歷史報告來設定此操作。設定好之後:每次構建執行jmeter指令碼檔案之前會刪除之前所有的jtl檔案。

del "G:\Jmeter\apache-jmeter-5.0\report\jtl"\***.jtl


②繼續構建,增加之前Jenkins自動部署,執行之前寫好的bat檔案命令,實現一鍵執行測試計劃和輸出HTML報告:

@echo off
echo 執行並輸出測試報告
G:
cd G:\Jmeter\apache-jmeter-5.0\extras
JmeterReport.bat


(6)構建環境

選擇之前在jenkins設定的ant和jdk:


(7)構建後操作

新增構建後操作→Archive the artifacts(歸檔成品)



八、自動部署成功校檢

 

 



九、jmeter儀表盤HTML報告自動化構建

點選檢視我的另一博文:【jmeter】jmeter報告視覺化:配置生成報告儀表板,jmeter+Jenkins自動化構建生成HTML報告