使用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权限就行了。

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

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/192002.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【业务场景】长列表的处理

长列表的处理 1. 什么是长列表 在前端开发中&#xff0c;经常会遇到列表展示&#xff0c;如果列表项的数量比较多&#xff0c;我们一般选择采用分页的方式来进行处理 但传统的前后翻页方式只适用于后台的管理系统中&#xff0c;而在用户端、尤其是在移动端&#xff0c;为了保…

基于51单片机PCF8591数字电压表数码管显示设计( proteus仿真+程序+设计报告+讲解视频)

PCF8591数字电压表数码管显示 1.主要功能&#xff1a;讲解视频&#xff1a;2.仿真3. 程序代码4. 设计报告5. 设计资料内容清单&&下载链接资料下载链接&#xff08;可点击&#xff09;&#xff1a; 基于51单片机PCF8591数字电压表数码管设计( proteus仿真程序设计报告讲…

kafka和rocketMq的区别

kafka topic 中每一个分区会有 Leader 与 Follow。Kafka 的内部机制可以保证 topic 某一个分区的 Leader 与 Follow 不在同一台机器上 Leader 节点承担一个分区的读写&#xff0c;Follow 节点只负责数据备份 如果 Leader 分区所在的 Broker 节点宕机&#xff0c;会触发主从节…

【C/C++底层】内存分配:栈区(Stack)与堆区(Heap)

