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/路径下即可自动执行脚本

原文地址:https://www.cnblogs.com/qiuxiao/p/14336261.html