您的位置:軟件測試 > 開源軟件測試 > 開源性能測試工具 > Jmeter
JMeter默認報告優(yōu)化
作者:網(wǎng)絡轉(zhuǎn)載 發(fā)布時間:[ 2016/2/29 13:26:42 ] 推薦標簽:性能測試 軟件測試工具

  一、本文目的:
  之前寫了兩篇文章搭建持續(xù)集成接口測試平臺(Jenkins+Ant+Jmeter)和ANT批量執(zhí)行Jmeter腳本,功能實現(xiàn)上都沒有什么問題,但是后生成的報告有一點小問題,雖然不影響使用,但總是感覺不夠完美,具體問題如下:
  1、Date report這里的時間沒有正確顯示出來
  2、Summary里的字段Min Time和Max Time顯示的是NaN,沒有顯示正確的時間。

  本文主要解決上述兩個問題,具體報告如何生成可參考上面提到的兩篇文章。
  二、Jmeter+Ant報告生成原理:
  在解決問題之前,讓我們先弄清楚Jmeter+Ant是生成報告的原理,知道原理后我們可以很從容的解決問題了。另外,如果后續(xù)我們想定制報告也很容易了。
  1、在Jmeter的extras目錄下,官方已經(jīng)為我們提供了一個現(xiàn)成的實例,我們只需要在該目錄下執(zhí)行ant命令可以生成一個數(shù)據(jù)文件Test.jtl和一個報告Test.html(PS:如果沒有安裝ant需要先去安裝,不會用ant的自行百度)。
  2、知道了上一步后,接下來我們研究的重點是extras目錄下的build.xml文件了,具體研究細節(jié)不在此細說了,因為這部分內(nèi)容屬于ant的范圍,有需要的可以自行補充下ant的知識。
  三、解決問題:
  1、找到extras目錄下build.xml文件內(nèi)容的如下部分:它的作用是把生成的.jtl數(shù)據(jù)文件轉(zhuǎn)換為.html格式的報告
  具體屬性的含義:
  in:生成的.jtl文件的路徑
  out:生成的.html文件的路徑
  style:從.jtl轉(zhuǎn)換成.html所使用的樣式,這些文件也在extras目錄下,這個是重要的部分,如果我們想定制報告可以自行定義這個文件或者從網(wǎng)上找一些合適的文件。
  param:參數(shù),這幾個參數(shù)可以在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數(shù)據(jù)文件轉(zhuǎn)換成.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 文件是整成報告轉(zhuǎn)換的關鍵,那我們打開jmeter-results-detail-report_21.xsl這個文件看看,找到如下幾行,這里也定義了三個參數(shù)跟build.xml文件中一樣,由此可猜測,我們只要在build.xml文件中定義dateReport這個參數(shù)和值,在style中可以按如下方式使用,經(jīng)過測試證明猜測是正確的,那么第一個問題解決了:
  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格式的結(jié)果報告的路徑-->
<property name="jmeter.result.jtl.dir" value="/Users/Desktop/jmx/report" />
<!-- jmeter生成html格式的結(jié)果報告的路徑-->
<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、修改后的報告:

軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd