Jenkins + Ant + Jmeter automated performance testing platform of articles filled pit

I. Introduction

  Jenkins + Ant + Jmeter build automation platform performance testing process, frankly met a lot of pit. . . The purpose of writing this blog, in addition to sum up the experience to facilitate their future access to outside, but also for others experiencing the same pit when convenient, you can quickly find the cause and resolve. Now I start the long road filled pit ~ ~

Second, fill the pit road

   1.build.xml the <project name = "ant-jmeter-test" default = "run" basedir = "."> This line of code how to understand?

  default: run for the task name in build.xml

<target name="run">
        <antcall target="test" />
        <antcall target="report" />
    </target>

  When 2.ant ​​run jmx build script, enter the cmd ant, error message: build.xml does not exist! Figure:

  The reason: C: \ Users \ The margin does not exist build.xml

  Solution: cd to the directory where build.xml, and finally type ant

   3.默认构建文件是build.xml,但改名为build_jmeter.xml后,cd到存放build_jmeter.xml的目录后,也会报错:build.xml does not exist!

  原因:ant构建运行时默认识别build.xml

  解决方案:cmd下输入ant -buildfile build_jmeter.xml

  4.ant运行后报错:前言中不允许有内容

  原因:生成的jtl文件是文本文件,不是xml文件,所以使用xsl文件去转换jtl文件会报错

  解决方案有2种:

  • 用Notepad++打开jmeter.properties,Ctrl+F找到jmeter.save.saveservice.output_format,修改为xml

  

  • build.xml文件添加一行代码:<property name="jmeter.save.saveservice.output_format" value="xml"/> 

   5.生成的html报告出现Date report: date not defined,没有正确显示

  原因:build.xml未加时间戳

  解决方案:build.xml文件添加几行代码:

   6.生成的html报告里的字段Min Time和Max Time显示的是NaN,没有显示正确的时间

  原因:缺少xalan*.jar和serializer*.jar

  解决方案:build.xml文件添加几行代码:

 三、附件

  最后附上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="D:\apache-jmeter-5.1.1" />
    <!-- jmeter生成jtl格式的结果报告的路径--> 
    <property name="jmeter.result.jtl.dir" value="D:\apache-jmeter-5.1.1\demo\report\jtl" />
    <!-- jmeter生成html格式的结果报告的路径-->
    <property name="jmeter.result.html.dir" value="D:\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" />
    
    <target name="run">
        <antcall target="test" />
        <antcall target="report" />
    </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="D:\apache-jmeter-5.1.1\demo" 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="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>

 

 

 

  

Guess you like

Origin www.cnblogs.com/huainanhai/p/12267329.html