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环境中的软件开发。
下载地址: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 依赖文件配置
首先在/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 查看测试报告


Jmeter+Ant+Jenkins接口自动化测试平台的更多相关文章
- Jmeter+ant+jenkins接口自动化测试 平台搭建(一)
平台简介 一个完整的接口自动化测试平台需要支持接口的自动执行,自动生成测试报告,以及持续集成.Jmeter 支持接口的测试,Ant 支持自动构建,而 Jenkins 支持持续集成,所以三者组合在一起可 ...
- Jmeter+ant+jenkins接口自动化测试 平台搭建(三)
四.报告优化 Jmeter 默认生成报告不是很详细,因此我们需要进行优化.这里我们使用新的报告模板:默认的报告模板是 jmeter-results-detail-report_21.xsl 先上效果图 ...
- Jmeter+ant+jenkins接口自动化测试 平台搭建(二)
一.依赖文件配置 1.在ant目录C:\apache-ant-1.10.5下新建一个demo文件夹,并将jmeter测试脚本放在该文件夹中 2.将\apache-jmeter-3.3\extras下面 ...
- Jmeter+Ant+Jenkins接口自动化测试框架搭建
前言 软件开发的V模型大家都不陌生,其中测试阶段分为单元测试→功能测试→系统测试→验收测试.其中单元测试一般由开发同学们自己完成,大部分测试具体实施(这里不包括用例设计)是从单体功能测试开始着手的. ...
- jmeter+ant+jenkins接口自动化测试框架
大致思路:Jmeter可以做接口测试,也能做压力测试,而且是开源软件:Ant是基于Java的构建工具,完成脚本执行并收集结果生成报告,可以跨平台,Jenkins是持续集成工具.将这三者结合起来可以搭建 ...
- Jmeter+Ant+Jenkins接口自动化测试(二)_测试方案设计及jmeter脚本开发
前言 根据之前部署好的测试环境,进行接口自动化测试的方案设计及Jmeter脚本开发.测试方案设计过程中采用了数据分离和对象分离等思路,因此直接通过特定的测试用例文档来驱动整个自动化接口测试的执行,相关 ...
- Jmeter+Ant+Jenkins接口自动化测试(一)_环境部署
前言: 2017年最后一个月份,今天抽出时间把之前的一些记录分享出来,也为今年画上个简单的句号吧,无论好与坏,无论成功与失败,简单的记忆,不要留下点点空白. 特别提示: 知识是用来分享的,但是也要尊重 ...
- jmeter+ant+jenkins 接口自动化测试持续集成(送源码)
9.1 安装和介绍 JMeter 安装文件路径:https://pan.baidu.com/s/1kVJdnuv. JMeter 是轻量级的开源且稳定的自动化测试工具. 思路:在接口说明文档中整理 ...
- Jmeter+ant+Jenkins接口自动化框架搭建
摘自:https://testerhome.com/topics/13389 一.背景 上一篇讲了Jmeter 接口自动化-脚本数据分离实例,我们知道怎么利用Jmeter去编写接口自动化脚本,但是接 ...
- 使用jmeter+ant进行接口自动化测试(数据驱动)之二:利用apache-ant执行测试用例并生成HTML格式测试报告
在 使用jmeter+ant进行接口自动化测试(数据驱动)之一 介绍了如何使用csv文件来批量管理接口 本次接着介绍如何利用apache-ant执行测试用例并生成HTML格式测试报告 ①下载安装 ap ...
随机推荐
- 2022-07-31:给出一个有n个点,m条有向边的图, 你可以施展魔法,把有向边,变成无向边, 比如A到B的有向边,权重为7。施展魔法之后,A和B通过该边到达彼此的代价都是7。 求,允许施展一次魔法
2022-07-31:给出一个有n个点,m条有向边的图, 你可以施展魔法,把有向边,变成无向边, 比如A到B的有向边,权重为7.施展魔法之后,A和B通过该边到达彼此的代价都是7. 求,允许施展一次魔法 ...
- vue全家桶进阶之路3:Node.js
Node.js发布于2009年5月,由Ryan Dahl开发,是一个基于Chrome V8引擎的JavaScript运行环境,使用了一个事件驱动.非阻塞式I/O模型, 让JavaScript 运行在服 ...
- save() prohibited to prevent data loss due to unsaved related object 'item_n
问题描述: save() prohibited to prevent data loss due to unsaved related object 'item_no 原因分析: 原来的目的是保存数据 ...
- 【GiraKoo】C++多线程消息分发架构
[开源需求]C++多线程消息分发架构 项目[gi_messager] 在多线程环境中,为每个线程提供独立的消息队列 MessageLoop.注:主线程默认自动创建消息队列. MessageLoopCe ...
- 计蒜客蓝桥杯省赛模拟G
题目 一天蒜头君得到 n 个字符串 si,每个字符串的长度都不超过 1010. 蒜头君在想,在这 n 个字符串中,以 si 为后缀的字符串有多少个呢? 输入格式 第一行输入一个整数 n. 接下来 n ...
- OODO有关账户account模块学习
一.记账凭证(Account Move) 会计上的记账凭证,也叫会计分录,在Odoo中叫"Account Move".Account Move直译是"账户移动" ...
- LINIUX 查询命令的 区别 chich whereis locate fing
我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索: which 查看可执行文件的位置. whereis 查看文件的位置. locate 配合数据库查看文件位置 ...
- 在 Linux 和 Windows 下源码安装 Perl
Perl 是一种功能丰富的计算机程序语言,运行在超过 100 种计算机平台上,适用广泛,从大型机到便携设备,从快速原型创建到大规模可扩展开发.在生物信息分析领域,Perl 主要是做数据预处理.文本处理 ...
- R 语言常用操作与函数汇总
总结了一下 R 语言中常用的一些操作与函数使用,抛砖引玉,分享一下给大家,如有错误的地方欢迎留言指正. 怎样显示 R 软件中某个包中包含的全部数据集? > library(MASS)> d ...
- 聊聊Flink必知必会(二)
Checkpoint与Barrier Flink是一个有状态的流处理框架,因此需要对状态做持久化,Flink定期保存状态数据到存储空间上,故障发生后从之前的备份中恢复,这个过程被称为Checkpoin ...