zoukankan      html  css  js  c++  java
  • Jenkins+Ant+Jmeter 自动化性能测试平台之填坑篇

    一、前言

      搭建Jenkins+Ant+Jmeter 自动化性能测试平台过程中,坦白说遇到了很多坑。。。写这篇博文的目的,除了总结经验方便自己以后查阅之外,也为了方便他人遇到相同的坑时,可以快速找到原因并解决。下面开始我漫长的填坑之路~~

    二、填坑之路

       1.build.xml中<project name="ant-jmeter-test" default="run" basedir=".">这行代码怎么理解?

      default:run为build.xml中的task名

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

      2.ant构建运行jmx脚本时,cmd下输入ant,报错信息:build.xml does not exist!如图:

      原因:C:Users方缘不存在build.xml

      解决方案:cd到存放build.xml的目录,最后输入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.1demo
    eportjtl" />
        <!-- jmeter生成html格式的结果报告的路径-->
        <property name="jmeter.result.html.dir" value="D:apache-jmeter-5.1.1demo
    eporthtml" />
        <!-- 生成的报告的前缀-->  
        <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.1demo" 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>

      

  • 相关阅读:
    jmeter响应结果乱码问题
    JMeter 脚本请求错误 HTTP Status 415 的解决
    使用fiddler进行genymotion安卓虚拟机手机抓包
    Android模拟器Genymotion安装使用教程详解
    java基础-数组
    Qt类继承图
    Linux-磁盘管理小结
    User and User Groups in Linux
    Qt5.3编译错误——call of overloaded ‘max(int int)’is ambiguous
    i++ and ++i efficiency
  • 原文地址:https://www.cnblogs.com/huainanhai/p/12267329.html
Copyright © 2011-2022 走看看