ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ANT+JMETER+Jenkins 接口自动化

2022-05-11 19:01:58  阅读:154  来源: 互联网

标签:bin ant jmeter ANT apache Jenkins JMETER root localhost


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、 查看报告

标签:bin,ant,jmeter,ANT,apache,Jenkins,JMETER,root,localhost
来源: https://www.cnblogs.com/xingzhifeng/p/16259030.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有