ANT+JMETER+Jenkins 接口自动化

Linux环境下搭建:ANT+JMETER+Jenkins 接口自动化

一、准备环境:

1、下载 JDK1.8 

JDK下载地址:https://www.oracle.com/java/technologies/downloads/

# 配置jdk环境变量:
# 下载相应的jdk软件包,然后解压安装,我这里包名称为:
 jdk-8u102-linux-x64.tar.gz
[root@localhost ~]# tar -zxvf  jdk-8u102-linux-x64.tar.gz -C /usr/local/ #解压到/usr/local/下面
[root@localhost ~]# vi /etc/profile  最后面加入以下语句:
export JAVA_HOME=/usr/local/jdk1.8.0_102     export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib       export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOMR/bin
  [root@localhost ~]# source /etc/profile   #使环境变量马上生效
  [root@localhost ~]# java  --version     #查看java版本,看到jdk1.8.0_102版本即代表java jdk安装成功。

2、下载 ANT 

ANT下载地址:https://ant.apache.org/bindownload.cgi

# ant环境变量:
# ant包名称为:apache-ant-1.9.14-bin.tar.gz
[root@localhost data]# tar -zxvf apache-ant-1.9.14-bin.tar.gz 
# 比如放到:/data/apache-ant-1.9.14
[root@localhost opt]# vi /etc/profile      #加入如下内容
 
export ANT_HOME=/data/apache-ant-1.9.14
export CLASSPATH=$CLASSPATH:$ANT_HOME/lib
export PATH=$ANT_HOME/bin:$PATH:$HOMR/bin

[root@localhost ~]# #source /etc/profile   #使环境变量马上生效
[root@localhost apache-jmeter-5.1.1]#ant -v
 命令行输入:ant -v        出现如下提示说明安装成功

 

 

 3、下载:Jmeter

Jmter下载地址:https://jmeter.apache.org/download_jmeter.cgi

# 配置jmeter环境变量
# Jmeter:apache-jmeter-5.1.1.zip
# 解压到一个目录下面:unzip apache-jmeter-5.1.1.zip
# 比如:/data/apache-jmeter-5.1.1

[root@localhost opt]# vi /etc/profile      #加入如下内容
export JMETER_HOME=/data/apache-jmeter-5.1.1
export CLASSPATH=$CLASSPATH:$JMETER_HOME/lib
export PATH=$JMETER_HOME/bin:$PATH:$HOMR/bin

  [root@localhost apache-jmeter-5.1.1]# source /etc/profile

  [root@localhost apache-jmeter-5.1.1]#jmeter -v

命令行输入:jmeter –v

# 将 jmeter的extras目录中ant-jmeter-1.1.1.jar包拷贝至ant安装目录下的lib目录中
[root@localhost extras]# cp ant-jmeter-1.1.1.jar /data/apache-ant-1.9.14/lib/
# 修改Jmeter的bin目录下jmeter.properties文件的配置:
[root@localhost bin]# vi jmeter.properties
jmeter.save.saveservice.output_format=xml

# 发邮件需要把(activation.jar,commons-email-1.2.jar,mail.jar)这几个jar包放到ant的lib下面

二、Jmeter脚本:

# 脚本目录:可以在jmeter的bin下面新建一个目录,比如为:jmeter_scripts
[root@localhost bin]# mkdir jmeter_scripts

# 上传本地的脚本
[root@localhost bin]# cd jmeter_scripts
[root@localhost jmeter_scripts]# rz

三、build.xml代码:

 

<?xml version="1.0" encoding="UTF-8"?>
<project name="线上接口性能监控" default="all" basedir=".">  
 <tstamp>
        <format property="time" pattern="yyyyMMddhhmm" />
    </tstamp>
    <property name="encoding" value="UTF-8" />
    <!-- 需要改成自己本地的 Jmeter 目录-->  
    <property name="jmeter.home" value="/data/apache-jmeter-5.1.1/" />
    <property name="report.title" value="线上接口性能监控"/>
    <!-- jmeter生成jtl格式的结果报告的路径--> 
    <property name="jmeter.result.jtl.dir" value="${jmeter.home}/work/resultLog/jtl" />
    <!-- jmeter生成html格式的结果报告的路径-->
    <property name="jmeter.result.html.dir" value="${jmeter.home}/work/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" />
        <antcall target="mail" />
    </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="${jmeter.home}/bin/jmeter_scripts/易捷支付" 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="showData" expression="${show-data}"/>

              <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>
    <property name="mail_from" value="发送邮件的地址" />
    <property name="password" value="邮箱密码" />
    <!--mail_to:发送列表,多个之间逗号间隔 -->
    
    <property name="mail_to" value="接收邮件地址" /> 
    <property name="mailport" value="25" />
    <!--邮箱需要开通smtp服务-->
    <property name="mailhost" value="smtp邮件服务器地址" />

    <target name="mail">
        
        <loadfile property="report" srcFile="${jmeter.result.htmlName}" encoding="${encoding}" />
        <mail from="${mail_from}" tolist="${mail_to}" mailport="${mailport}" mailhost="${mailhost}" user="${mail_from}" password="${password}" subject="TestReport-${ant.project.name}" messagemimetype="text/html">
            <message>
                                本轮构建的结果如下:
                                ${report}                               
                    </message>
        </mail>
    <delete file="${jmeter.result.htmlName}" />
    </target>
