zoukankan      html  css  js  c++  java
  • Jenkins部署jmx脚本

     

      针对jenkins+jmeter做接口自动化,jmeter完成测试脚本录入和撰写,而jenkins负责持续集成和报告收集。那么从零实现jenkins可以从以下角度实现

      首先需要安装jenkins

      然后需要安装ant,为什么需要ant,因为ant是一个很高效的桥梁,连接jmeter脚本和jenkins工具,调用ant时会自动调用jmeter中的build文件进行构建。简单点做个对比,在没有ant的情况下,构建jmx脚本需要在构建中添加一些列的command命令,最起码构建过程为:cdjemter所在路径->启动jmeter -n -t -l -o -e,此过程中 -n-t-l-o-e的这些过程实际上也是调用jmeter中一些指令文件实现,比如-o-e是生成和转换jtl报告为html报告,也即jmeter使用自带的xml样式表生成将jtl报告转换为html报告。而这些执行和报告转换的操作在jemter中是七零八落的。所以我们可以利用ant去调用build文件,通过对build文件的配置,来系统化实现脚本的构建过程,只需要一个build文件,就可以对构建过程实现系统化控制。如此就形成一个jemerjenkins的中间站,通过对中间站的配置,既让jemeter执行脚本的过程更系统化,也让jenkins调用jmeter的方式简洁化,实际上像是实现了对jmeter执行的一个封装。

      说到这里就必须得说一说build文件的一些基本构造了,以最基本的构造模板为例

    <?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="D:Automatiorapache-jmeter-3.3apache-jmeter-3.3" />

        <!-- jmeter生成jtl格式的结果报告的路径-->

        <property name="jmeter.result.jtl.dir" value="D:Automatiorapache-jmeter-3.3apache-jmeter-3.3DEMO eportjtl" />

        <!-- jmeter生成html格式的结果报告的路径-->

        <property name="jmeter.result.html.dir" value="D:Automatiorapache-jmeter-3.3apache-jmeter-3.3DEMO eporthtml" />

        <!-- 生成的报告的前缀-->

        <property name="ReportName" value="IPCreport" />

        <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="D:Automatiorapache-ant-1.9.11lib">

                <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="D:Automatiorapache-jmeter-3.3apache-jmeter-3.3DEMO" 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.shanhe.me.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文件的配置,其中最少需要设置的内容有

        <!-- 需要改成自己本地的Jmeter目录-->

        <property name="jmeter.home" value="D:Automatiorapache-jmeter-3.3apache-jmeter-3.3" />

        <!-- jmeter生成jtl格式的结果报告的路径-->

        <property name="jmeter.result.jtl.dir" value="D:Automatiorapache-jmeter-3.3apache-jmeter-3.3DEMO eportjtl" />

        <!-- jmeter生成html格式的结果报告的路径-->

    <property name="jmeter.result.html.dir" value="D:Automatiorapache-jmeter-3.3apache-jmeter-3.3DEMO eporthtml" />

      这一部分配置jmeter的执行路径,以及报告的存放路径,生成的报告会存放至指定文件下

                <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本,比如test*jmx表示以test开头的所有.jmx文件-->

                <testplans dir="D:Automatiorapache-jmeter-3.3apache-jmeter-3.3DEMO" includes="*.jmx" />

      这一部分设置需要运行脚本的路径,也是必须设置元素之一

      style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl">

     <!--jmeter-results-detail-report_21.xsl这里的文件名可以换成你想要的报告效果-->

      Style控制输出html报告的xsl样式,因为默认报告不仅信息少,而且很难看,所以如果需要优化就需要去更改html的样式,本篇不做详细讲解

      设置完这些最起码的过程:进入jmert目录,启动jmeterjmx脚本,生成jtl报告和html报告,这一过程就实现了,而这一过程在jenkins构建过程仅需要一句run,或者ant run即可。这样一来就会发现ant的作用其实真的很大。

      安装配置完ant以后,就需要去jenkins新建一个item了,其中描述,源码管理对我来说目前都没用到,主要要设置内容有触发器,构建,以及构建后操作。

      触发器顾名思义是指触发item执行的控制器,比如我们可以在这里设置,每天中午12点执行一次脚本,亦或者每次有新版本上传时执行一次自动化脚本,或者每当jenkins被访问时执行一次脚本等。通过控制器可以实现自动化的最终目的:机器自动执行脚本。

      构建:如果我们配置了ant,并且已经编辑好build文件,那么在这里我们只需要配置好ant环境前提下新增一个invoke ant,然后命令行输入run即可

      构建后步骤,这个我个人感觉比较关键,因为执行脚本最终是为了报告,好的报告可以更好展现出测试结果,以及清晰展示测试过程。首先可以展示的是html报告,通过jenkinshtml report插件可以在复制生成到的html报告到工作空间并进行展示。当然html报告对我个人来说是很不满足的,这时候需要更完美的报告,于是Allure报告就发挥作用了,它是一个更全面,更详细,且展示效果更完美的报告,具体使用细节可自行百度。

      这些都做完以后,点击保存,一个基本接口自动化脚本就在jenkins上部署完毕,接下来就可以等待到满足触发器的额触发条件,一旦触发,则会自动执行测试脚本并生成报告,我们可以随时访问jednkins进行查看,或者我们也可以让jenkins把报告通过邮件发送给我们,如此,便实现了接口脚本的自动化执行。

  • 相关阅读:
    事务传播机制,搞懂。
    洛谷 P1553 数字反转(升级版) 题解
    洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is Here 题解
    洛谷 P1055 ISBN号码 题解
    洛谷 P2141 珠心算测验 题解
    洛谷 P1047 校门外的树 题解
    洛谷 P1980 计数问题 题解
    洛谷 P1008 三连击 题解
    HDU 1013 题解
    HDU 1012 题解
  • 原文地址:https://www.cnblogs.com/baxiaobin/p/12807210.html
Copyright © 2011-2022 走看看