首页 > 其他分享 >Jmeter+Ant+Jenkins接口自动化测试平台

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

时间:2023-01-11 16:47:19浏览次数:58  
标签:opt ant 00 jmeter pertest Ant test Jenkins Jmeter

  一个完整的接口自动化测试平台需要支持接口的自动执行,自动生成测试报告,以及持续集成。 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环境中的软件开发。

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

  网盘链接:https://pan.baidu.com/s/17s3o-gjR5oO49vNr9zrkpA   提取码: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 依赖文件配置

  首先在Jmeter目录下面新建一个文件夹  loadTest(文件夹名称不要使用下划线,空格字符),并将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 查看测试报告

标签:opt,ant,00,jmeter,pertest,Ant,test,Jenkins,Jmeter
From: https://www.cnblogs.com/silgen/p/17040615.html

相关文章

  • VISUALBERT: A SIMPLE AND PERFORMANT BASELINE FOR VISION AND LANGUAGE论文阅读笔记
    摘要作者提出了VisualBERT这一框架,其由一系列的Transformerlayer组成,通过selfattention将文本与图像隐式地对齐,甚至对于语法关系也很敏感。方法VisualBERT方法的核心......
  • docker 中安装 Jenkins
    ☝️、准备一个ubuntu虚拟机(或者linux服务器,下文简称服务器)服务器中已经配置好docker(默许大家都有了)服务器可以上外网(可以使用镜像加速)✌️、安装一、下载je......
  • jenkins学习
    Jenkins简介及在Windows上的简单使用示例Windows上安装和配置Jenkins ......
  • Jmeter 读取CSV文件,并放入BeanShell中使用
    1、添加线程组和CSVDataSetConfig线程组设置循环次数‘   添加CSVDataSetConfig  2、编写CSV文件,添加input.txt到CSVDataSetConfig中  ......
  • Jmeter 加载Java代码并执行
    BeanShell中引用外部类,有三种方法:1)引用源文件,即.java文件。2)引用字节码文件,即.class文件。3)引用jar包,即.jar文件。方法1,引用源文件1)创建java文件publicclassTestA{......
  • Docker+HomeAssistant+HACS+设备接入教程
    Docker+HomeAssistant+HACS+设备接入教程homeassistant久仰大名,据说可以一统各大物联网平台的设备,家里各平台的设备都有一点,控制起来很不方便,于是乎我也来尝尝~homeassi......
  • 关于Jenkins中view的创建以及通过与正则的方式将job-Item添加到指定View中
    在Jenkins中,我们可以通过创建View来分类的管理Job/Item,View在页面上方就像菜单栏一样,里面包含了自己这一类的所有Job/Item默认会有All的View,点击它右边的+可以创建一个自......
  • Jenkins实现代码的部署&回滚
    一、Jenkins介绍   Jenkins是一个独立的开源软件项目,是基于Java开发的一款CI(持续集成)&CD(持续交付)工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台。可......
  • jmeter-性能调优
    前提:    1、当CPU、内存和硬盘的使用率非常低,就要从软件找原因;    2、当CPU和硬盘的使用率低,内存的使用率非常高,就要从软件是否存在内存泄漏找原因; ......
  • jmeter-性能测试三阶段
    一、单个接口的压测(基准容量测试)目的:验证被测试接口的最高TPS(基于一定的响应时间ms),TPS是从服务端角度验证接口性能;方法:采用梯度压测方法,按照设置的梯度逐步递增压力,观察......