Jmeter+Ant+Jenkins接口自动化测试平台

  一个完整的接口自动化测试平台需要支持接口的自动执行,自动生成测试报告,以及持续集成。 Jmeter 支持接口的测试, Ant 支持自动构建,而 Jenkins 支持持续集成,所以三者组合在一起可以构成一个功能完善的接口自动化测试平台。


1. 环境依赖

  • JDK环境配置
  • Jmeter安装
  • Ant安装环境变量配置
  • Jenkins安装

2. 环境准备

2.1 jdk环境配置

  参考:https://www.cnblogs.com/silgen/p/16537198.html

2.2 jmeter安装

  参考:https://www.cnblogs.com/silgen/p/16673082.html

2.3 Jenkins安装

  参考:https://www.cnblogs.com/silgen/p/16849051.html

2.4 Ant安装环境变量配置

  Apache Ant,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。

  下载地址:Apache Ant - Binary Distributions

  网盘链接:百度网盘 请输入提取码   提取码:phi3

  将ant上传到服务器,解压到指定目录

[root@ZWZF-CWY-LZY-12 upload]# tar -zxvf apache-ant-1.10.13-bin.tar.gz -C /usr/local/
apache-ant-1.10.13/bin/ant
apache-ant-1.10.13/bin/antRun
apache-ant-1.10.13/bin/antRun.pl
apache-ant-1.10.13/bin/complete-ant-cmd.pl

  配置环境变量,vim /etc/profile

export ANT_HOME=/usr/local/apache-ant-1.10.13
export PATH=$PATH:$ANT_HOME/bin

  加载环境变量,source /etc/profile

  查看ant安装配置结果:ant -version

[root@ZWZF-CWY-LZY-12 local]# vim /etc/profile
[root@ZWZF-CWY-LZY-12 local]# source /etc/profile
[root@ZWZF-CWY-LZY-12 local]# ant -version
Apache Ant(TM) version 1.10.13 compiled on January 4 2023

3. 平台搭建

3.1 依赖文件配置

  首先在/opt目录下面新建一个文件夹 pertest(文件夹名称不要使用下划线,空格字符),并将Jmeter测试脚本放置到该文件夹中。
  将Jmeter extras 文件中的 ant-jmeter-1.1.1.jar 放到Ant中的 lib文件夹中
  将Jmeter extras 文件中的 jmeter-results-detail-report_21.xsl 、build.xml、collapse.png、expand.png 放到 ant目录中的 bin目录下面。

[root@ZWZF-CWY-LZY-12 lib]# cd /opt/apache-jmeter-5.4.1/extras/
[root@ZWZF-CWY-LZY-12 extras]# cp ant-jmeter-1.1.1.jar /usr/local/apache-ant-1.10.13/lib
[root@ZWZF-CWY-LZY-12 extras]# cp jmeter-results-detail-report_21.xsl build.xml collapse.png expand.png /usr/local/apache-ant-1.10.13/bin/

3.2 build.xml配置

  在Ant的bin目录中打开build.xml文件找到以下内容(44-49行)

    <property name="testpath" value="${user.dir}"/>
    <property name="jmeter.home" value="${basedir}/.."/>
    <property name="report.title" value="Load Test Results"/>

    <!-- Name of test (without .jmx) -->
    <property name="test" value="Test"/>

  根据自己的环境,修改如下:

<property name="testpath" value="/opt/pertest"/>
<property name="jmeter.home" value="/opt/apache-jmeter-5.4.1"/>
<property name="report.title" value="Test Report"/>

<!-- Name of test (without .jmx) -->
<property name="test" value="Test"/>

参数说明:

  testpath: 测试计划,这里用于存放测试脚本、测试生成的文件、测试报告  jmeter.home :Jmeter目录路径  report.title :测试报告的标题  test: jmeter测试脚本的名称(无需后缀.jmx)

3.3 Jenkins配置

3.3.1 配置jdk

  从主页面直接到“系统管理>全局工具配置”,点击新增JDK,在Name中填入名字(自定义,下图写成jdk),JAVA_HOME填入JDK的环境变量。【保存】

3.3.2 配置Ant

从主页面直接到“系统管理>全局工具配置”,点击新增Ant,在Name中填入名字(自定义,下图写成ant),ANT_HOME填入Ant的环境变量。【保存】

3.3.3 构建任务配置

  创建一个任务,如:Api_test。进行如下配置:

① 构建环境,勾选With Ant,选择Ant Version、JDK(全局工具配置中定义的ant、jdk别名)。【保存】

