源博文来自于  http://my.oschina.net/hellotest/blog/517518

主要应用于接口的回归或者性能的简单查看功能。操作为先在jmeter中写好测试计划,保存为jmx文件,在cmd窗口对应路径下执行ant命令,会完成jmx计划的执行和生成jtl文件,并将jtl文件转化为html页面进行查看。后续可扩展为接入jenkins集成,并邮件发送。

一 安装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 % 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 % 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权限就行了。

【JMeter】ant+jmeter生成html报告的更多相关文章

  1. window 下 jmeter+ant 自动生成html报告并发送邮件

    一.安装ant 1.ant 下载地址:https://ant.apache.org/bindownload.cgi 2.下载完成解压到指定目录下 3.配置ant 环境变量 新建系统变量 -ANT_HO ...

  2. JMeter Ant Task 生成的*.jtl打开之后request和response data是空的,怎样让其不是空的呢?

    JMeter Ant Task 生成的*.jtl打开之后request和response data是空的,怎样让其不是空的呢?修改JMeter.properties,将jmeter.save.save ...

  3. jmeter+ant+jenkins生产的报告乱码

    jmeter+ant+jenkins生产的报告乱码 问题:生产报告会乱码的问题,一般是有编码格式引起的.我遇到的问题是,jmeter需要读取csv的数据作为参数.但是我们并不知道csv保存是什么编码格 ...

  4. Jmeter系列-自动生成html报告

    从JMeter 3.0开始已支持自动生成动态报告,我们可以更容易根据生成的报告来完成我们的性能测试报告. 如何生成html测试报告 如果未生成结果文件(.jtl),可运行如下命令生成报告: jmete ...

  5. jenkins+jmeter+ant+jmeter在Jenkins上报告

    1.jmeter+ant 参考 http://www.cnblogs.com/dieyaxianju/p/8268802.html 2.在jenkins上配置 3.执行成功 4.配置报告  参考 下载 ...

  6. 利用ant 执行jmeter用例生成html格式报告

    1.安装ant 2.准备jmeter 及用例文件.jmx 3.编辑ant 执行文件build.xml <?xml version="1.0" encoding="G ...

  7. Jmeter+ant+Jenkins实现接口自动化平台及报告发送

    项目中实现了比较方便的自动化体系,一直没时间总结一下,现抽空整理一番,废话不多说  内容如下: 一.环境准备  jmeter : 编写接口脚本,实现接口测试 ant  :静默执行jmeter脚本,并生 ...

  8. Jenkins+Ant+JMeter报告自动化

    1.参考Jenkins+Ant+JMeter集成,安装Jenkins(不需要安装Performance Plugin插件),建立Slave节点,连接Slave节点,创建任务等. 2.将Jenkins+ ...

  9. 一.Jmeter+Ant+Jenkins搭建持续集成接口性能自动化测试

    微创新作品信息 1)微创新作品描述 A.为什么诞生: 1. 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换, ...

  10. jenkins+ant+jmeter接口自动化测试(持续构建)

    使用badboy录制脚本,到处到jmeter后进行接口自动化,后来想着 可不可以用自动化来跑脚本呢,不用jmeter的图形界面呢, 选择了ant来进行构建,最后想到了用Jenkins来进行持续构建接口 ...

随机推荐

  1. cocos2dx之C++调用Lua

    原文地址:http://blog.csdn.net/dingkun520wy/article/details/49839701 1.引入头文件 #include "cocos2d.h&quo ...

  2. 【BZOJ 1070】[SCOI2007]修车

    Description 同一时刻有N位车主带着他们的爱车来到了汽车维修中心.维修中心共有M位技术人员,不同的技术人员对不同的车进行维修所用的时间是不同的.现在需要安排这M位技术人员所维修的车及顺序,使 ...

  3. linux驱动系列之makefile

    在linux环境下做嵌入式无论是编写应用程序还是驱动程序等等,都需要用make来进行程序的编译,就需要学会自己编写Makefile.Makefile主要的作用有3点:1.决定编译哪些文件 2.怎样编译 ...

  4. 简单的SQL Server在线查看和执行系统

    在大的公司里面,往往数据库和表都非常的多,一张表的字段也是会有几十个.如果这么多的表和字段没有说明注释的话,查看起来会一头雾水,新来的或者别的部门的同事看到表和字段会完全不知道是干嘛的,只能靠名称来猜 ...

  5. Netty4.x中文教程系列(一) Hello World !

    1.下载并为项目添加Netty框架 1. Netty的包大家可以从Netty官网:http://netty.io/downloads.html 下载 如图所示: Netty提供了四个个主要版本的框架包 ...

  6. jquery捕捉文本域输入事件

    <input type='text' /> change事件是在文本域光标失去焦点时才会触发,要监听正在输入内容事件用键盘事件监听如果想要捕捉文本域输入事件,可以使用$("inp ...

  7. 团体程序设计天梯赛-练习集L1-001. Hello World

    L1-001. Hello World 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 这道超级简单的题目没有任何输入. 你只需要在一行中输 ...

  8. Fiddler 日志

    Fiddler 日志(Logging) 在开发扩展插件及编写FiddlerScript时对调试程序非常有用. 1.输出日志 在FiddlerScript脚本中,你可以这样输出输出日志: Fiddler ...

  9. 第一章、关于SQL Server数据库的备份和还原(sp_addumpdevice、backup、Restore)

    在sql server数据库中,备份和还原都只能在服务器上进行,备份的数据文件在服务器上,还原的数据文件也只能在服务器上,当在非服务器的机器上启动sql server客户端的时候,也可以通过该客户端来 ...

  10. SaaS系列介绍之十: SaaS的商业模式

    1 引言 赚钱之道很多,但是找不到赚钱的种子,便成不了事业家.作为职业软件人,我们都寻求使用一种有效而经济的过程来建造一个能够工作的,有用的产品.                            ...