/*** poject * author jUicE_g2R(qq:3406291309)* file 底层内存分配&#xff1a;栈区(Stack)与堆区(Heap)* * language C/C* EDA Base on MVS2022* editor Obsidian&#xff08;黑曜石笔记软件&#xff09;* * copyright 2023* COPYRIGHT …

Linux应用层点亮硬件的LED灯

一 应用层操作硬件的两种方法 应用层想要对底层硬件进行操控&#xff0c;通常可以通过两种方式&#xff1a; /dev/目录下的设备文件&#xff08;设备节点&#xff09;&#xff1b;/sys/目录下设备的属性文件。 具体使用哪种方式需要根据不同功能类型设备进行选择&#xff0c;通…

保序回归:拯救你的校准曲线(APP)

保序回归&#xff1a;拯救你的校准曲线&#xff08;APP&#xff09; 校准曲线之所以是评价模型效能的重要指标是因为&#xff0c;校准曲线衡量模型预测概率与实际发生概率之间的一致性&#xff0c;它可以帮助我们了解模型的预测结果是否可信。一个理想的模型应该能够准确地预测…

Python 框架学习 Django篇 (十) Redis 缓存

开发服务器系统的时候&#xff0c;程序的性能是至关重要的。经过我们前面框架的学习&#xff0c;得知一个请求的处理基本分为接受http请求、数据库处理、返回json数据&#xff0c;而这3个部分中就属链接数据库请求的响应速度最慢&#xff0c;因为数据库操作涉及到数据库服务处理…

深入了解springmvc响应数据

目录 一、前后端分离开发与混合开发 1.1 混合开发模式 1.2 前后端分离模式【重点】 二、页面跳转控制 2.1 通过JSP实现页面跳转 2.2 转发与重定向 三、返回JSON数据 3.1 导包与配置 3.2 使用ResponseBody 四、返回静态资源 4.1 为什么无法直接查询静态资源 4.2 配置…

vscode 访问本地或者远程docker环境

1、vscode 访问docker本地环境 直接点击左下角连接图标&#xff0c;弹出选项可以选择容器&#xff0c;只要容器在本地运行者&#xff0c;选择attach可以看到运行中的容器可以选择&#xff0c;选择其中需要选择的就行 ## 运行容器&#xff0c;可以-d后台运行都可以 docker run…

hadoop 虚拟机配置大数据环境 hadoop(二)

1. 安装epel-release 注:Extra Packages for Enterprise Linux 是为“红帽系”的操作系统提供额外的软件包,适用于RHEL、CentOS 和Scientific Liux。相当于是一个软件仓库&#xff0c;大多数rpm 包在官方repository 中是找不到的) 命令&#xff1a; yum install -y epel-relea…

SpringBoot3基础特性

SpringBoot3基础特性 SpringApplication 自定义banner 类路径添加banner.txt或设置spring.banner.location就可以定制banner推荐网站:Spring Boot banner在线生成工具&#xff0c;制作下载英文banner.txt,修改替换banner.txt文字实现自定义。 提示&#xff1a; 可以通过修改配…

为什么数据安全很重要?哪些措施保护数据安全?

数据安全很重要的原因是因为数据是现代社会的重要财产之一。很多组织和企业依赖数据来做出商业决策&#xff0c;管理客户关系&#xff0c;进行财务规划等等。如果这些数据泄露或遭到黑客攻击&#xff0c;那么就会影响企业的经济利益&#xff0c;甚至影响到个人的隐私和安全。此…

VuePress介绍及使用指南

VuePress是一个基于Vue.js的静态网站生成工具&#xff0c;它专注于以Markdown为中心的项目文档。VuePress具有简单易用的特性&#xff0c;同时提供了强大的自定义和扩展性。在本文中&#xff0c;我们将介绍VuePress的基本概念&#xff0c;并提供一个简单的使用指南。 什么是Vue…

Linux shell编程学习笔记25:tty

1 tty的由来 在 1830 年代和 1840 年代&#xff0c;开发了称为电传打字机&#xff08;teletypewriters&#xff09;的机器&#xff0c;这些机器可以将发件人在键盘上输入的消息“沿着线路”发送在接收端并打印在纸上。 电传打字机的名称由teletypewriters&#xff0c; 缩短为…

计算机毕业设计 基于SpringBoot的在线考试系统的研究与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

[Hive] INSERT OVERWRITE DIRECTORY要注意的问题

在使用Hive的INSERT OVERWRITE语句时&#xff0c;需要注意以下问题&#xff1a; 数据覆盖&#xff1a;INSERT OVERWRITE语句会覆盖目标目录中的数据。因此&#xff0c;在执行该语句之前&#xff0c;请确保目标目录为空或者你希望覆盖的数据已经不再需要。数据格式&#xff1a;…

香港科技大学广州|智能制造学域机器人与自主系统学域博士招生宣讲会—中国科学技术大学专场

&#x1f3e0;地点&#xff1a;中国科学技术大学西区学生活动中心&#xff08;一楼&#xff09;报告厅 【宣讲会专场1】让制造更高效、更智能、更可持续—智能制造学域 &#x1f559;时间&#xff1a;2023年11月16日&#xff08;星期四&#xff09;18:00 报名链接&#xff1a…

Django视图层()

视图层 django视图层&#xff1a;Django项目下的views.py文件&#xff0c;它的内部是一系列的函数或者是类,用来处理客户端的请求后处理并返回相应的数据 三板斧 HttpResponse # 返回字符串 render # 返回html页面&#xff0c;并且在返回浏览器之前还可以给html文件…

matlab 二自由度操纵稳定性汽车模型

1、内容简介 略 19-可以交流、咨询、答疑 二自由度操纵稳定性汽车模型 二自由度、操纵稳定性、操纵动力学 2、内容说明 1 模型假设 忽略转向系的影响&#xff0c;以前、后轮转角作为输入&#xff1b;汽车只进行平行于地面的平面运动&#xff0c;而忽略悬架的作用&#xf…

linux时间同步

搭建集群时&#xff0c;都会先设置时间同步&#xff0c;否则会出现多种问题。 方式一&#xff1a; 1.安装ntp软件 yum install -y ntp 2.更新时区 删除原有时区&#xff1a;sudo rm -f /etc/localtime 加载新时区&#xff1a;sudo ln -s /usr/share/zoneinfo/Asia/Shangh…