</project>

四、运行脚本:

cd进入脚本目录:/data/apache-ant-1.9.14/bin

输入:ant  或  ant -buildfile build.xml,执行结果:

测试结果邮件发送:

五、部署到持续集成平台

部署到持续集成平台可以实现脚本的定时运行,这是接口测试的核心。
这里我们选用了jenkins,jenkins是一个强大的持续集成系统,使用起来也很简单。
使用步骤如下:
1、 安装jenkins
把Jenkins的war包复制到tomcat的webapps下面
 
2、启动tomcat,访问URL:http://ip:端口/jenkins
注意:请将jenkins安装到一个空间比较大的系统盘中。因为jenkins运行起来,生成的文件比较占空间。

3、 用户注册:默认情况下是不启用任何安全策略,即任何人都可以访问页面且有读写权限。比较常用的安全配置方式即安全矩阵。
首先开启用户注册权限,默认情况下,我们在首页点击“系统管理”后,页面上方会有这个提示:
点击“安全设置”,(对应 url: http://ip:8080/configureSecurity/) -“启用安全”,进入下面页面并选择:
 
4、 保存后系统管理中就出现管理用户的选项。页面右上角也会出现登录/注册的选项。 点击注册:
 
5、 安全策略:
点击“系统管理-Configure Global Security” 进入安全设置页面,简单常用的安全策略就是安全矩阵:
 
6、 添加用户之后保存,这个安全矩阵即生效了。至于应该勾选哪些和不勾选哪些,则根据实际需求来决定了 

说明 1:
其中: Overall 是全局权限, slave 是集群权限, job,run,view,scm 是业务权限。
其中 overall 中的 read 要勾选,否则用户登陆后什么也看不到。
overall:
    Administer:系统管理员权限
    read:浏览框架
job:
    read:查看 job
    build:执行构建
    ancel:取消构建
run:
    Delete:删除某次构建
    Update:编辑某次构建信息
SCM:
    Tag:为某次构建在 svm 上打标签。
1、安装完成后,配置一个项目
输入项目名称后,选择第一个选项:构建一个自由风格的软件项目, 同样,按语义理解“复制已有的 Item”只适用于已经创建了类似的项目

2、旧的构建保存了你在一次构建中的所有临时文件,如果构建没有保留的必要,就勾选丢弃旧的构建,同时设置保持构建天数和保持构建的最大个数两个参数。
注意:三个设置必须同时设置,否则无效
 
3、构建触发器,设置定时运行间隔,这里,设置间隔时间为每天8点运行一次
    第一个参数代表的是分钟 minute,取值 0~59; 
    第二个参数代表的是小时 hour,取值 0~23; 
    第三个参数代表的是天 day,取值 1~31;
    第四个参数代表的是月 month,取值 1~12; 
    最后一个参数代表的是星期 week,取值 0~7,0 和 7 都是表示星期天 特殊格式;
    * 指所有有效的值 M-N指定值的范围 M-N/ X或*/ X是指以X为步长,指定的区域
    或整个有效范围区间的值 A,B,...,Z列举多个值 
eg: H/15 * * * * 每十五分钟执行一次 H(0-29)/10 * * * * 每小时的0-29分内每隔十分钟执行一次 H 9-16/2 * * 1-5 每个工作日的9-16点内每隔两小时执行一次  H H 1,15 1-11 * 1-11月的每月1号和15号各执行一次 0 10 * * * 每天10点执行一次 4、在构建》添加构建步骤下面,选择invoke ant,这里由于Jenkins和ant在一台机器上面,在build file里面直接填写ant的build.xml路径就可以了

 

 5、 在项目页面,点击“立即构建”按钮,在相关连接页面,可以看到成功或失败的信息

 

 6、 查看报告

posted @ 2022-05-11 18:52  刑之风  阅读(88)  评论(0编辑  收藏  举报