使用ant+jmeter如何生成html报告

一、安装ant

下载apache-ant,放到对应路径下,然后进行环境变量配置。系统变量的CLASSPATH添加E:\Installation Pack\eclipse\apache-ant-1.9.6\lib;用户变量的PATH添加:E:\Installation Pack\eclipse\apache-ant-1.9.6\bin。打开cmd,执行 ant,提示"Buildfile:build.xml does not exist! Build failed"则配置成功,ant命令可用。如下图所示。

二、编写一个测试计划:

见jmeter的http请求。如baidu.jmx.

三、编写build.xml文件


<?xml version="1.0" encoding="UTF-8"?>

<project name="ant-jmeter-test" default="all" basedir=".">

  <!--为生成的jtl和html文件加时间戳-->

<tstamp>

<format property="time" pattern="yyyyMMddhhmm" />

</tstamp>

   <!--更改为自己的jmeter路径-->

<property name="jmeter.home" value="E:\Installation Pack\jmeter" />

   <!--更改为自己的jtl文件结果存放路径-->

<property name="jmeter.result.jtl.dir" value="E:\Installation Pack\JmeterTest\resultLog\jtl" />

   <!--更改为自己的html文件结果存放路径-->

<property name="jmeter.result.html.dir" value="E:\Installation Pack\JmeterTest\resultLog\html" />

<!--生成的html报告的前缀-->

<property name="ReportName" value="TestReport" />

   <!--jlt和html文件名称-->

<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" />


<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文件所在路径-->

<testplans dir="E:\Installation Pack\jmeter\bin\examples" includes="*.jmx" />

</jmeter>

</target>


<target name="report">

     <!--使用jmeter自己的转化文件:将jtl转化为xsl文件,改为自己的xsl文件所在路径-->

<xslt in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" />

<copy todir="${jmeter.result.html.dir}">

<fileset dir="${jmeter.home}/extras">

<include name="collapse.png" />

<include name="expand.png" />

</fileset>

</copy>

</target>

</project>

四、结果

在对应的路径下生成了jtl和html文件,如TestReport201511091118.html。在浏览器中打开html文件得到如下所示。

五、linux 下ant+jmeter的使用

1 安装:离线和在线安装两种,我是选的离线安装。

从http://ant.apache.org下载tar.gz版的ant,复制到usr路径下

进行解压:tar -xzvf apache-ant-1.9.6.tar.gz 

vi /etc/profile 编辑ANT_HOME路径:

export ANT_HOME=/usr/apache-ant-1.9.2

export PATH=$PATH:$ANT_HOME/bin

source /etc/profile使配置生效,执行 ant -version,测试ant是否生效。

2 jmeter 将jmeter文件夹拷贝到linux机器,我放到/opt/soft/jmeter路径,chmod 777 /opt/soft/jmeter/bin/jmeter.sh.   测试jmeter是否linux可用:


[root@bjdhj-120-215 bin]# sh jmeter.sh -n -t examples/AdTest.jmx -l result.jtl

Created the tree successfully using examples/AdTest.jmx

Starting the test @ Fri Nov 27 17:42:13 CST 2015 (1448617333572)

Waiting for possible shutdown message on port 4445

Tidying up ... @ Fri Nov 27 17:42:14 CST 2015 (1448617334581)

... end of run

3 su jenkins用户,执行ant,测试能否正确执行和生成对应文件。注意权限

六、问题

每次做点什么我都会遇到一大堆问题的,这次也不例外,总结一下,问题如下

1 生成的html报告中,Min Time和Max Time无值,显示NaN,百度了下需要添加xalan.jar,serializer.jar两个jar包放入ant的lib中,但是我放进去后日志报错,serializer的,所以我只把xalan.jar包放到了ant的lib中,可正确运行且得到了Max和Min值

报错信息如下:E:\Installation Pack\JmeterTest\resultLog\jtl\build.xml:16: The following error occurred while executing this line: E:\Installation Pack\JmeterTest\resultLog\jtl\build.xml:27: java.lang.IllegalAccessError: tried to access class org.apache.xml.serializer.ExtendedContentHandler from class org.apache.xalan.transformer.TransformerImpl at org.apache.xalan.transformer.TransformerImpl.createSerializationHandler(TransformerImpl.java:1152)

2 源文档中说可以增加90%Line这个参数并且贴出了代码,但是我实验了不成功,觉得写得不对。如下


<!--.......................其他内容略....................................-->

<!-- New add 90% line 这部分可不写,直接在<xsl:template name="summary">中把position参数传过去,position参数即count(/testResults/*)的值(总行数)-->

<xsl:variable name="allLineTime">

<xsl:call-template name="line">

<xsl:with-param name="nodes" select="/testResults/*/@t" />

<xsl:with-param name="postion" select="$allPostion" />

</xsl:call-template>

</xsl:variable>

<!--.......................其他内容略....................................-->

<!-- New add 90% line -->

<xsl:template name="line">

<xsl:param name="nodes" select="/.." />

<xsl:param name="postion" select="/.." />

<xsl:choose>

<xsl:when test="not($nodes)">LNaN</xsl:when>

<xsl:otherwise>

<xsl:for-each select="$nodes">

          <!--nodes得到的是响应时间列表,descending即按倒序排列,$position即得到的倒序后的最后一条,也就是第一条,所以并不是90%Line Time,我不大会写xml,未完成这个问题的解决,试图用公式没有成功。-->

<xsl:sort data-type="number" order="descending" />

<xsl:if test="position() =$postion">

            <!--number(.)即得到对应position的值。也就是指定记录的响应时间-->

<xsl:value-of select="number(.)" />

</xsl:if>

</xsl:for-each>

</xsl:otherwise>

</xsl:choose>

</xsl:template>

<!--.......................其他内容略....................................-->

3 如果90%可加,那么qps怎么计算的?都是需要自己写公式统计吗。明天问下擅长xml的同事把问题2解决掉,后续再扩展功能

ps:好难过,我问一个同事问题,他看到我在用ant编译,大大的鄙视了我一番,说现在都是maven啦,没人用ant。哭

4 问题:taskdef class org.programmerplanet.ant.taskdefs.jmeter.JMeterTask cannot be found

解决:把jar包:ant-jmeter-1.0.9.jar放到ant的lib路径中即可

5 linux下ant不能正确执行:

权限问题,把ant涉及到的所有目录都改成jenkins权限就行了。

行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群:,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐

  1. 如何将多个jtl文件合并到一个,并且生成html报告

    2024-07-17 05:16:01       24 阅读
  2. 如何正确使用 HTML 模板?

    2024-07-17 05:16:01       64 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 05:16:01       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 05:16:01       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 05:16:01       58 阅读
  4. Python语言-面向对象

    2024-07-17 05:16:01       69 阅读

热门阅读

  1. 0. 前言

    2024-07-17 05:16:01       33 阅读
  2. Elasticsearch(ES)数据备份迁移

    2024-07-17 05:16:01       21 阅读
  3. Vue 显示关键词附近内容并高亮显示关键词

    2024-07-17 05:16:01       22 阅读
  4. 如何在服务器中安装anaconda

    2024-07-17 05:16:01       28 阅读
  5. ES(笔记)

    2024-07-17 05:16:01       28 阅读
  6. Perl 语言入门学习

    2024-07-17 05:16:01       21 阅读
  7. 使用milvus-sdk-go的迭代器导出数据

    2024-07-17 05:16:01       24 阅读
  8. 通过apache的rewrite实现URL重定向

    2024-07-17 05:16:01       26 阅读