美文网首页
jenkins+ant+jmeter实现自动化集成 for ma

jenkins+ant+jmeter实现自动化集成 for ma

作者: 今天心情很美 | 来源:发表于2020-02-28 22:22 被阅读0次

一、jmeter安装
二、ant运行 jmeter脚本
配置
三、jenkins部署

一、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
image.png

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


image.png

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

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


image.png

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

image.png

3)在jmeter安装目录下新建文件夹demo,在demo下新建文件夹report,report下再新建jtl和html文件夹,html和jtl文件夹的作用:
html文件夹:用于保存html的结果报告
jtl文件夹:用于保存jmeter的测试脚本
(一开始jtl和html文件夹下都是空的)


image.png image.png

4)安装验证,终端输入

ant -version
image.png

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>

根据个人环境的不同,上述需要修改的模版参数为:


image.png

这个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目录下


image.png

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

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

二、jenkins部署

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

2.安装后,新建一个自由风格的项目


image.png

源码管理


image.png

因为需要用到ANT和JDK,所以需要在jenkins中添加插件,选择点击“系统管理”,之后在Global Tool Configuration的界面看到ant和jdk选项,然后将自己本地的ANT和JDK地址填写上

image.png

填写你本地的ant_home(若忘记了的童鞋可以打开你的系统变量配置哦,mac 用open .bash_profile在终端打开,可看到你配置的路径,复制过来即可

image.png

构建Ant,调用ant的build.xml配置文件

image.png

之后点击”增加构建后操作步骤”(要安装HTML publish插件)没有安装点击时看不到此插件,如下


image.png

找到manage jenkins -->Global Tool Configuration

image.png

在插件过滤筛选,安装即可


image.png

安装后可以看见Publish HTML report

image.png image.png

之后在项目点击build now


image.png image.png

生成的报告如下

image.png

前面提到,build.xml文件中可以修改报告的样式模板。如图,以下是更为详细的报
告,增加了TPS和90%用户体验数据。

TPS:每秒事务数=执行请求的总数/执行的总时间
执行的总时间=最后一个请求开始的时间-第一个请求开始的时间+最后一个请求的执行时间即(endTime-startTime+lastTime)
用户体验数据的算法规则:将所有统计的响应时间从小到大排列,选取对应比例位置的数据
当一组数升序排列好后,选出第9X%位,那就意味着前9X%个数字都小于等于它,也就代表着改组数据中有9X%的数小于等于该数字。
因此:

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

用jmeter打开jtl文件,可以对比生成的html报告,可以发现两者对应字段的数据是一致的。


image.png

原文链接:https://blog.csdn.net/weixin_41948075/article/details/97894080

相关文章

网友评论

      本文标题:jenkins+ant+jmeter实现自动化集成 for ma

      本文链接:https://www.haomeiwen.com/subject/nhtdhhtx.html