51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 4656|回复: 0
打印 上一主题 下一主题

[原创] 持续集成:JMeter+Ant+jenkins搭建接口自动化测试环境

[复制链接]
  • TA的每日心情
    擦汗
    昨天 08:59
  • 签到天数: 1021 天

    连续签到: 2 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-3-5 10:19:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     1.ant简介
      1.1 什么是ant?
      JMeter: 编写测试脚本生成jmx脚本,运行接口测试。JMeter相当于篮球场,jmx脚本相当于篮球运行场。
      ant: 构建工具,通过调用JMeter来批量运行测试脚本,并生成测试报告。Ant是一个功能强大的打包编译工具。我们使用他的目的是将JTL(xml)格式文件转化为html格式的文件,相当于篮球教练的角色。
      1.2 什么是构建
      概念到处可查到,形象来说,你要把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作,当然不仅于此,但是主要用来干这个。
      2. 构建ant环境
      1)去Apache官网上下载ant最新版,我下载的是apache-ant-1.9.15。
      2)下完之后解压,放到一个目录下面。我把它和jmeter都放在了D:\mysolution下。
      3)配置环境变量,与jmeter类似。   下面这些和你ant存放的路径有关。
      注:网上说需要设置ANT_HOME,CLASSPATH和Path,亲测可以只设置Path其他两项可以不进行设置。
      新建系统变量ANT_HOME,值D:\mysolution\apache-ant-1.9.15
      系统变量CLASSPATH,值后面添加D:\mysolution\apache-ant-1.9.15\lib
      系统变量Path,值后面添加D:\mysolution\apache-ant-1.9.15\bin
      4)进入命令提示符,输入ant,结果如下图所示,"build.xml does not exist "说明ant配置成功。

      3.JMeter与Ant集成
      3.1 JMeter部分
      1)将D:\mysolution\apache-jmeter-5.3\extras文件夹下的ant-jmeter-1.1.1.jar这个jar包复制到D:\mysolution\apache-ant-1.9.15\lib文件夹下。
      2)用记事本打开jmeter\bin\jmeter.properties,将jmeter.save.saveservice.output_format=csv改成jmeter.save.saveservice.output_format=xml,记得去掉前面的“#”。
      3)设置输出内容,修改jmeter.properties文件。
      注:可以尝试理解每行配置的含义,然后再进行你想要的个性化配置。

      4)在JMeter脚本目录创建build.xml文件,请根据实际情况进行配置。
      注:不要去查找build.xml文件,直接创建一个文本文件并把以下内容复制过去。配置时修改注释相当的地方即可。
    <?xml version="1.0" encoding="UTF8"?>
    <project name="ant-jmeter-test" default="run" basedir=".">
        <!-- 需要改成自己本地的 Jmeter 目录-->  
        <property name="jmeter.home" value="D:\mysolution\apache-jmeter-5.3" />
        <property name="report.title" value="JMeter接口测试报告"/>
        <!-- jmeter生成jtl格式的结果报告的路径-->
        <property name="jmeter.result.jtl.dir" value="D:\Jmeter\report\jtl" />
        <!-- jmeter生成html格式的结果报告的路径-->
        <property name="jmeter.result.html.dir" value="D:\Jmeter\report\html" />
        <!-- 生成的报告的前缀-->  
        <property name="ReportName" value="APITestReport" />
    <tstamp> <format property="time" pattern="YYYYMMDD HHmmss" /></tstamp>
        <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:\Jmeter\script" 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}"/>
                  <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>

    </project>


      3.2 ant部分

      运行ant,进入到build.xml所在目录,运行ant。注也可以使用ant -buildfile build.xml来运行ant。

      运行结束后,如若出现SUCCESS信息,则表示运行成功可去对应目录查看结果。部分运行结果信息如下:
    BUILD SUCCESSFUL
    Total time: 9 seconds


      3.3 查看JMeter结果

      此报告是\apache-jmeter-5.3\extras这个目录下jmeter-results-detail-report_21.xsl这个样式生成的报告。
      4. 报告优化
      ant默认报告并不好看,出错之后,很难从报告上去定位问题,定位问题在哪里,可进行优化。优化原理:其实由.jtl格式转换为.html格式的报告过程中,style文件起了很关键的作用。
      1)下载style文件:jmeter.results.shanhe.me.xsl
      2)把下载的文件放到jmeter的extras目录下。

      3)修改build.xml文件如下部分,修改xsl样式文件的文件名即可。

      4)运行结果:

      5.jenkins持续集成
      Jenkins是一个开源的、提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续、自动的构建/测试软件项目、监控外部任务的运行(这个比较抽象,暂且写上,不做解释)。Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。通常与版本管理工具(SCM)、构建工具结合使用。常用的版本控制工具有SVN、GIT,构建工具有Maven、Ant、Gradle。
      简而言之:Jenkins是实现持续集成平台脚本的定时运行、邮件发送、测试报告展示等。
      5.1 jenkins的安装配置
      jenkins下载地址:https://jenkins.io/zh/download/,下载windows版并安装jenkins,安装成功后会自动打开: http://localhost:8080 页面,等待进入jenkins的配置页面。

      解锁jenkins完成配置。

      关于插件的选择,还是老套路,省事用安装推荐的插件,高手自定义。

      创建管理员用户。

      实例配置。

      5.2 jenkins的使用
      5.2.1 新建一个job

      5.2.2  jenkin 配置中增加Ant插件

      添加待构建的文件路径,即Ant执行的build.xml文件路径。

      5.2.3 立即构建

      5.2.4 构建触发器

      日程说明:其中有5个参数

      ·第一个是代表分钟 H 表示随机
      ·第二个是代表小时 9-15/4 9点到下午三点期间的每隔4个小时
      ·第三个是代表天 * 任意一天
      ·第四个是代表月份 1-11 表示1到11月份
      ·第五个是代表星期 1-5 表示工作日
      ·H(9-18) 9点到18点 中随机的一个点,没有用到 H 随机的话,不要加括号
      常见的日程配置表:
      * * * * * 表示任何一个时间段,同一个时间都可能会触发执行。不建议使用。
      H/30 * * * * 表示每天每隔 30分钟构建一次。
      H 4-19/3 * * * 表示,一天的凌晨点到下午7点,每隔3个小时构建一次。
      * * 3-5 * * 表示,每个月的3号,4号,5号 都会被构建,具体时间未知。
      * * * * 1-5 表示,工作日时会构建,具体时间未知。
      H/30 8-19/3 1-28 1-11 1-5 表示 在1月到11月中的1号-28号,每个工作日,早晨的8点到下午7点每隔3.5个小时会触发构建。
      5.3 jenkins其他配置
      5.3.1 丢弃旧的配置
      服务器资源是有限的,有时候保存了太多的历史构建,会导致Jenkins速度变慢,并且服务器硬盘资源也会被占满。当然下方的"保持构建天数" 和 保持构建的最大个数是可以自定义的,需要根据实际情况确定一个合理的值。

      5.3.2 邮件通知设置
      1)回到最外面的主界面。找到manage jenkins,找到系统设置。

      2)找到插件安装这里面的邮件插件。

      3)查看已安装的邮箱插件。

      4)返回到配置界面,然后点击系统配置,找到下图的地方:填写两个东西:
      第一个url:用默认这个url 尝试一下能访问到jenkins就可以了;第二个参数:邮箱发件箱的账户。

      5)进入到最下面的邮箱配置,点开高级,然后按照要求填写内容。。请注意密码这个东西:是QQ邮箱的此处授权码,另外用户名不要跟后缀。然后勾选测试,成功后会收到邮件。
      SMTP基础设置,见下图:

      Extended E-mail Notification:
      这是使用第三方插件的邮箱功能,方法跟上面这个一样。
      5.4 构建结果说明
      5.4.1 构建状态
      Successful蓝色:构建完成,并且被认为是稳定的。
      Unstable黄色:构建完成,但被认为是不稳定的。
      Failed红色:构建失败。
      Disable灰色:构建已禁用。
      5.4.2 构建稳定性
      构建稳定性用天气表示:晴、晴转多云、多云、小雨、雷阵雨。天气越好表示构建越稳定,反之亦然。
      5.4.3 构建历史界面
      console output: 输出构建的日志信息。
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-9-20 05:10 , Processed in 0.070471 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表