搭建jmeter+Jenkins+ant接口自动化测试

article/2025/4/24 6:53:13

这是本人第一次在Jenkins下搭建接口自动化测试,也是一步一步摸索成形,继而满足基本使用要求。

一、前期准备

1.下载jdk,配置环境变量

export JAVA_HOME=/brd_devops/jdk1.8.0_161
export JRE_HOME=$JAVA_HOME/jre
export CLASS_PATH=$JAVA_HOME/lib:./
export PATH=$PATH:$JAVA_HOME/bin
export TESSDATA_PREFIX="/autotest/swatv2"
export ANT_HOME=/brd_devops/apache-ant-1.10.5
export PATH=$PATH:$ANT_HOME/bin

2.下载jmeter,配置环境变量

export JMETER_HOME=/apiTest/apache-jmeter-5.5
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$JMETER_HOME/lib/logkit-2.0.jar:$CLASSPATH
export PATH=$JMETER_HOME/bin:$PATH

3.下载ant,配置环境变量

export ANT_HOME=/brd_devops/apache-ant-1.10.5
export PATH=$PATH:$ANT_HOME/bin

二、jmeter个性化配置

1.找到extras/build.xml,添加代码

  <!-- Force suitable defaults -->
<property name="jmeter.save.saveservice.response_data" value="true"/>
<property name="jmeter.save.saveservice.samplerData" value="true"/>
<property name="jmeter.save.saveservice.responseHeaders" value="true"/>
<property name="jmeter.save.saveservice.requestHeaders" value="true"/>
<property name="jmeter.save.saveservice.encoding" value="true"/>
<property name="jmeter.save.saveservice.url" value="true"/>
<property name="jmeter.save.saveservice.filename" value="true"/>
<property name="jmeter.save.saveservice.hostname" value="true"/>
<property name="jmeter.save.saveservice.thread_counts" value="true"/>
<property name="jmeter.save.saveservice.sample_count" value="true"/>
<property name="jmeter.save.saveservice.idle_time" value="true"/>
<!-- 如下为原有代码,添加如上代码即可 -->
<property name="jmeter.save.saveservice.output_format" value="xml"/>
<property name="jmeter.save.saveservice.assertion_results" value="all"/>
<property name="jmeter.save.saveservice.bytes" value="true"/>
<property name="file_format.testlog" value="${format}"/>
<property name="jmeter.save.saveservice.response_data.on_error" value="${funcMode}"/>

2.下载http://shanhe.me/download.php?file=jmeter.results.shanhe.me.xsl,并上传至jmeter/extras下,再次配置extras/build.xml

<target name="report" depends="_message_xalan"><xsltclasspathref="xslt.classpath"force="true"in="${testpath}/${test}.jtl"out="${testpath}/${test}.html"//style="${basedir}/jmeter-results-detail-report${style_version}.xsl">  将左侧代码更新为如下代码,即更换xsl文件style="${basedir}/jmeter-results-shanhe-me.xsl">  //jmeter-results-shanhe-me.xsl为该文件,若提示未找到,改名即可<param name="showData" expression="${show-data}"/></xslt>
</target>

3.将extra目录下的ant-jmeter-1.1.1.jar拷贝到ant/lib下

4.验证之前的配置是否成功

