美文网首页Jmeter软件测试必会
JMeter+Ant+Jenkins 自动化测试构建-输出测试报

JMeter+Ant+Jenkins 自动化测试构建-输出测试报

作者: Fighting_001 | 来源:发表于2018-08-24 23:24 被阅读78次

    Ant用来做项目构建,JMeter中的脚本对应有多个不同项目;Ant可根据JMeter目录中的build.xml配置文件的设置,实现批量执行JMeter中的.jmx脚本,以自动化方式提高测试效率。
    因此,build.xml配置文件相当于Ant和JMeter之间的中间桥梁,保持双方联通运作。

    自动化测试构建-操作步骤:

    Step1:
    新建存放测试报告的目录JMeterTest

    ① 建立JMeterTest在各自设置的某个位置,在其下新建2个目录:ResultLog(存放测试生成的指定格式报告)、Script(存放被执行的.jmx脚本)
    ② 然后在ResultLog目录下再新建2个子目录:jtl(执行脚本后生成.jtl格式文件)、html(Ant将.jtl格式文件转换为.html的文件报告)

    Step2:
    利用Badboy录制JMeter脚本xxx.jmx,并将脚本放置到JMeterTest目录下的Script目录之下(...\JMeterTest\Script

    Step3:
    将JMeter的安装目录下的extas目录(...\apache-jmeter-4.0\extras\)中 ant-jmeter-1.1.1.jar 这个jar包放置(copy)到Ant的安装目录lib目录(...\apache-ant-1.9.13\lib\)之下

    作用:
    使得Ant运行时能找到org.programmerplanet.ant.taskdefs.jmeter.JMeterTask类,以触发JMeter脚本

    Step4:
    编辑JMeter的bin目录(...\apache-jmeter-4.0\bin)下的jmeter.properties文件,在其第449行之后添加一行jmeter.save.saveservice.output_format=xml

    JMeter输出结果数据默认保存是.csv格式的文件,在此需要设置成.xml格式的文件

    Step5:
    在路径路径(...\apache-jmeter-4.0\extras\)之下,配置JMeter的 build.xml 配置文件

    PS:以备后续可能需要build.xml最初的文件,此处暂且将build.xml复制了一份并命名为 build_JMeter.xml 以作区分,然后根据各自需求单独编辑build_JMeter.xml文件作为本次所需的配置文件

    build_JMeter.xml配置文件:

    <?xml version="1.0" encoding="utf-8"?>
    
    <project name="Ant_JMeter_Test" default="all" basedir=".">
    
        <!-- tstamp标签即时间戳,记录构建的时间 -->
        <tstamp>
            <format property="time" pattern="yyyyMMddhhmm" />
        </tstamp>
    
        <!-- 定义结果集的相关参数 -->
    
        <!-- 需要修改为JMeter的安装目录 -->
        <property name="jmeter.home" value="D:\CI_Env\apache-jmeter-4.0" />
        <!-- JMeter生成jtl格式的结果报告的路径 -->
        <property name="jmeter.result.jtl.dir" value="D:\CI_Env\JMeterTest\ResultLog\jtl" />
        <!-- JMeter生成html格式的结果报告的路径 -->
        <property name="jmeter.result.html.dir" value="D:\CI_Env\JMeterTest\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" />
        </target>
        
        <!-- 测试脚本 -->
        <target name="test">
            <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
            <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
                <!-- 声明要运行的脚本:"*.jmx"表示包含此目录下的所有JMeter脚本 -->
                <!--  以下includes也可以指定具体的某个.jmx脚本 -->
                <testplans dir="D:\CI_Env\JMeterTest\Script" includes="*.jmx" />
            </jmeter>
        </target>
        
        <!-- 生成报告 -->
        <target name="report">
            <xslt
                  in="${jmeter.result.jtlName}"  
                  out="${jmeter.result.htmlName}"  
                  style="${jmeter.home}\extras\jmeter-results-detail-report_21.xsl" /> 
                  <!-- style采用jmeter-results-detail-report_21.xsl文件的样式 -->
                  
            <!-- 生成报告时,将所需折叠展开功能的图标拷贝到目标目录 -->
            <copy todir="${jmeter.result.html.dir}">
              <fileset dir="${jmeter.home}\extras">
                  <include name="collapse.png" />
                  <include name="expand.png" />
              </fileset>
            </copy>
        </target>
    </project>
    
    配置文件说明:

    1.Ant 关键元素
    Ant构件文件是基于XML编写的,默认名称为build.xml。project元素是Ant构件文件的根元素,Ant构件文件至少应该包含一个project元素,否则会发生错误。在每个project元素下,可包含多个target元素。以下为project元素的各属性:

    属性名 作用
    1 name 用于指定project元素的名称
    2 default 用于指定project默认所执行的target名称
    3 basedir 用于指定JMeter基准路径的位置。该属性没有指定时,使用Ant构件文件的目录作为基准目录

    2.target元素
    target作为Ant的基本执行单元,它可以包含一个or多个具体的任务。多个target可以存在相互依赖关系。它有target的属性如下:

    属性名 作用
    1 name 指定target元素的名称。该属性在一个project元素中是唯一的,可以通过指定target元素的名称来指定某个target
    2 depends 用于描述target之间的依赖关系。若与多个target存在依赖关系时,需要以英文逗号,间隔。Ant会依照depends属性中target出现的顺序依次执行每个target,被依赖的target会先执行
    3 if 用于验证指定的属性是否存在,若不存在,所在target将不会被执行
    4 unless 该属性的功能与if 属性的功能正好相反,它也用于验证指定的属性是否存在,若不存在,所在target将会被执行
    5 description 该属性是关于target功能的简短描述和说明

    3.property元素
    该元素可看作参量或者参数的定义,project的属性可以通过property元素来设定,也可在Ant之外设定。
    若要在外部引入某文件,例如build.properties文件,可以通过如下方式引入:<property file="build properties">

    Step6:
    将配置好的build_JMeter.xml文件放置到Ant目录的bin目录之下(...\apache-ant-1.9.13\bin\),使用Ant编译验证build_JMeter.xml文件

    此时,在ant的bin目录下,打开cmd命令窗口,输入命令 ant -buildfile build_JMeter.xml

    Ant构建OK 构建生成的.html格式报告文件

    Step7:
    部署到Jenkins持续集成平台

    1.切换到Jenkins存放的文件目录(...\apache-tomcat-9.0.10\webapps\jenkins-2.121.3),在此打开cmd命令窗口,输入命令java -jar jenkins.war --httpPort=8002
    (PS:若没有修改过Jenkins的端口号,则默认8080端口,以上命令中就不需要设置--httpPort=8002这部分)

    Jenkins启动OK

    2.浏览器中访问url= http://localhost:8002/ ,输入其前设置好的用户名和密码进行登录

    3.创建新任务:点击【创建一个新任务】-->输入任务名称,选中【构建一个自由风格的软件项目】-->点击【确定】

    4.定位到页面底部,在【构建】模块点击【增加构建步骤】-->【Invoke Ant】-->点击【高级】展开隐藏的输入框-->在【Build File】输入框中填写ant目录的bin目录下的build配置文件的绝对路径-->【保存】

    5.点击左侧导航栏的【立即构建】,即可调用Ant来执行.jmx脚本,并根据build_JMeter.xml配置文件的设置而生成测试报告

    构建完成之后,生成相关构建的历史记录

    console控制台输出的构建记录 首页查看构建的项目 构建项目所生成的测试报告

    参考来源:
    [1] Jmeter+Ant+Jenkins搭建持续集成的接口测试框架

    相关文章

      网友评论

        本文标题:JMeter+Ant+Jenkins 自动化测试构建-输出测试报

        本文链接:https://www.haomeiwen.com/subject/cgxhiftx.html