jenkins+ant+jmeter实现自动化集成(详解)
jenkins+ant+jmeter实现自动化集成 for window
一、jmeter
1.jmeter安装
二、ant
1.ant安装
三、ant运行 jmeter脚本
1.配置
四、jenkins部署
一、jmeter
今天自主研习jmeter+ant+jenkins自动化环境部署,网上提供了很多教程介绍,Windows版本的,mac版的,很多。每一篇都大概看了,也跟着操作但还是会卡在某个环节,感觉很多教程介绍的不是很详细,有些步骤略过了,导致我部署环境遇到了很多问题。记录下来,边学习边巩固,而且之后会用到的。
1.jmeter安装
使用谷歌浏览器进入 jmeter官网:https://jmeter.apache.org/ 下载jmeter zip包
下载比较简单,下载后我把压缩包放在 applications目录下进行解压,
之后进入控制面板编辑系统环境变量,编辑path,新建变量把jmeter路径添加至列表保存

win+R 输入cmd 打开 windows 系统 DOs 命令窗口 输入 jmeter -v 查看是否安装成功和安装的版本是否一致,显示如下图代表配置成功啦!

之后启动只要在终端输入jmeter回车就可以启动了(懒人必备!)

二、ant安装
1.ant安装包下载地址
http://ant.apache.org/bindownload.cgi
下载zip文件并进行解压缩(我把下载文件放在了和Jmeter同一个路径applications目录下)


2.配置环境变量
设置ant环境变量(此处为我的安装路径)
ANT_HOME=E:\application\apache-ant-1.10.9
CLASSPATH=E:\application\apache-ant-1.10.9
Path=E:\application\apache-ant-1.10.9\bin
【也可以Path=%ANT_HOME%\bin】

3.安装验证
1)首先配置好环境之后,需将 jmeter的extras目录中ant-jmeter-1.1.1.jar包拷贝至ant安装目录下的lib目录中,该包相当于是ant和jmeter连接的桥梁,作用
是使Ant运行时能够找到"org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"这个类,从而成功触发JMeter脚本

2)修改Jmeter的bin目录下jmeter.properties文件的配置:jmeter.save.saveservice.output_format=xml
作用是使Jmeter报告输出文件格式为xml

3)在jmeter安装目录下新建文件夹demo,在demo下新建文件夹report,report下再新建jtl和html文件夹,html和jtl文件夹的作用:
html文件夹:用于保存html的结果报告
jtl文件夹:用于保存jmeter的测试脚本
(一开始jtl和html文件夹下都是空的,执行了ant命令之后jtl会生成截图)

4)在CMD下输入ant -version后,会输出 ant版本号,说明配置成功,下一步配置build.xml文件

build.xml:Ant根据该文件运行jmeter脚本(关键文档,需要配置正确)
它的作用就是把生成的.jtl数据文件转换为.html格式的报告
具体属性的含义:
in:生成的.jtl文件的路径
out:生成的.html文件的路径
style:从.jtl转换成.html所使用的样式,这些文件也在extras目录下,这个是最重要的部分,如果我们想定制报告可以自行定义这个文件或者从网上找一些合适的文件。
build.xml通用模版如下:
<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddHHmm" />
</tstamp>
<!-- 需要改成自己本地的Jmeter目录-->
<property name="jmeter.home" value="/Applications/apache-jmeter-5.1.1" />
<!-- jmeter生成jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="/Applications/apache-jmeter-5.1.1/demo/report/jtl" />
<!-- jmeter生成html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="/Applications/apache-jmeter-5.1.1/demo/report/html" />
<!-- 生成的报告的前缀-->
<property name="ReportName" value="TestReport" />
<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" />
<!-- 输出生成的报告名称和存放路径-->
<echo message="${jmeter.result.jtlName}"/>
<echo message="${jmeter.result.htmlName}"/>
<echo message="${jmeter.result.html.dir}"/>
<target name="run">
<antcall target="test"/>
<antcall target="report"/>
</target>
<!-- 指定ant-jmeter-1.1.1.jar 的位置 -->
<path id="jmeter.classpath">
<fileset dir="${jmeter.home}/extras">
<include name="ant-jmeter-1.1.1.jar"/>
</fileset>
</path>
<!--加载jar包,解决显示时间问题-->
<path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
<fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
</path>
<target name="test">
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本,比如test*。jmx表示以test开头的所有.jmx文件-->
<testplans dir="/Applications/apache-jmeter-5.1.1/demo" includes="*.jmx" />
<!-- 声明ant执行jmeter时,传入jmeter的属性值,可以自定义必须是xml格式 -->
<property name="jmeter.save.saveservice.output_format" value="xml"/>
</jmeter>
</target>
<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">
<!--jmeter-results-detail-report_21.xsl这里的文件名可以换成你想要的报告效果-->
<!--显示dateReport的时间-->
<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>
根据个人环境的不同,上述需要修改的模版参数为:

build.xml文件的配置比较重要,网上有些是有的build.xml模板缺漏 导致允许时,一直build failed。因此需检查是否有以下该段代码
<!-- 指定ant-jmeter-1.1.1.jar 的位置 -->
<path id="jmeter.classpath">
<fileset dir="${jmeter.home}/extras">
<include name="ant-jmeter-1.1.1.jar"/>
</fileset>
</path>
5)准备要要运行的项目,把写好的jmemeterh脚本放在demo目录下

