持续集成(CI):Jmeter+Ant+Jenkins定时构建
这里Jenkins的安装部署以及工程项目的整体配置不做赘述,其它博文已经说明,这里主要是赘述Ant的相关配置,build.xml文件配置以及项目中的部分配置
一、build.xml
在Ant的安装目录下放入已经配置好的build.xml文件
然后在Jmeter的安装目录下新建一个层级文件夹work/resultLog,在resultLog目录下分别创建jtl和html目录
build.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?> <project name="接口性能监控" default="all" basedir="."> <tstamp> <format property="time" pattern="yyyyMMddhhmm" /> </tstamp> <property name="encoding" value="UTF-8" /> <!-- 需要改成自己本地的 Jmeter 目录--> <property name="jmeter.home" value="G:/apache-jmeter-5.2" /> <property name="report.title" value="接口性能监控"/> <!-- jmeter生成jtl格式的结果报告的路径--> <property name="jmeter.result.jtl.dir" value="${jmeter.home}/work/resultLog/jtl" /> <!-- jmeter生成html格式的结果报告的路径--> <property name="jmeter.result.html.dir" value="${jmeter.home}/work/resultLog/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="all"> <antcall target="test" /> <antcall target="report" /> <antcall target="mail" /> </target> <target name="test"> <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /> <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> <!-- 声明要运行的脚本"*.jmx"指包含此目录下的所有jmeter脚本--> <testplans dir="${jmeter.home}/bin/jmeter_scripts" includes="*.jmx" /> <property name="jmeter.save.saveservice.output_format" value="xml"/> </jmeter> </target> <path id="xslt.classpath"> <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/> <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/> </path> <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="showData" expression="${show-data}"/> <param name="dateReport" expression="${report.datestamp}"/> <param name="titleReport" expression="${report.title}:${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> <property name="mail_from" value="发送邮件的地址" /> <property name="password" value="邮箱密码" /> <!--mail_to:发送列表,多个之间逗号间隔 --> <property name="mail_to" value="接收邮件地址" /> <property name="mailport" value="25" /> <!--邮箱需要开通smtp服务--> <property name="mailhost" value="smtp邮件服务器地址" /> <target name="mail"> <loadfile property="report" srcFile="${jmeter.result.htmlName}" encoding="${encoding}" /> <mail from="${mail_from}" tolist="${mail_to}" mailport="${mailport}" mailhost="${mailhost}" user="${mail_from}" password="${password}" subject="TestReport-${ant.project.name}" messagemimetype="text/html"> <message> 本轮构建的结果如下: ${report} </message> </mail> <delete file="${jmeter.result.htmlName}" /> </target> </project>
在build.xml文件中我们要特别注意以下配置项(关系到是否能执行成功):
- jmeter.home 值为Jmeter的安装目录
- jmeter.result.jtl.dir & jmeter.result.html.dir 值对应的路径建议提前手动创建
- ${jmeter.home}/bin/jmeter_scripts 目录下的文件名要与被测的性能测试脚本名称保持一致
- mail_from 发送方邮箱地址
- password 发送方的邮箱密码(注意:如果是qq邮箱则为授权码,并且需要开启smtp邮箱服务)
- mail_to 接收方邮箱地址(多个地址用英文逗号相隔)
- mailhost 邮箱服务器地址
- mailport 邮箱服务器端口
二、Ant配置
在Jenkins中,Manage Jenkins—>Global Tool Configuration—>Ant下配置Ant参数,配置完成后点击保存
三、工程创建
1.创建一个自由风格的项目
2.构建配置
增加构建步骤—>Invoke Ant,配置对应的参数后,点击保存
3.开始构建
在刚创建的项目下点击Build Now开始构建,并等待构建完成
4.查看报告
1.测试报告文件
2.测试报告邮件
作者:小公瑾
-------------------------------------------
个性签名:不忘初心,方得始终!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!