• jmeter+ant+jenkins接口自动化测试框架,linux系统安装部署方式


    接口自动化持续测试

    1.    简介

    文档目的

    编写接口自动化持续测试文档,是为了指导魔方测试人员进行接口自动化测试。

    项目简介

    随着魔方版本的更新、迭代,魔方测试用于回归测试的时间越来越长,需要考虑使用自动化手段去进行魔方功能的回归,解放测试人员。之前尝试过使用java+selenium数据驱动的ui自动化,因为选择的是网络上现有的框架,测试效率低,用例维护不方便。且ui变动后原先的测试用例都要调整。本次选择jmeter+ant+jenkins架构进行接口自动化持续测试。Jmeter主要生成接口测试脚本,ant调用jmeter执行脚本,生成报告。Jenkins进行持续集成测试。

    变更记录

    2.    服务部署

    将所需要的安装包上传到/home/jmeter_packages路径下。有以下安装包:

    软件

    版本

    jdk

    jdk-8u45-linux-x64.tar.gz

    Jmeter

    apache-jmeter-5.4.1.tgz

    apache-ant

    apache-ant-1.9.15-bin.tar.gz

    jenkins

    jenkins-2.138.4-1.1.noarch.rpm

    Jmeter部署

    Meter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言

    Jmeter使用需要jdk,所以先部署jdk。本次使用jdk-8u45-linux-x64.tar.gz安装jdk。

    # cd /home/jmeter_packages

    # mkdir /home/java && mv jdk-8u45-linux-x64.tar.gz /home/java/

    # cd /home/java && tar -zxvf jdk-8u45-linux-x64.tar.gz

    # alternatives --install /usr/bin/java java /home/java/jdk1.8.0_45/bin/java 3

    # alternatives --config java ###选择刚刚添加的jdk

      Selection    Command

    -----------------------------------------------

    *+ 1           /home/java/jdk1.8.0_45/bin/java

     

    Enter to keep the current selection[+], or type selection number: 1

    # java -version ###出现版本号表示jdk部署成功

    java version "1.8.0_45"

    Java(TM) SE Runtime Environment (build 1.8.0_45-b14)

    Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

    Jdk安装完成后配置jmeter,先解压jmeter安装包。

    # mkdir /home/jmeter && mv apache-jmeter-5.4.1.tgz /home/jmeter

    # cd /home/jmeter && tar -zxvf apache-jmeter-5.4.1.tgz

    修改/etc/profile文件,设置jmeter变量环境,在文件的最后添加一下内容:

    # vim /etc/profile

    export JMETER_HOME=/home/jmeter/apache-jmeter-5.4.1

    export PATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$JMETER_HOME/lib/logkit-2.0.jar:$JMETER_HOME/bin:$PATH

    # source /etc/profile

    # jmeter -v ###出现jmeter版本信息表示jmeter部署完成。

    修改jmeterinproperties文件,将输出格式由csv修改为xml。

    # cd /home/jmeter/apache-jmeter-5.4.1/bin/

    # sed -i 's/#jmeter.save.saveservice.output_format=csv/jmeter.save.saveservice.output_format=xml/' jmeter.properties

    Ant部署

    Apache Ant,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具。将ant安装包上传到对应路径后进行解压。

    # cd /home/jmeter_packages

    # mkdir /usr/local/ant && mv apache-ant-1.9.15-bin.tar.gz /usr/local/ant

    # cd /usr/local/ant/ && tar -zxvf apache-ant-1.9.15-bin.tar.gz

    添加环境变量。

    # vim /etc/profile

    export ANT_HOME=/usr/local/ant/apache-ant-1.9.15

    export PATH=$PATH:$ANT_HOME/bin

    # source /etc/profile

    # ant -v ###出现版本号表示安装成功

    Apache Ant(TM) version 1.9.15 compiled on May 10 2020

    Trying the default build file: build.xml

    Buildfile: build.xml does not exist!

    Build failed

    Jmeter和ant部署完成后,需要将/home/jmeter/apache-jmeter-5.4.1/extras/目录下的ant-jmeter-1.1.1.jar放到/usr/local/ant/apache-ant-1.9.15/lib/目录下。

    # cp /home/jmeter/apache-jmeter-5.4.1/extras/ant-jmeter-1.1.1.jar /usr/local/ant/apache-ant-1.9.15/lib/

    添加build.xml文件,内容如下:

    # mkdir /home/test_jmeter/ && cd /home/test_jmeter

    # vim build.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <project name="test_jmeter" default="all" basedir=".">

     <tstamp>

            <format property="time" pattern="_yyyyMMdd_HHmm" />

        </tstamp>

        <property name="encoding" value="UTF-8" />

        <!-- 需要改成自己本地的 Jmeter 目录-->

        <property name="jmeter.home" value="/home/sdd/jmeter/apache-jmeter-5.4.1" />

        <property name="report.title" value="test_jmeter"/>

        <!-- jmeter生成jtl格式的结果报告的路径-->

        <property name="jmeter.result.jtl.dir" value="/home/sdd/test_jmeter/resultLog" />

        <!-- jmeter生成html格式的结果报告的路径-->

        <property name="jmeter.result.html.dir" value="/home/sdd/test_jmeter/resultLog" />

        <!-- 生成的报告的前缀-->

        <property name="ReportName" value="TestReport" />

        <property name="detail" value="_detail" />

        <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />

        <property name="jmeter.result.htmlNamedetail" value="${jmeter.result.html.dir}/${ReportName}${time}${detail}.html" />

        <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脚本-->

                <testplans dir="/home/sdd/test_jmeter/" 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:ss" /></tstamp>

            <!-- 生成明细报告-->

            <xslt

                  in="${jmeter.result.jtlName}"

                  out="${jmeter.result.htmlNamedetail}"

                  style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl">

                  <param name="dateReport" expression="${report.datestamp}"/>

           </xslt>

           <!-- 生成简单报告-->

           <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>

    将jmeter脚本上传到/home/test_jmeter/。

    Jenkins部署

    Jenkins是一个独立的开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。前身是Hudson是一个可扩展的持续集成引擎。可用于自动化各种任务,如构建,测试和部署软件。

    禁用selinux,关闭防火墙。

    # sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config && setenforce 0

    # systemctl stop firewalld && systemctl disable firewalld

    进入安装包所在目录,进行安装。

    # cd /home/jmeter_packages

    # yum -y localinstall jenkins-2.138.4-1.1.noarch.rpm

    ### /usr/lib/jenkins/jenkins.war WAR包

    ### /etc/sysconfig/jenkins 配置文件

    ### /var/lib/jenkins/ 默认的JENKINS_HOME目录

    ### /var/log/jenkins/jenkins.log Jenkins日志文件

    编辑 /etc/sysconfig 下 jenkins 文件,只修改端口和JENKINS_USER。

    # vim /etc/sysconfig/jenkins

    JENKINS_USER="root"

    JENKINS_PORT=”9999”

    修改数据存储位置

    # mkdir -p /home/jenkins && rm -rf /var/lib/jenkins && cd /var/lib/

    # ln -s /home/jenkins jenkins && chmod 777 /home/jenkins && cd /home/jenkins

    设置开机自启动

    # systemctl enable jenkins && sudo systemctl restart jenkins

    修改jenkins插件下载源

    # sed -i 's/https/http/g' /home/jenkins/hudson.model.UpdateCenter.xml

    重启jenkins,使配置生效

    systemctl restart jenkins

    访问登录, http://IP:9999,查看密码。

    cat /var/lib/jenkins/secrets/initialAdminPassword

    填下密码并继续,选择安装推荐插件(等待吧,比较耗时),注意由于网络问题,可能有些插件无法安装成功。

     

    继续,点击 使用admin账号继续 ,也可以创建一个管理员账号。进入jenkins URL 设置页面,点击保存并完成。

     

    点击开始使用jenkins,如果出现页面白屏, systemctl restart jenkins ,刷新页面即可重新登录即可。

    Jenkins配置ant,点击系统管理>系统配置

     

    填写admin用户邮箱:

     

    填写发件人邮箱:

     

    返回首页开始新建任务。

     

    新建任务,输入名称,选择“构建一个自由风格的软件项目”,点击确定

     

    General选择丢弃旧的构建

     

    触发器选择定时构建,设置每小时执行一次:00 * * * *

     

    构建时选择ant,并填写配置信息

     

    执行shell命令,将最新的测试报告放到项目的workspace路径。

     

    timestamp=`date +%Y%m%d%H%M%S`

    rm -f ./resultLog/*.html

    mkdir  /home/sdd/test_jmeter/resultLog/$timestamp

    cp /home/sdd/test_jmeter/resultLog/*.jtl /home/sdd/test_jmeter/resultLog/$timestamp/

    cp /home/sdd/test_jmeter/resultLog/*.html /home/sdd/test_jmeter/resultLog/$timestamp/

    cp /home/sdd/test_jmeter/resultLog/TestR*.html ./resultLog/

    rm -f /home/sdd/test_jmeter/resultLog/latest/*.jtl

    rm -f /home/sdd/test_jmeter/resultLog/latest/*.html

    cp /home/sdd/test_jmeter/resultLog/*.jtl /home/sdd/test_jmeter/resultLog/latest/

    cd /home/sdd/test_jmeter/resultLog/latest

    mv *.jtl latest.jtl

    rm -f /home/sdd/test_jmeter/resultLog/*.jtl

    mv /home/sdd/test_jmeter/resultLog/*.html /home/sdd/test_jmeter/resultLog/latest

    构建完成后生成html报告。

     

    构建失败后发送邮件。

     

    保存后,选择开始执行任务。

     

    JMETER_HOME:/home/sdd/jmeter/apache-jmeter-5.4.1

    ANT_HOME:/usr/local/ant/apache-ant-1.9.15

    在服务器上完成架构搭建,后续只需要将生成的jmeter脚本上传到/home/sdd/test_jmeter/路径下即可自动执行脚本

  • 相关阅读:
    Typora Writings
    Xcode7.3 beta 新功能
    最美应用API接口分析
    'Project Name' was compiled with optimization
    web前端开发与iOS终端开发的异同[转]
    2015-12-19_16_30_15
    Xcode搭建Python编译环境
    jsPach.qq.com
    Q&AApple’s Craig Federighi talks open source Swift, Objective-C and the next 20 years of development
    .NET Core项目与传统vs项目的细微不同
  • 原文地址:https://www.cnblogs.com/qiuxiao/p/14336261.html
Copyright © 2020-2023  润新知