6) 运行。我的build.xml文件放在demo目录下,所以先终端切换到该目录
# 终端cd到demo目录
cd /Applications/apache-jmeter-5.1.1/demo
# 之后运行
ant
# 或者
ant run

执行成功后查看 E:\application\apache-jmeter-5.4\demo\report 下的html和jtl文件建是否有报告生成
四、jenkins部署
1.安装jenkins
可参考我的这篇文章jenkins下载安装
2.安装后,新建一个自由风格的项目 ....待更新
jenkins+ant+jmeter实现自动化集成(详解)的更多相关文章
- Jenkins+Ant+Jmeter接口自动化集成测试实例
Jenkins+Ant+Jmeter接口自动化集成测试实例 一.Jenkins安装配置 1.安装配置JDK1.6+环境变量: 2.下载jenkins.war,放入C:\jenkins目录下,目录位置随 ...
- Jenkins+Ant+JMeter报告自动化
1.参考Jenkins+Ant+JMeter集成,安装Jenkins(不需要安装Performance Plugin插件),建立Slave节点,连接Slave节点,创建任务等. 2.将Jenkins+ ...
- Jenkins+Ant+Jmeter搭建持续集成的接口测试平台(转)
一.什么是接口测试? 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻 ...
- jenkins+ant+jmeter接口自动化的持续集成
一.jmeter.jenkins安装 这里不再说明,请看上一个随笔!!! 链接:https://www.cnblogs.com/magicYJ/p/11839646.html 二.ant安装 下载地址 ...
- 【转】Jenkins+Ant+Jmeter搭建持续集成的接口测试平台
一.什么是接口测试? 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻 ...
- Jenkins+ant+Jmeter接口自动化框架搭建
工具准备 JDK: jdk1.8.0_111 Ant: apache-ant-1.9.9 Jmeter: apache-jmeter-3.1 Jenkins: jenkins-2.7.4 JDK安装 ...
- jenkins+ant+jmeter搭建持续集成的接口测试平台
一.jemter接口脚本的编写步骤如下: 1. 编写接口请求 通过录制或者查看接口文档,编写接口请求,进行调试,确保接口调试通过,对于http的请求来说,就是正确的填写域名,查询字符串,查询参数等信息 ...
- Jenkins+Ant+Jmeter接口自动化集成测试
一.Jmeter+ant 1.首先我们默认Jmeter脚本已经录制好了,并测试通过,存在(查询模块.jmx)脚本 2.将JMeter所在目录下extras子目录里的ant-JMeter-1.1.1.j ...
- 【转】Jenkins+Ant+Jmeter接口自动化集成测试实例
出处:https://my.oschina.net/MrToStudy/blog/742251 一.Jenkins安装配置 1.安装配置JDK1.6+环境变量: 2.下载jenkins.war,放入C ...
随机推荐
- 深度分析:Java 静态方法/变量,非静态方法/变量的区别,今天一并帮你解决!
静态/非静态 方法/变量的写法 大家应该都明白静态方法/字段比普通方法/字段的写法要多一个static关键字,简单写下他们的写法吧,了解的可以直接略过 class Test{ // 静态变量 publ ...
- Mac升级资料丢失怎么办?EasyRecovery能恢复嘛?
随着越来越多的用户选择性能更高的mac笔记本来工作,一般情况下,为了保证用户有一个很好的使用体验,Mac系统会在一定的时间内进行系统的更新,弥补前一个版本的不足.结果就有一些用户反应Mac升级后,电脑 ...
- FL studio系列教程(八):如何打开和新建FL Studio的文件
FL Studio编曲软件中制作和编辑的音乐将存储在FL Studio的项目文件中.我们随时都可以打开这些对项目文件进行二次编辑和修改等等.操作的方法同很多软件都相同,但也有其独特的地方.下面就跟小编 ...
- CF453C Little Pony and Summer Sun Celebration
如果一个点需要经过奇数次我们就称其为奇点,偶数次称其为偶点. 考虑不合法的情况,有任意两个奇点不连通(自己想想为什么). 那么需要处理的部分就是包含奇点的唯一一个连通块.先随意撸出一棵生成树,然后正常 ...
- Java基础教程——线程状态
线程状态 JAVA定义了6种线程状态: Thread.State public enum State { NEW, RUNNABLE, BLOCKED, WAITING, TIMED_WAITING, ...
- 一次SQL注入导致的"越权"
原文来自SecIN社区-作者:tkswifty 相关背景 在实际的业务开发中,SQL交互往往是业务系统中不可或缺的一项.在Java中提供了类似Mybatis.Hibernate.SpringDat ...
- k8s+docker_part2
docker+k8s 目录 docker+k8s 1 简介 1.1 docker是什么 1.2 为什么要用docker 1.2.1 docker容器虚拟化的好处 1.2.2 docker在开发和运维中 ...
- Java lambda 分组后多列求和
主要思路是reducing,可以像sql一样分组后多列求和处理成新对象等: select code,max(name)as name,sum(chengJi)as chengJi,sum(age)as ...
- linux系统下oracle表空间占用情况
1.我们先查询表空间的占用情况,使用sql如下: select upper(f.tablespace_name) "表空间名", d.tot_grootte_mb "表空 ...
- java17(面向对象)
1.面向过程:所有事情都是按顺序一件件做,未知主体 买菜,做饭,吃饭,洗碗 面向对象:将功能封装到对象之中,让对象去实现功能 去饭馆,告诉服务员要吃啥,然后等着端上来. 面向对象的目的: 复杂的东西简 ...