jenkins+ant+jmeter实现自动化集成(详细)

一、jmeter

今天来学习jmeter+ant+jenkins自动化环境部署,网上提供了很多教程介绍,Windows版本的,mac版的,很多。每一篇都大概看了,也跟着操作但还是会卡在某个环节,可能是我比较笨吧,感觉很多教程介绍的不是很详细,有些步骤略过了,导致我部署环境遇到了很多问题。记录下来,边学习边巩固,而且之后会用到的。

1.jmeter安装

到jmeter官网:https://jmeter.apache.org/ 下载jmeter zip包
下载比较简单,下载好后解压。我放在了application目录下
之后打开.bash_profile文件来配置环境变量,终端/iTerm执行

open /Users/xws/.bash_profile(换成你的路径名)

配置jmeter的环境变量,之后就可以任意访问jmeter

export JMETER=/Applications/apache-jmeter-5.1.1#(换成你的路径名)
export CLASSPATH=$JMETER/lib/ext/ApacheJMeter_core.jar:$JMETER/lib/jorphan.jar:$JMETER/lib/logkit-2.0.jar:$CLASSPATH
export PATH=$PATH:$JMETER/bin

在这里插入图片描述

终端/iTerm输入jmeter -v看到下面这个就代表配置成功啦
在这里插入图片描述
看,之后启动只要在终端输入jmeter回车就可以启动了(懒人必备?)
iTerm或终端中输入:jmeter
启动jmeter的GUI mode
在这里插入图片描述

二、ant运行 jmeter脚本

首先还是要下载好ant,如何下载自行百度。下载好之后跟着我的步骤来操作。

配置

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命令之后生成的)

在这里插入图片描述

在这里插入图片描述
4)安装验证,终端输入

ant -version

在这里插入图片描述
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 failed。后来发现网上复制的build.xml模板缺漏,我补上了这一段最后才成功

<!-- 指定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)准备要要运行的项目,放在demo目录下
在这里插入图片描述

6) 运行。我的build.xml文件放在demo目录下,所以先终端切换到该目录

# 终端cd到demo目录
cd /Applications/apache-jmeter-5.1.1/demo
# 之后运行
ant
# 或者
ant run

在这里插入图片描述

二、jenkins部署

1.安装jenkins
可参考我的这篇文章jenkins下载安装

2.安装后,新建一个自由风格的项目
在这里插入图片描述
源码管理
在这里插入图片描述
因为需要用到ANT和JDK,所以需要在jenkins中添加插件,选择点击“系统管理”,之后在Global Tool Configuration的界面看到ant和jdk选项,然后将自己本地的ANT和JDK地址填写上
在这里插入图片描述

填写你本地的ant_home(若忘记了的童鞋可以打开你的系统变量配置哦,mac 用open .bash_profile在终端打开,可看到你配置的路径,复制过来即可)
在这里插入图片描述
构建Ant,调用ant的build.xml配置文件
在这里插入图片描述
之后点击”增加构建后操作步骤”(要安装HTML publish插件)没有安装点击时看不到此插件,如下
在这里插入图片描述

找到manage jenkins -->Global Tool Configuration
ant
在插件过滤筛选,安装即可
在这里插入图片描述
安装后可以看见Publish HTML report
在这里插入图片描述
在这里插入图片描述
之后在项目点击build now
在这里插入图片描述
在这里插入图片描述
生成的报告如下
在这里插入图片描述
前面提到,build.xml文件中可以修改报告的样式模板。如图,以下是更为详细的报
告,增加了TPS90%用户体验数据

  • TPS每秒事务数=执行请求的总数/执行的总时间
    执行的总时间=最后一个请求开始的时间-第一个请求开始的时间+最后一个请求的执行时间即(endTime-startTime+lastTime)
  • 用户体验数据的算法规则:将所有统计的响应时间从小到大排列,选取对应比例位置的数据

当一组数升序排列好后,选出第9X%位,那就意味着前9X%个数字都小于等于它,也就代表着改组数据中有9X%的数小于等于该数字。
因此:

  • 90%line就代表该组数据中有90%的数字小于等于该值
  • 95%line就代表该组数据中有95%的数字小于等于该值
  • 99%line就代表该组数据中有99%的数字小于等于该值

因此用在性能测试上,将显得十分的有意义。
比如:在响应时间中,代表着一组请求中,9X%请求响应不会超过该值。可以有效的进行性能评估

最终的报告样式
这样的报告能更好地满足我们对性能分析的要求了
在这里插入图片描述
用jmeter打开jtl文件,可以对比生成的html报告,可以发现两者对应字段的数据是一致的。
**加粗样式**
是不是有点亚子了呢?
jmeter-results-detail-report_22.xsl文件请戳

还有更好看的报告样式呢,请看我的这篇

接下来主要讲讲我在整个过程中遇到的问题,执行过程中没有遇到问题的童鞋,恭喜你,你真的很不错???

因为粗心或是不熟悉的原因难免在写jmeter-report-detail-result_文件时犯了很多小错误,在控制台会输出哪里错误,但我还是找了很久,在这里把我所犯的错贴出来,兴许会有和我一样迷糊的童鞋,能帮助你快速找到错误原因。

在构建过程中,控制台输出以下的错在这里插入图片描述

在这里插入图片描述
然而我其他的都是用小写的,大家要注意检查一下

好吧,我忘记在文件中添加display-tps的格式了,这是我自定义的,然而却没有把这个格式也添加好,报错了
在这里插入图片描述
解决方法:添加这一段代码:

<!-- add new display-tps格式 -->	
<xsl:template name="display-tps">
	<xsl:param name="value" />
	<xsl:value-of select="format-number($value,'0.00 /sec')" />
</xsl:template>

添加在哪里呢?看我截图,可以帮助你定位到准确的位置
在这里插入图片描述
最坑的就是这个错了,找了好久
在这里插入图片描述
在这里插入图片描述
根据控制台输出的还是很能帮助我们定位到问题所在的。

好了,希望本文能帮到你~

  • 18
    点赞
  • 133
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值