jmeter+ant+jenkins+mac报告优化

时间:2017-01-07 23:42:48   收藏:0   阅读:1030

    1.date not defined

    2.Min Time和Max Time显示成了NaN

 

  在解决问题之前,让我们先弄清楚Jmeter+Ant是生成报告的原理,知道原理后我们就可以很从容的解决问题了。另外,如果后续我们想定制报告也就很容易了。

  1、在Jmeter的extras目录下,官方已经为我们提供了一个现成的实例,我们只需要在该目录下执行ant命令就可以生成一个数据文件Test.jtl和一个报告Test.html(PS:如果没有安装ant需要先去安装,不会用ant的自行百度)。

  2、知道了上一步后,接下来我们研究的重点就是extras目录下的build.xml文件了,具体研究细节就不在此细说了,因为这就部分内容属于ant的范围,有需要的可以自行补充下ant的知识。

 

 1   <path id="xslt.classpath">   //jar路径
 2          <fileset dir="${jmeter.home}/lib" includes="xalan-2.7.2.jar"/>
 3          <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
 4   </path>
 5   //把生成的.jtl文件转换成.html格式的报告
 6   <target name="report">
 7           <xslt 
 8               classpathref="xslt.classpath"
 9               force="true"
10              in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" >
11              <param name="showData" expression="${show-data}"/>
12              <param name="titleReport" expression="${ReportName}${time}"/>
13              <param name="dateReport" expression="${ReportName}${time}"/>
14          </xslt>
15  </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文件中后,可以一并解决这两个问题。解决第二个总是的关键代码是第8行和第9行:

  classpathref="xslt.classpath"

  force="true"

      而第8行又引用了第1~4行

      4、到此,两个问题都解决了,最终修改后的build.xml文件如下,标黄是解决时添加的代码 

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <project name="JmeterTest" default="all" basedir=".">
 3     <tstamp>
 4         <format property="time" pattern="yyyyMMddhhmm" />
 5     </tstamp>
 6     <!-- 需要改成自己本地的 Jmeter 目录-->
 7     <property name="jmeter.home" value="/Applications/apache-jmeter-3.0" />
 8     <!-- jmeter生成jtl格式的结果报告的路径-->
 9     <property name="jmeter.result.jtl.dir" value="report/jtl" />
10     <!-- jmeter生成html格式的结果报告的路径-->
11     <property name="jmeter.result.html.dir" value="report/html" />
12     <!-- 生成的报告的前缀 -->
13     <property name="ReportName" value="TestReport" />
14     <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />
15     <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" />
16     <!-- 接收测试报告的邮箱 -->
17     <property name="mail_to" value="chengqian@souche.com" />
18     <!-- 电脑地址 -->
19     <property name="ComputerName" value="chichi" />
20     <target name="all">
21         <antcall target="login" />
22         <antcall target="report" />
23     </target>
24     <target name="login">
25         <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
26         <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
27             <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本 -->
28             <testplans dir="/Applications/apache-ant-1.9.7/" includes="11.jmx" />
29             <property name="jmeter.save.saveservice.output_format" value="xml" />
30         </jmeter>
31     </target>
32     
33     <path id="xslt.classpath">
34       <fileset dir="${jmeter.home}/lib" includes="xalan-2.7.2.jar"/>
35       <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
36     </path>
37     
38     <target name="report">
39         <xslt 
40             classpathref="xslt.classpath"
41             force="true"
42             in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" >
43             <param name="showData" expression="${show-data}"/>
44             <param name="titleReport" expression="${ReportName}${time}"/>
45             <param name="dateReport" expression="${ReportName}${time}"/>
46         </xslt>
47         <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
48         <copy todir="${jmeter.result.html.dir}">
49             <fileset dir="${jmeter.home}/extras">
50                 <include name="collapse.png" />
51                 <include name="expand.png" />
52             </fileset>
53         </copy>
54     </target>
55     <!-- 发送邮件 -->
56 </project>

5.优化后的报告如下:

技术分享

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!