Jmeter預設報告優化
一、本文目的:
之前寫了兩篇文章搭建持續整合介面測試平臺(Jenkins+Ant+Jmeter)和ANT批量執行Jmeter指令碼,功能實現上都沒有什麼問題,但是最後生成的報告有一點小問題,雖然不影響使用,但總是感覺不夠完美,具體問題如下:
1、Date report這裡的時間沒有正確顯示出來
2、Summary裡的欄位Min Time和Max Time顯示的是NaN,沒有顯示正確的時間。
本文主要解決上述兩個問題,具體報告如何生成可參考上面提到的兩篇文章。
二、Jmeter+Ant報告生成原理:
在解決問題之前,讓我們先弄清楚Jmeter+Ant是生成報告的原理,知道原理後我們就可以很從容的解決問題了。另外,如果後續我們想定製報告也就很容易了。
1、在Jmeter的extras目錄下,官方已經為我們提供了一個現成的例項,我們只需要在該目錄下執行ant命令就可以生成一個資料檔案Test.jtl和一個報告Test.html(PS:如果沒有安裝ant需要先去安裝,不會用ant的自行百度)。
2、知道了上一步後,接下來我們研究的重點就是extras目錄下的build.xml檔案了,具體研究細節就不在此細說了,因為這就部分內容屬於ant的範圍,有需要的可以自行補充下ant的知識。
三、解決問題:
1、找到extras目錄下build.xml檔案內容的如下部分:它的作用就是把生成的.jtl資料檔案轉換為.html格式的報告
具體屬性的含義:
- in:生成的.jtl檔案的路徑
- out:生成的.html檔案的路徑
- style:從.jtl轉換成.html所使用的樣式,這些檔案也在extras目錄下,這個是最重要的部分,如果我們想定製報告可以自行定義這個檔案或者從網上找一些合適的檔案。
- param:引數,這幾個引數可以在style中使用,下面會講到。
- path:新增jar包的路徑,在下面的target中有引用到(下面第9行)。
1 <path id="xslt.classpath">//jar的路徑 2 <fileset dir="${lib.dir}" includes="xalan*.jar"/> 3 <fileset dir="${lib.dir}" includes="serializer*.jar"/> 4 </path> 5 //把生成的.jtl資料檔案轉換成.html格式的報告 6 <target name="xslt-report" depends="_message_xalan"> 7 <tstamp><format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/></tstamp> 8 <xslt 9 classpathref="xslt.classpath" 10 force="true" 11 in="${testpath}/${test}.jtl" 12 out="${testpath}/${test}.html" 13 style="${basedir}/jmeter-results-detail-report${style_version}.xsl"> 14 <param name="showData" expression="${show-data}"/> 15 <param name="titleReport" expression="${report.title}"/> 16 <param name="dateReport" expression="${report.datestamp}"/> 17 </xslt> 18 </target>
2、通過上面的分析,style 檔案是整成報告轉換的關鍵,那我們就開啟jmeter-results-detail-report_21.xsl這個檔案看看,找到如下幾行,這裡也定義了三個引數跟build.xml檔案中一樣,由此可猜測,我們只要在build.xml檔案中定義dateReport這個引數和值,在style中就可以按如下方式使用,經過測試證明猜測是正確的,那麼第一個問題就解決了:
1 <xsl:param name="showData" select="'n'"/> 2 <xsl:param name="titleReport" select="'Load Test Results'"/> 3 <xsl:param name="dateReport" select="'date not defined'"/>
3、對於第二個問題,其實把第1步中的程式碼複製到我們自己的build.xml檔案中後,可以一併解決這兩個問題。解決第二個總是的關鍵程式碼是第9行和第10行:
classpathref="xslt.classpath"
force="true"
而第9行又引用了第1~4行
4、到此,兩個問題都解決了,最終修改後的build.xml檔案如下,標黃是解決總是新增的程式碼:
<?xml version="1.0" encoding="UTF-8"?> <project name="ant-jmeter-test" default="run" basedir="."> <!-- 需要改成自己本地的 Jmeter 目錄--> <property name="jmeter.home" value="/Users/Tools/Jmeter" /> <property name="report.title" value="介面測試"/> <!-- jmeter生成jtl格式的結果報告的路徑--> <property name="jmeter.result.jtl.dir" value="/Users/Desktop/jmx/report" /> <!-- jmeter生成html格式的結果報告的路徑--> <property name="jmeter.result.html.dir" value="/Users/Desktop/jmx/report" /> <!-- 生成的報告的字首--> <property name="ReportName" value="TestReport" /> <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}.jtl" /> <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}.html" /> <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="/Users/Desktop/jmx" includes="*.jmx" /> <property name="jmeter.save.saveservice.output_format" value="xml"/> </jmeter> </target> <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"> <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>
5、修改後的報告:
作者:Glen.He
出處:http://www.cnblogs.com/puresoul/
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。
相關文章
- Jmeter報告優化之New XSL stylesheetJMeter優化
- 預告片優化方案優化
- Jmeter系列(43)- 詳解 Jmeter 圖形化 HTML 壓測報告之 Charts 模組JMeterHTML
- jmeter學習指南之聚合報告JMeter
- jmeter壓力測試報告 - DEMOJMeter測試報告
- 『動善時』JMeter基礎 — 54、JMeter聚合報告詳解JMeter
- 系統優化報告表格樣例優化
- Jmeter 介面自動化連載 (13) - 自動生成測試報告JMeter測試報告
- jmeter分析效能報告時的誤區JMeter
- Jmeter——結合Allure展示測試報告JMeter測試報告
- jmeter+ant輸出測試報告JMeter測試報告
- 【效能優化】Oracle 部署 Statspack並生成報告優化Oracle
- Jmeter配置元件-http預設請求值JMeter元件HTTP
- jmeter_彙總報告_資料解讀JMeter
- 理解 JMeter 聚合報告(Aggregate Report)JMeter
- Jmeter中預設語言的顯示JMeter
- 一張圖帶你理解jmeter中的聚合報告JMeter
- 『動善時』JMeter基礎 — 17、JMeter配置元件【HTTP請求預設值】JMeter元件HTTP
- Ascend2:2015年登入頁優化調查報告(附報告)優化
- 『動善時』JMeter基礎 — 56、JMeter使用命令列模式生成HTML測試報告JMeter命令列模式HTML測試報告
- jmeter無圖形介面執行測試並生成報告JMeter
- 引入測試報告與結構優化(二)測試套件測試報告優化套件
- 【效能優化】sqlplus中使用指令碼生成awr報告優化SQL指令碼
- SEOMonitor:SEO預測調查報告
- 三、Jmeter--HTTP請求預設值(HTTP Request Defaults)和訪問地址引數化JMeterHTTP
- JICMAIL:2021年A/B測試優化郵件效能報告AI優化
- 求助貼 Jmeter 報錯JMeter
- Ant+jmeter 生成報告時報錯引用字元&#,怎麼解決JMeter字元
- Jmeter3.1官方自帶的HTML圖形測試報告 + 漢化JMeterHTML測試報告
- 歐央行研究報告發現Twitter可預測股市–(含全文報告)
- Pytest單元測試框架生成HTML測試報告及優化框架HTML測試報告優化
- 【直播預告】優化器及 Flink CDC + OceanBase 全增量一體化資料整合方案優化
- 直播預告:IT基礎設施國產化,創新是動力之源
- 使用預計算分割槽優化引數化優化
- 淺析Oracle 11g中對資料列預設值變化的優化Oracle優化
- sql優化設定SQL優化
- 人工智慧惡意使用報告:預測、預防和緩解人工智慧
- 前端效能優化 – 資源預載入前端優化