您现在的位置是:网站首页 > 台长笔记

JAJ接口自动化可持续集成环境搭建简介(Jmeter+Ant+Jenkins)

台长大人2021-05-14 17:47:53147人围观

接口自动化可持续集成环境搭建简介


软件环境:Jmeter3 + Ant +Jenkins
系统环境:Windows/Linux


  • 部署流程:
  1. 安装java并设置环境变量
  2. 安装Jmeter并设置环境变量
  3. 安装Ant并设置环境变量
  4. 安装Jenkins

以上安装及设置,自行百度


踩过的坑:

1、Jmeter3只能安装java1.8及以下,不能用java1.9,会导致Jmeter无法启动




  • Ant配置说明:
  1. 配置主要文件build.xml
  2. Ant的执行目录在哪,build.xml就应该在哪;比如 ,此时build.xml应该在C:\Users\Administrator\目录下,再如 ,此时build.xml应该在c:\Windows\Temp\目录下
  3. Build.xml详解自行百度,这里只标出我们需要改的地方(有注释的地方)
    <?xml version="1.0" encoding="UTF-8"?>
    
    <project name="ant-jmeter-test" default="run" basedir=".">
        <tstamp>
            <format property="time" pattern="yyyyMMddhhmm" />
        </tstamp>
            <property environment="env" />
        <!-- 需要改成自己本地的 Jmeter 目录-->
        <property name="jmeter.home" value="/usr/local/apache-jmeter-3.1" />
        <!-- jmeter生成jtl格式的结果报告的路径-->
        <property name="jmeter.result.jtl.dir" value="./report/jtl" />
        <!-- jmeter生成html格式的结果报告的路径-->
        <property name="jmeter.result.html.dir" value="./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="." 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>
    
  • Jenkins部署介绍:
  1. 安装好之后,在浏览器中输入ip:8080即可访问jenkins首页
  2. 首次访问需要输入默认管理员密码,此密码在Jenkins\secrets\initialAdminPassword文件中
  3. 初始化插件,选择默认即可
  4. 创建管理员账号

至此,准备工作已完成

踩过的坑:

1、 Windows环境下,安装完jenkins后即可直接访问

2、 Linux环境下,理论上需要安装Tomcat这种web服务器才可正常访问,但我在实际部署过程中发现可以不用安装Tomcat,但是Linux因为权限管制的特别严格,需要注意Jenkins目录的权限问题,否则就会出现无法访问的情况




  • Jenkins全局系统设置:
  1. 此处管理员邮件地址必填,涉及到后期启动发邮件功能
  2. 这个上面的按道理说应该只填一个就行,但是我没有验证。。。所以全都填了,然后在这里可以发测试邮件以此确认邮件系统是否正常


踩过的坑:

1、Jenkins自带的邮件系统按网上的描述,兼容性并不太好,比如我在部署期间,尝试将发送人邮件设置成QQ或者网易,都发送失败,具体原因并未查明,但是换成公司邮箱就正常了




  • Jenkins全局工具配置:
  1. JDK设置:
  2. ANT设置:
  3. 以上设置仅针对Linux,Windows只要吧环境变量配置好了,这里是不用设置的


  • 通过Jenkins创建新的任务

1、

2、构建触发器


定时构建的意思就是按照设定的时间或周期来自动构建,时间格式可以点后面的问号了解,大概意思如下:

第一个*表示分钟,取值0~59

第二个*表示小时,取值0~23

第三个*表示一个月的第几天,取值1~31

第四个*表示第几月,取值1~12

第五个*表示一周中的第几天,取值0~7,其中0和7代表的都是周日

每隔5分钟构建一次:H/5 * * * *

每两小时构建一次:H H/2 * * *

每天中午12点定时构建一次:0 12 * * *

每天下午18点定时构建一次:0 18 * * *


3、构建环境

Linux环境这里需要选择之前我们添加的jdk和ant,Windows用默认的default就可以了


4、构建

AnT Version:Linux环境下选择ant,Windows选择default

Targets:应该也可以填,如果填的话应该对应的填写build.xml中里面name对应的值

Build File:填写build.xml所在的位置

执行shell:这些填写要执行的shell脚本


  • 构建后操作:

1、 Publish HTML reports

意思就是通过html页面把测试报告展现出来

2、 Editable Extended Email Publisher

这里重点就是选择触发通发邮件的条件,比如Failure –any 意思就是构建失败了发邮件,然后sent to就是选择收件人


  • 手动构建,调试配置:

1、

点击这里就是立即构建

2、 构建结果会在构建历史中显示中,调试的时候我们在控制台输出里面分析和排查问题,直至调通


  • SHELL脚本说明:

1、 使用脚本的目的:

因为Jenkins本身机制的原因,jmeter用例执行失败了并不代表任务构建失败,而我们的需求是希望用例执行失败就发邮件,基于此我们用shell脚本来实现我们的需求

2、 脚本思路:

因为Jenkins只有在构建失败的时候才会判断为失败而发邮件,那么我们可以在用例执行完毕之后,插入一个shell脚本先来检索一下测试报告中的结构是否有失败的标识,如果有失败的标识,我们则通过脚本将Jenkins的结果直接标记为失败,此时就能触发Jenkins的邮件条件,从而达到我们的目的

3、 脚本注释:

规定次脚本的执行方式为bash

#!/bin/bash

获取当前路径

path=$(pwd)

将测试报告按时间排序,且取最新报告的文件名,此处” Peiwan_online”为文件名中关键字

jtlname=$(ls -lt ./report/jtl|grep Peiwan_online|head -n 1|awk '{print $9}')

拼接成完整的路径值

filepath=$path/report/jtl/$jtlname

打印一下,方便排查问题

echo $filepath

在测试报告中判断是否有” true”,该字段为用例中断言的结果

grep -c "true" $filepath

IF语句判断上一个结果的真假,为真则表示用例执行失败,exit 1 表示将Jenkins构建结果标识为失败,否则表示用例执行成功,exit 0 表示不干涉Jenkins

if [ $? = 0 ]

then

echo "Failed"

exit 1

else

echo "Sucecced"

exit 0

fi


踩过的坑:

不要在Windows下写好脚本之后再上传到Linux服务器上,因为两个系统对文本格式的处理不一样,会出现各种莫名其妙的问题


本篇笔记写于2019年2月,然后先发在CSDN,现在打算重整自己的站,所以重新发布在自己的站点了~~


点击排行