上一篇博客讲了自己在进行Jenkins构建自动化测试时遇到的一些坑和解决方法,为了更好地让自己熟悉自动化测试构建过程,在这里开篇博客做个记录。
先说一下我一开始被安排的这个任务需求:
在Jenkins上配置一个自动化测试项目,要求该项目每天定时去跑一遍重要接口,当然这些接口是放在一个jmx文件中的。如果其中的某个或多个接口出现了问题,第一时间以邮件或短信(前提是有短信发送接口,这里需要服务端配合)的方式发送出来。
背景条件:Jenkins部署在了linux服务器上,该服务器上没有安装JMeter和Ant。
我是第一次接触Jenkins的,同事也不是很熟悉,所以在网上看了不少资料,也走了不少的弯路,接下来是我这一路摸索解决的过程。
一、搭建JMeter和Ant环境
1、在本地下载JMeter和Ant的压缩包,上传到服务器后,解压安装包:
unzip apache-jmeter-5.3.zip
unzip apache-ant-1.10.7-bin.zip
2、在~/.bashrc文件中配置JMeter和Ant的环境变量:
//进入bashrc文件的编辑模式
vi ~/.bashrc
//添加JMeter的环境变量配置,注意要改成你本地的JMeter存放路径和版本
export JMETER_HOME=.../apache-jmeter-5.2.1
export CLASSPATH=$JMETER_HOME/lib/ext/ApacheJMeter_core.jar:$JMETER_HOME/lib/jorphan.jar:$CLASSPATH
export PATH=$JMETER_HOME/bin:$PATH:$HOME/bin
//添加Ant的环境变量配置,注意要改成你本地的Ant存放路径和版本
export ANT_HOME=.../apache-ant-1.10.7
export PATH=$PATH:$ANT_HOME/bin
export PATH=$PATH:.../apache-ant-1.10.7/bin
//退出编辑,先点击Esc键,输入“:wq”,点击Enter键
:wq
//刷新bashrc文件
source ~/.bashrc
其实还是蛮简单的,不过要注意的是一定在~/.bashrc文件中配置环境变量,不然会有其他问题,具体可以看我前一篇关于填坑记录的博客。
3、配置完成后,使用jmeter和ant命令,验证一下是否正常安装了JMeter和Ant:
当看到上面的显示时,说明已经成功安装了JMeter 5.2.1 版本。
同理,当看到上面的显示时,说明已经成功安装了Ant 1.10.7版本。
4、在Ant文件的bin目录下,新建一个build.xml文件,文件内容如下:
<?xml version="1.0" encoding="utf8"?>
<project name="ant-jmeter-test" default="run" basedir=".">
<tstamp>
<format property="time" pattern="yyyyMMddHHmm" />
</tstamp>
<!-- 需要改成自己本地的jmeter目录-->
<property name="jmeter.home" value="/home/apache-jmeter-5.2.1" />
<!-- jmeter生成的jtl格式的结果报告的路径-->
<property name="jmeter.result.jtl.dir" value="/home/apache-jmeter-5.2.1/JMeterTest/resultLog/jtl" />
<!-- jmeter生成的html格式的结果报告的路径-->
<property name="jmeter.result.html.dir" value="/home/apache-jmeter-5.2.1/JMeterTest/resultLog/html" />
<!-- ʺ生成的报告的前缀-->
<property name="ReportName" value="result" />
<property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}.jtl" />
<property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}.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.jtlName}" jmeterlogfile="/home/apache-jmeter-5.2.1/jmeter.log">
<!-- 声明要运行的脚本"*.jmx"指包含此目录下的所有jmeter脚本-->
<testplans dir="/home/apache-jmeter-