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把报告通过邮件发送给我们,如此,便实现了接口脚本的自动化执行。

  • 相关阅读:
    js将url转换二维码
    百度地图api使用
    js字符串转日期兼容性
    Object.keys的使用
    Web App和Native App的比较
    数组转为对象
    常用meta整理
    git merge和git rebase的区别
    GitHub 翻译之 'Hello-world' 翻译
    js数据类型
  • 原文地址:https://www.cnblogs.com/baxiaobin/p/12807210.html
Copyright © 2011-2022 走看看