[root@localhost ~]# cd /apiTest/apache-jmeter-5.5/
[root@localhost apache-jmeter-5.5]# cd extras/
[root@localhost extras]# ls
addons.txt            build.xml     expand.png                           jmeter-results-report_21.xsl  proxycert.cmd  schematic.cmd  schematic.xsl  Test.jmx
addons.xml            collapse.png  GrafanaJMeterTemplate.json           jmeter-results-shanhe-me.xsl  proxycert.sh   schematic.sh   startup.bsh    Test.jtl
ant-jmeter-1.1.1.jar  execcode.bsh  jmeter-results-detail-report_21.xsl  printvars.bsh                 remote.bsh     schematic.xml  Test.html
[root@localhost extras]# ant
Buildfile: /apiTest/apache-jmeter-5.5/extras/build.xml
run:
[echo] funcMode = false
[delete] Deleting: /apiTest/apache-jmeter-5.5/extras/Test.html
[jmeter] Executing test plan: /apiTest/apache-jmeter-5.5/extras/Test.jmx ==> /apiTest/apache-jmeter-5.5/extras/Test.jtl
[jmeter] Creating summariser <summary>
[jmeter] Created the tree successfully using /apiTest/apache-jmeter-5.5/extras/Test.jmx
[jmeter] Starting standalone test @ August 12, 2022 10:14:09 AM CST (1660270449166)
[jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
[jmeter] summary =     30 in 00:00:03 =    9.6/s Avg:   224 Min:   100 Max:   351 Err:     2 (6.67%)
[jmeter] Tidying up ...    @ August 12, 2022 10:14:13 AM CST (1660270453465)
[jmeter] ... end of run
_message_xalan:
xslt-report:
[xslt] Processing /apiTest/apache-jmeter-5.5/extras/Test.jtl to /apiTest/apache-jmeter-5.5/extras/Test.html
[xslt] Loading stylesheet /apiTest/apache-jmeter-5.5/extras/jmeter-results-shanhe-me.xsl
verify-images:
copy-images:
report:
[echo] Report generated at 2022/08/12 10:14
all:
BUILD SUCCESSFUL 
// BUILD SUCCESSFUL即为成功
Total time: 14 seconds

5.运行过后会生成Test.html文件,打开效果如下,可显示请求/响应详细内容,并且可查看断言错误详细信息

三、完成Jenkins自动化构建

1.将已调试的jmx脚本拷到Linux下,建议单独创建目录以便独立操作

//如下为参考目录示例,具体目录按实际需求

[root@localhost ~]# cd /apiTest/jmx/Test_Plan-Bdv_new
[root@localhost Test_Plan-Bdv_new]# ls
build.xml  Test_Plan-Bdv_new.jmx

2.在jmx脚本对应目录下创建build.xml文件,用来ant执行脚本,可以直接复制jmeter/extras中的build.xml文件,配置build.xml

//找到如下字段,修改配置</description><property name="testpath" value="/apiTest/jmx/Test_Plan-Bdv_new"/> //测试脚本路径<property name="respath" value="/apiTest/report"/> //测试结果存放地址<property name="jmeter.home" value="/apiTest/apache-jmeter-5.5"/> //jmeter引用地址<property name="report.title" value="Load Test Results"/> //还不晓得,可能是报告标题?<property name="xsldir" value="/apiTest/apache-jmeter-5.5/extras"/> //用来转换测试结果为html的文件存放的地址,即二、2中的文件<!-- Name of test (without .jmx) --><property name="test" value="${jmx}"/> //所执行测试的脚本名称,这里写成变量,以便后续脚本变多可灵活使用//-----------------再往下----------------------<!-- Use xalan copy from JMeter lib directory to ensure consistent processing with Java 1.4+ --><path id="xslt.classpath"><fileset dir="${lib.dir}" includes="xalan*.jar"/><fileset dir="${lib.dir}" includes="serializer*.jar"/></path><target name="report" depends="xslt-report,copy-images"><echo>Report generated at ${report.datestamp}</echo></target><target name="xslt-report" depends="_message_xalan"><tstamp><format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/></tstamp><xsltclasspathref="xslt.classpath"force="true"in="${respath}/${test}.jtl"out="${respath}/${test}.html"style="${xsldir}/jmeter-results-shanhe-me.xsl"> //这里需要修改成xsldir<param name="showData" expression="${show-data}"/><param name="titleReport" expression="${report.title}"/><param name="dateReport" expression="${report.datestamp}"/></xslt></target>

3.在对应目录下执行ant测试,验证是否成功

[root@localhost Test_Plan-Bdv_new]# ant -Djmx=Test_Plan-Bdv_new //<property name="test" value="${jmx}"/
/* 如上命令参考:ant -f build.xml -Dparam1=value1 -Dparam2=value2
/* 在build.xml文件中: <property name=build.param1 value=${param1} />
Buildfile: /apiTest/jmx/Test_Plan-Bdv_new/build.xml
run:
[echo] funcMode = false
[delete] Deleting: /apiTest/report/Test_Plan-Bdv_new.html
[jmeter] Executing test plan: /apiTest/jmx/Test_Plan-Bdv_new/Test_Plan-Bdv_new.jmx ==> /apiTest/report/Test_Plan-Bdv_new.jtl
[jmeter] Creating summariser <summary>
[jmeter] Created the tree successfully using /apiTest/jmx/Test_Plan-Bdv_new/Test_Plan-Bdv_new.jmx
[jmeter] Starting standalone test @ August 12, 2022 10:57:10 AM CST (1660273030712)
[jmeter] Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
[jmeter] summary =     77 in 00:00:05 =   14.1/s Avg:    37 Min:     2 Max:   326 Err:     0 (0.00%)
[jmeter] Tidying up ...    @ August 12, 2022 10:57:16 AM CST (1660273036526)
[jmeter] ... end of run
_message_xalan:
xslt-report:
[xslt] Processing /apiTest/report/Test_Plan-Bdv_new.jtl to /apiTest/report/Test_Plan-Bdv_new.html
[xslt] Loading stylesheet /apiTest/apache-jmeter-5.5/extras/jmeter-results-shanhe-me.xsl
verify-images:
copy-images:
report:
[echo] Report generated at 2022/08/12 10:57
all:
BUILD SUCCESSFUL
Total time: 14 seconds

4.在Jenkins上构建脚本

a.创建自由项目(自行百度如何创建项目)

b.buildEnvironment配置ant

c.addBuildStep,选择Execute Shell

d.在Jenkins上直接生成报告,Post-build Actions,选择Publish HTML reports,配置如下

四、结果展示

写在最后

当前已实现Jenkins+jmeter+ant自动化接口测试并生成测试报告,但仍有优化空间

1.测试报告结果留存问题当前没有解决,因为当前配置为每次生成测试报告都需要目录为空,否则会报错

2.报错发送邮件,内容包含错误信息,也没有展示,看看是否可以实现

3.测试报告不能像jmeter中控制器那样收缩伸展,没有明显的界定,看起来没有条理,较难判断这个HTTP请求的测试目的,这是一个重点优化类


http://chatgpt.dhexx.cn/article/rGT30SIO.shtml

相关文章

不写一行代码,搭建Jenkins+Jmeter+Ant接口自动化框架

1、安装jmeter&#xff0c;并确认你的jmeter脚本可以跑通&#xff0c;如图所示&#xff1a; 2、安装ant&#xff0c;从http://ant.apache.org/bindownload.cgi下载并确认ant安装成功 3、将Jmeter下面extras目录里面的ant-jmeter-1.1.1.jar文件复制到ant的lib目录下面&#xff0…

jmeter+ant接口测试之修改build.xml,优化测试报告,展现更详细的信息

目录 初始报告 优化 1、下载优化模板 2、修改build.xml 3、修改jmeter.properties 4、配置user.properties 5、保留最新构建报告 6、报告文件名称带当前日期 初始报告 优化 1、下载优化模板 原来的下载地址用不了了&#xff0c;大家可以另外找下 jmeter-results-shan…

jmeter-11-Ant接口自动化一键运行

前言 重要的事情说三遍&#xff1a;仓库放在最后&#xff01;&#xff01;&#xff01;仓库放在最后&#xff01;&#xff01;&#xff01;仓库放在最后&#xff01;&#xff01;&#xff01; 整体流程图 PPL Jmeter 简介&#xff1a; 整合JmeterAnt 只需要通过简式配置或直…

接口测试很难吗?学会JMeter+Ant接口自动化搭建及实践

JMeter是Apache组织的开放源代码项目&#xff0c;能做接口测试、功能测试和性能测试。它能够对HTTP和FTP服务器进行压力和性能测试&#xff0c;也可以对数据库进行同样的测试&#xff08;通过JDBC&#xff09;&#xff0c;还能以多种形式展现测试结果。 然而&#xff0c;在使用…

JMeter+Jenkins+Ant接口持续化集成

JMeterJenkinsAnt接口持续化集成 一.ant环境配置1.新建test文件夹&#xff08;不能有中文路径&#xff09;test文件夹里新建ant文件夹和TestAuto文件夹在TestAuto文件夹中创建pc文件夹&#xff0c;pc文件夹中创建resultlog文件夹和script文件夹在resultlog中分别创建html和jtl文…

jmeter+ant+jenkins接口自动化测试框架

目录 一、前言 二、安装就jmeter 三、安装jdk 四、安装Ant 五、Ant配置Jmeter&#xff1a;用ant构建命令来调动执行jmeter接口测试&#xff0c;并生成测试报告 六、配置Jenkins&#xff0c;构建持续集成 一、前言 hello呀&#xff01;各位铁子们大家好呀&#xff0…

Jmeter+ant实现接口自动化(三)

1、来看看jmeter生成自带的测试报告 进入jmeter的解压路径下的/bin&#xff0c;执行某个路径下的jmx文件&#xff1a; jmeter -n -t /Users/ss/Desktop/jmeter/参数化.jmx -l result.jtl -e -o WebReport -n: 非GUI模式执行JMeter -t: 执行测试文件所在的位置 -l: 指定生成测…

jmeter+ant接口自动化测试框架

1、安装就jmeter 1、下载安装包&#xff08;过程略过&#xff0c;自己找安装包&#xff0c;随便装在哪个目录下&#xff09; 2、配置环境变量 JMETER_HOME 为 jemter安装路径; CLASSPATH为 %JMETER_HOME%\lib; PATH为%JMETER_HOME%\bin; 3、安装验证 在命令窗口中输入jmet…

Ant安装及环境变量配置+邮件配置+Ant生成接口测试报告

Ant安装 1.将Ant解压到 D:\Atest\apacheAnt下 2.将JMeter所在目录下extras子目录里的ant-jmeter-1.1.1.jar复制到 ant 所在目录lib子目录下&#xff0c;这样Ant运行时才能找到“org.programmerplanet.ant.taskdefs.jmeter.JMeterTask”这个类&#xff0c;从而成功触发JMeter脚…

Jmeter+Ant 接口自动化环境配置指南

一 、Jmeter安装与配置(以下为个人CSDN博客老文章) https://blog.csdn.net/tester_sc/article/details/80746405 注&#xff1a;Jmeter5.0的环境变量配置与4.0或历往老版本有部分小差异&#xff0c;笔者用的Jmeter 5.0 二 、Ant的安装与配置 # Ant下载地址(下载到指定目录后…

SpringBoot整合MyBatis实现分库分表方案

SpringBoot整合MyBatis实现分库分表方案 SpringBoot整合Mybatis实现分库分表查询&#xff0c; 这里不讲解SpringBoot如何整合MyBatis &#xff0c;只讲解SpringBoot整合MyBatis下的实现分库分表的实现方案。 #大概的实现思路 我们知道MyBatis的mapper对象是通过动态代理创建…

一种简单易懂的 MyBatis 分库分表方案

转载自&#xff1a;https://www.toutiao.com/a6667422100141113863/?tt_fromweixin&utm_campaignclient_share&wxshare_count1&timestamp1552387200&appnews_article&utm_sourceweixin&iid65271942423&utm_mediumtoutiao_android&group_id666…

MyBatis分库分表方案

SpringMVC MyBatis分库分表方案 mybatis作为流行的ORM框架&#xff0c;项目实际使用过程中可能会遇到分库分表的场景。mybatis在分表&#xff0c;甚至是同主机下的分库都可以说是完美支持的&#xff0c;只需要将表名或者库名作为动态参数组装sql就能够完成。但是多余分在不同…

数据库分库分表解决方案

数据库分库分表解决方案 前言MySQL表大小限制分表方案垂直分表水平分表按月分表MySQL分区表 分库方案按业务分库按表分库 拆分后的问题及常见的解决方案垂直拆分跨库Join问题全局表数据同步 分布式事务问题MySQL XA事务本地消息表 水平拆分分布式全局唯一ID分片键选择数据扩容跨…

MySQL-分库分表方案

一、业务背景 随着业务量的增长&#xff0c;数据量会随之增长&#xff0c;单机情况下DB服务器会面临存储容量、连接数和处理能力的瓶颈&#xff0c;当数据量达到一定量级时&#xff0c;DDL变更时间变长&#xff0c;影响业务可用性&#xff0c;此时需要考虑分库分表&#xff0c…

最全的MySQL分库分表方案总结

“ 面试中我们经常会碰到的关于分库分表的问题&#xff01;今天就给大家介绍互联网公司常用 MySQL 分库分表方案&#xff01;希望对大家的面试有所帮助&#xff01; 数据库瓶颈 不管是 IO 瓶颈&#xff0c;还是 CPU 瓶颈&#xff0c;最终都会导致数据库的活跃连接数增加&#x…

python mysql分库分表_干货 : 常用MySQL分库分表方案

Python乱炖推荐搜索后浪 动森玩家 送书 数据分析 一、数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞…

php分库分表技术,谈谈关于分库分表的方案

1. 数据库瓶颈 不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。 1.1. IO瓶颈 第一种:磁盘读IO瓶颈,…

这应该是全网最全的分库分表方案了

一、数据库瓶颈 不管是IO瓶颈&#xff0c;还是CPU瓶颈&#xff0c;最终都会导致数据库的活跃连接数增加&#xff0c;进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是&#xff0c;可用数据库连接少甚至无连接可用。接下来就可以想象了吧&#xff08;并发…