• 持续集成(CI):Jmeter+Ant+Jenkins定时构建


      这里Jenkins的安装部署以及工程项目的整体配置不做赘述,其它博文已经说明,这里主要是赘述Ant的相关配置,build.xml文件配置以及项目中的部分配置

    一、build.xml

      在Ant的安装目录下放入已经配置好的build.xml文件

      然后在Jmeter的安装目录下新建一个层级文件夹work/resultLog,在resultLog目录下分别创建jtl和html目录

      build.xml文件内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <project name="接口性能监控" default="all" basedir=".">  
     <tstamp>
            <format property="time" pattern="yyyyMMddhhmm" />
        </tstamp>
        <property name="encoding" value="UTF-8" />
        <!-- 需要改成自己本地的 Jmeter 目录-->  
        <property name="jmeter.home" value="G:/apache-jmeter-5.2" />
        <property name="report.title" value="接口性能监控"/>
        <!-- jmeter生成jtl格式的结果报告的路径--> 
        <property name="jmeter.result.jtl.dir" value="${jmeter.home}/work/resultLog/jtl" />
        <!-- jmeter生成html格式的结果报告的路径-->
        <property name="jmeter.result.html.dir" value="${jmeter.home}/work/resultLog/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" />
    
        <target name="all">
            <antcall target="test" />
            <antcall target="report" />
            <antcall target="mail" />
        </target>
        
        <target name="test">
            <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
            <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
                <!-- 声明要运行的脚本"*.jmx"指包含此目录下的所有jmeter脚本-->
                <testplans dir="${jmeter.home}/bin/jmeter_scripts" includes="*.jmx" />
                
                <property name="jmeter.save.saveservice.output_format" value="xml"/>
            </jmeter>
        </target>
            
        <path id="xslt.classpath">
            <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
            <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
        </path>
    
    
        <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">
    
                  <param name="showData" expression="${show-data}"/>
    
                  <param name="dateReport" expression="${report.datestamp}"/>
                  <param name="titleReport" expression="${report.title}:${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>
        <property name="mail_from" value="发送邮件的地址" />
        <property name="password" value="邮箱密码" />
        <!--mail_to:发送列表,多个之间逗号间隔 -->
        
        <property name="mail_to" value="接收邮件地址" /> 
        <property name="mailport" value="25" />
        <!--邮箱需要开通smtp服务-->
        <property name="mailhost" value="smtp邮件服务器地址" />
    
        <target name="mail">
            
            <loadfile property="report" srcFile="${jmeter.result.htmlName}" encoding="${encoding}" />
            <mail from="${mail_from}" tolist="${mail_to}" mailport="${mailport}" mailhost="${mailhost}" user="${mail_from}" password="${password}" subject="TestReport-${ant.project.name}" messagemimetype="text/html">
                <message>
                                    本轮构建的结果如下:
                                    ${report}                               
                        </message>
            </mail>
        <delete file="${jmeter.result.htmlName}" />
        </target>
    </project>

      在build.xml文件中我们要特别注意以下配置项(关系到是否能执行成功):

    • jmeter.home  值为Jmeter的安装目录
    • jmeter.result.jtl.dir & jmeter.result.html.dir  值对应的路径建议提前手动创建
    • ${jmeter.home}/bin/jmeter_scripts  目录下的文件名要与被测的性能测试脚本名称保持一致
    • mail_from  发送方邮箱地址
    • password  发送方的邮箱密码(注意:如果是qq邮箱则为授权码,并且需要开启smtp邮箱服务)
    • mail_to  接收方邮箱地址(多个地址用英文逗号相隔)
    • mailhost  邮箱服务器地址
    • mailport  邮箱服务器端口

    二、Ant配置

      在Jenkins中,Manage Jenkins—>Global Tool Configuration—>Ant下配置Ant参数,配置完成后点击保存

    三、工程创建

    1.创建一个自由风格的项目

    2.构建配置

      增加构建步骤—>Invoke Ant,配置对应的参数后,点击保存

     

    3.开始构建

      在刚创建的项目下点击Build Now开始构建,并等待构建完成

    4.查看报告

    1.测试报告文件

    2.测试报告邮件

  • 相关阅读:
    【BZOJ5286】[HNOI2018]转盘(线段树)
    【BZOJ2003】[HNOI2010]矩阵(搜索)
    【BZOJ2000】[HNOI2000]取石头游戏(贪心,博弈论)
    【BZOJ1998】[HNOI2010]物品调度(并查集,模拟)
    【BZOJ2001】[HNOI2010]城市建设(CDQ分治,线段树分治)
    【BZOJ1925】[SDOI2010]地精部落(动态规划)
    【BZOJ1856】[SCOI2010]字符串(组合数学)
    【BZOJ1826】[JSOI2010]缓存交换(贪心)
    【BZOJ1823】[JSOI2010]满汉全席(2-sat)
    【BZOJ1822】[JSOI2010]冷冻波(二分,网络流)
  • 原文地址:https://www.cnblogs.com/xiaogongjin/p/12014373.html
Copyright © 2020-2023  润新知