jmeter+ant+Jenkins环境搭建和闭坑指南
动手搭建了Jenkins+ant+jmeter测试环境,遇到了不少的坑,度娘上找了很多方法,总结如下:
以下内容部分转载自CSDN博主「认知觉醒」的原创文章。
原文链接:https://blog.csdn.net/m0_37577255/article/details/114643416
一、搭建目的:通过Jenkins+ant自动构建执行jmeter脚本,生成测试报告并自动发送邮件到指定邮箱。
jenkins: 是开源的、提供友好操作界面的持续集成工具,主要用于持续、自动的构建/测试软件项目、监控外部任务的运行。jenkins用java语言编写,可在Tomcat等流行的servlet容器中运行,也可以独立云溪。通常与版本管理工具(SVN,GIT)、构建工具(MAVEN,ANT,GRADLE)结合使用。
ant: apache ant是一个将软件编译、测试、部署等步骤联系在一起加以自动化的工具。Ant是纯java语言编写的,具有跨平台性。Ant运行时需要一个XML文件(构建文件),Ant通过调用target树,可以执行各种task,每个task实现了特定接口对象,它很容易集成到开发环境中去。
jmeter:
apache jmeter: 是基于java的压力测试工具。
整体过程理解如下
二、搭建步骤:
依次安装jmeter、ant、jenkins
1、搭建环境
JDK:11.0.15
Jmeter:3.0
Ant:1.9.16
Jenkins:Jenkins-war:2.367
注意:安装Jenkins不要使用Jenkins.msi安装,要使用Jenkins.war安装。
另外,如果使用的是jdk11版本,需要修改jmeter的运行文件,即/bin/jmeter.bat,将默认jdk版本修改成11.0.15
2、jmeter安装
jmeter解压之后,配置环境变量后就可以使用。
下载地址:https://archive.apache.org/dist/jmeter/binaries/
2.1、解压
2.2、配置环境变量
1)新建:JMETER_HOME ,变量值输入:E:\apache-jmeter-3.0
2)环境变量:CLASSPATH,添加
%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-1.2.jar;
3)环境变量:Path,添加 %JMETER_HOME%\bin
4)测试 jmeter -v
3、Ant安装
Ant解压之后,配置环境变量后就可以使用。
下载地址:https://blog.csdn.net/m0_37577255/article/details/114643416
3.1、解压
3.2、配置环境变量
1)新建环境变量 ANT_HOME ,变量输入:D:\Program Files\apache-ant-1.9.16
2)环境变量 PATH添加,%ANT_HOME%\bin
3)测试 ant -v
4、ANT、JMETER其它设置
1、 jmeter结果文件默认保存的是.csv格式的文件,因为后面要生成html,所以要修改下默认配 置,修改文件“E:\apache-jmeter-3.0\bin\jmeter.properties”,设置:jmeter.save.saveservice.output_format=xml
2、 将apache-jmeter-5.4.1_A5\extras\ant-jmeter-1.1.1.jar拷贝到“\apache-ant-1.10.9\lib\”下
3、 在E:\apache-jmeter-3.0下新建JmeterSpace目录,
Script 目录用来存放需要执行的jmeter脚本。如abc.jmx测试文件和build.xml文件
ResultLog\html 目录存放生成的html文件,只需要在ResultLog下创建html空文件夹即可。
ResultLog\jtl 目录存放生成的jtl文件,只需要在ResultLog下创建jtl空文件夹即可。
4、创建built.xml,配置如下
代码不可照搬照用,有些地方需要修改成你自己本地的路径。
<?xml version="1.0" encoding="UTF8"?>
<project name="ant-jmeter" default="run" basedir=".">
<property name="jmeterPath" value="E:\apache-jmeter-3.0"/>
<tstamp><format property="time" pattern="yyyyMMddHHmm" /></tstamp>
<!-- jmeter环境配置 -->
<property name="jmeter.home" value="E:\apache-jmeter-3.0"/>
<!-- jtl测试结果存放路径 -->
<property name="jmeter.result.jtl.dir" value="E:\apache-jmeter-3.0\JmeterSpace\ResultLog\jtl"/>
<!-- html测试结果存放路径 -->
<property name="jmeter.result.html.dir" value="E:\apache-jmeter-3.0\JmeterSpace\ResultLog\html"/>
<property name="htmlReportNameSummary" value="TestReport"/>
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${htmlReportNameSummary}.jtl"/>
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${htmlReportNameSummary}.html"/>
<target name="run">
<antcall target="test"/>
<antcall target="report"/>
<antcall target="mail"/>
</target>
<!-- 执行接口测试 -->
<target name="test">
<echo>执行接口自动化测试用例</echo>
<taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
<!-- 声明要运行的脚本“*.jmx”指包含此目录下的所有jmeter脚本-->
<testplans dir="E:\apache-jmeter-3.0\JmeterSpace\Script" includes="*.jmx" />
<property name="jmeter.save.saveservice.output_format" value="xml"/>
</jmeter>
</target>
<!-- 解决报告中NAN字段显示问题-->
<path id="xslt.classpath">
<fileset dir="${jmeter.home}/lib" includes="xalan-2.7.2.jar" />
<fileset dir="${jmeter.home}/lib" includes="serializer-2.7.2.jar" />
</path>
<target name="report">
<echo>生成接口自动化测试报告</echo>
<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.xsl" >
<param name="titleReport" expression="接口自动化测试报告${time}"/>
<param name="dateReport" expression="${report.datestamp}"/>
</xslt>
<!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
<copy file="${jmeter.home}/extras/expand.png" tofile="${jmeter.result.html.dir}/expand.png" />
<copy file="${jmeter.home}/extras/collapse.png" tofile="${jmeter.result.html.dir}/collapse.png" />
</target>
<target name="mail123">
<echo>这是测试部分</echo>
</target>
<!--自动发送测试报告到指定邮箱 -->
<property name="mail_from" value="ABC@139.com" />
<property name="password" value="XXXXXXXXX" />
<!--mail_to:收件人列表,多个收件人之间使用都好间隔 -->
<property name="mail_to" value="ABC@139.com" />
<property name="mailport" value="25" />
<!--邮箱需要开通smtp服务 -->
<property name="mailhost" value="smtp.139.com" />
<target name="mail">
<echo>发送测试报告</echo>
<loadfile property="report" srcFile="${jmeter.result.htmlName}" encoding="UTF-8" />
<mail from="${mail_from}" tolist="${mail_to}" mailport="${mailport}" mailhost="${mailhost}" user="${mail_from}" password="${password}" subject="jmeter 测试报告" messagemimetype="text/html">
<message>
本轮构建的结果如下:
${report}
</message>
</mail>
<!--<delete file="${jmeter.result.htmlName}" />-->
</target>
</project>
代码说明:
5、测试jmeter+ant
在E:\apache-jmeter-3.0\JmeterSpace\Script打开cmd
6、查看执行结果
在配置完build.xml后,测试发送邮件功能时,遇到2个问题,一个是由于缺少相应的jar包,另外一个是由于smtp端口号写的是带ssl的,应该写成不带ssl的,我使用的是139邮箱,所以端口号改成25就可以了。
问题一
问题二、
解决办法:将端口号改成不带ssl的,我使用的是139邮箱,改成25就可以了。
JENKINS安装
下载地址:https://get.jenkins.io/war-stable/2.263.3/
1、将下载的war包放入到D:\jenkins目录下,在该目录下执行cmd,启动jenkins.war包
java -jar jenkins.war
2、默认端口是8080,启动成功后,访问http://localhost:8080/
密码可以从路径找,也可以从控制台找
这边选了了安装推荐插件,安装需要一段时间,耐心等待安装完
更具体的安装步骤,可百度查找。
安装完成后,检查是否有这几个插件:Ant Plugin,Performance plugin,HTML publisher plugin,Groovy,若没有则依次安装
安装插件步骤
首页点击系统管理Manage Jenkins->管理插件Manage Plugins
在可选插件里搜索 上述几个插件的名称,例如 Groovy
上述jenkins准备就绪,开始配置项目。
1、新建item>Freestyle project,创建一个自由风项目
2、general,源码管理使用默认无,构建触发器,环境搭建使用默认空,
3、构建:增加Invoke Ant
Ant Version选择,选择前需先在全局工具配置里面配置好
Jenkins配置全局工具ANT
点击Manage Jenkins>Global Tool Configuration
Ant >新增Ant
Name: 确定ant名称
ANT_HOME: 配置ANT的安装路径,D:\software\apache-ant-1.10.9
应用,保存。
Targets: build.xml文件里标签维护的name:“run”
Build File: ant 构建文件build.xml的文件路径:D:/software/apache-jmeter-5.4.1_A5/JmeterSpace/build.xml
4、构建:新增Execute Grooxy script(解决Jenkins,查看配置HMTl测试报告样式丢失,未加载JS和CSS问题)
在Grooxy script ,输入命令:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
1
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
5、构建后操作:增加构建后操作步骤Pubulish Performance test result report
Source data files (autodetects format): 生成的jtl文件路径,D:\software\apache-jmeter-5.4.1_A5\JmeterSpace\ResultLog\jtl\TestReport.jtl(现在还是固定一个文件,这边能到目录,还未尝试),
StandModle: 生成的jtl文件内容格式
6、构建后操作:增加构建后操作步骤Pubulish HTML reports
HTML directory to archive: 生成的html文件路径,D:\software\apache-jmeter-5.4.1_A5\JmeterSpace\ResultLog\html
index pages: *.html展示所有的html文件
7、保存,执行构建
可在控制台看到执行过程中输出的log日志
8、查看生成的html结果
点击HTML Report
在下载Jenkins需要的插件时,如ant,如果通过默认的下载源下载,会下载失败,需要修改下载源,修改下载源,需要修改2个地方
1、是修改插件管理的升级站点URL,修改后内容https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
2、修改default.json
updates.jenkins-ci.org/download替换为mirrors.tuna.tsinghua.edu.cn/jenkins
有些jenkins版本中是将:
updates.jenkins.io/download替换为mirrors.tuna.tsinghua.edu.cn/jenkins
然后把谷歌浏览器修改为百度
www.google.com修改为www.baidu.com
查看邮箱
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 百万级群聊的设计实践
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期