② Build Steps-->Invoke Ant,选择Ant Version(全局工具配置中定义的ant别名),在Build File选项(点击“高级”)输入build.xml配置文件路径:/usr/local/apache-ant-1.10.13/bin/build.xml。【保存】

4. 执行测试

4.1 服务器/opt/pertest路径下上传测试脚本:test.jmx

4.2 在Jenkins的任务(Api_test)中执行构建

  控制台输出内容详情如下:

Started by user silgen
Running as SYSTEM
Building in workspace /root/.jenkins/workspace/Api_test
[bin] $ /usr/local/apache-ant-1.10.13/bin/ant -file build.xml
Buildfile: /usr/local/apache-ant-1.10.13/bin/build.xml

run:
     [echo] funcMode = false
   [jmeter] Executing test plan: /opt/pertest/test.jmx ==> /opt/pertest/test.jtl
   [jmeter] Creating summariser <summary>
   [jmeter] Created the tree successfully using /opt/pertest/test.jmx
   [jmeter] Starting standalone test @ Wed Jan 11 14:19:45 CST 2023 (1673417985786)
   [jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
   [jmeter] Warning: Nashorn engine is planned to be removed from a future JDK release
   [jmeter] summary +   2809 in 00:00:14 =  202.9/s Avg:    85 Min:    15 Max:   243 Err:     0 (0.00%) Active: 20 Started: 20 Finished: 0
   [jmeter] summary +   6530 in 00:00:30 =  217.9/s Avg:    85 Min:    46 Max:   276 Err:     0 (0.00%) Active: 20 Started: 20 Finished: 0
   [jmeter] summary =   9339 in 00:00:44 =  213.2/s Avg:    85 Min:    15 Max:   276 Err:     0 (0.00%)
   [jmeter] summary +    686 in 00:00:03 =  246.1/s Avg:    75 Min:    45 Max:   149 Err:     0 (0.00%) Active: 0 Started: 20 Finished: 20
   [jmeter] summary =  10025 in 00:00:47 =  215.1/s Avg:    85 Min:    15 Max:   276 Err:     0 (0.00%)
   [jmeter] Tidying up ...    @ Wed Jan 11 14:20:32 CST 2023 (1673418032789)
   [jmeter] ... end of run

_message_xalan:

xslt-report:
     [xslt] Processing /opt/pertest/test.jtl to /opt/pertest/test.html
     [xslt] Loading stylesheet /usr/local/apache-ant-1.10.13/bin/jmeter-results-detail-report_21.xsl

verify-images:

copy-images:
     [copy] Copying 1 file to /opt/pertest
     [copy] Copying 1 file to /opt/pertest

report:
     [echo] Report generated at 2023/01/11 14:20

all:

BUILD SUCCESSFUL
Total time: 52 seconds
Finished: SUCCESS

4.3 进入服务器路径/opt/pertest,查看执行结果,生成测试报告(test.html)和测试结果(test.jtl)。

   在服务器本地执行ant -buildfile /usr/local/apache-ant-1.10.13/bin/build.xml,可达到同样效果,如下:

[root@qy-ggyf-zyl-32 pertest]# ant -buildfile /usr/local/apache-ant-1.10.13/bin/build.xml
Buildfile: /usr/local/apache-ant-1.10.13/bin/build.xml

run:
     [echo] funcMode = false
   [jmeter] Executing test plan: /opt/pertest/test.jmx ==> /opt/pertest/test.jtl
   [jmeter] Creating summariser <summary>
   [jmeter] Created the tree successfully using /opt/pertest/test.jmx
   [jmeter] Starting standalone test @ Wed Jan 11 14:28:49 CST 2023 (1673418529574)
   [jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
   [jmeter] Warning: Nashorn engine is planned to be removed from a future JDK release
   [jmeter] summary +   1829 in 00:00:10 =  181.4/s Avg:    91 Min:    17 Max:   269 Err:     0 (0.00%) Active: 20 Started: 20 Finished: 0
   [jmeter] summary +   6246 in 00:00:30 =  208.2/s Avg:    90 Min:    46 Max:   309 Err:     0 (0.00%) Active: 20 Started: 20 Finished: 0
   [jmeter] summary =   8075 in 00:00:40 =  201.5/s Avg:    90 Min:    17 Max:   309 Err:     0 (0.00%)
   [jmeter] summary +   1950 in 00:00:10 =  201.7/s Avg:    92 Min:    52 Max:   276 Err:     0 (0.00%) Active: 0 Started: 20 Finished: 20
   [jmeter] summary =  10025 in 00:00:50 =  201.5/s Avg:    90 Min:    17 Max:   309 Err:     0 (0.00%)
   [jmeter] Tidying up ...    @ Wed Jan 11 14:29:39 CST 2023 (1673418579674)
   [jmeter] ... end of run

_message_xalan:

xslt-report:
     [xslt] Processing /opt/pertest/test.jtl to /opt/pertest/test.html
     [xslt] Loading stylesheet /usr/local/apache-ant-1.10.13/bin/jmeter-results-detail-report_21.xsl

verify-images:

copy-images:
     [copy] Copying 1 file to /opt/pertest
     [copy] Copying 1 file to /opt/pertest

report:
     [echo] Report generated at 2023/01/11 14:29

all:

BUILD SUCCESSFUL
Total time: 55 seconds
[root@qy-ggyf-zyl-32 pertest]#

5. 查看测试报告

6. 批量运行多个脚本

6.1 修改配置文件

  由于jmeter默认提供的build.xml不支持通配符来批量运行多个脚本,所以这里修改build.xml配置文件来实现批量执行,具体脚本如下:

  注:将原有的build.xml文件备份,使用如下配置文件信息。

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

<project name="ant-jmeter-test" default="run" basedir=".">
 
 <!-- 根据时间戳来命名测试报告名称--> 
 <tstamp>
 <format property="time" pattern="yyyyMMddhhmm" />
 </tstamp>
 
 <!-- 需要改成自己本地的 Jmeter 目录--> 
 <property name="jmeter.home" value="/opt/apache-jmeter-5.4.1" />
  <!-- 设置脚本的测试目录--> 
 <property name="jmeter.dir" value="/opt/pertest" />
 
 <!-- jmeter生成jtl格式的结果报告的路径--> 
 <property name="jmeter.result.jtl.dir" value="${jmeter.dir}/report/jtl" />
 <!-- jmeter生成html格式的结果报告的路径-->
 <property name="jmeter.result.html.dir" value="${jmeter.dir}/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.jtl.dir}/${ReportName}${time}.jtl">
 
 <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本,也可以指定具体执行的脚本-->
 <testplans dir="${jmeter.dir}" includes="*.jmx" />
 <property name="jmeter.save.saveservice.output_format" value="xml"/>

</jmeter>
 </target>

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

    <path id="xslt.classpath">
 <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>
 <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>
 </path>
</project>

6.2 上传多个脚本到路径:/opt/pertest

6.3 在Jenkins执行构建任务

   控制台输出,如下:

Started by user silgen
Running as SYSTEM
Building in workspace /root/.jenkins/workspace/Api_test
[bin] $ /usr/local/apache-ant-1.10.13/bin/ant -file build.xml
Buildfile: /usr/local/apache-ant-1.10.13/bin/build.xml

run:

test:
   [jmeter] Executing test plan: /opt/pertest/凭证箱列表查询.jmx ==> /opt/pertest/report/jtl/TestReport202301110422.jtl
   [jmeter] Creating summariser <summary>
   [jmeter] Created the tree successfully using /opt/pertest/凭证箱列表查询.jmx
   [jmeter] Starting standalone test @ Wed Jan 11 16:22:50 CST 2023 (1673425370183)
   [jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
   [jmeter] Warning: Nashorn engine is planned to be removed from a future JDK release
   [jmeter] summary =      1 in 00:00:00 =    2.0/s Avg:   220 Min:   220 Max:   220 Err:     0 (0.00%)
   [jmeter] Tidying up ...    @ Wed Jan 11 16:22:50 CST 2023 (1673425370994)
   [jmeter] ... end of run
   [jmeter] Executing test plan: /opt/pertest/登录.jmx ==> /opt/pertest/report/jtl/TestReport202301110422.jtl
   [jmeter] Creating summariser <summary>
   [jmeter] Created the tree successfully using /opt/pertest/登录.jmx
   [jmeter] Starting standalone test @ Wed Jan 11 16:22:52 CST 2023 (1673425372803)
   [jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
   [jmeter] Warning: Nashorn engine is planned to be removed from a future JDK release
   [jmeter] summary =      2 in 00:00:01 =    3.7/s Avg:    96 Min:    15 Max:   177 Err:     0 (0.00%)
   [jmeter] Tidying up ...    @ Wed Jan 11 16:22:53 CST 2023 (1673425373735)
   [jmeter] ... end of run

report:
     [xslt] Processing /opt/pertest/report/jtl/TestReport202301110422.jtl to /opt/pertest/report/html/TestReport202301110422.html
     [xslt] Loading stylesheet /opt/apache-jmeter-5.4.1/extras/jmeter-results-detail-report_21.xsl
     [copy] Copying 2 files to /opt/pertest/report/html

BUILD SUCCESSFUL
Total time: 6 seconds
Finished: SUCCESS

6.4 查看测试报告

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值