前言:
本来想多分几部分,但是都是抽时间总结的,也就不润色了,直接三板斧,结束。
特别提示:
知识是用来分享的,但是也要尊重作者的权益,转载请注明出处,未经本人允许不可用于商业目的。
Ant构建文件配置
打开build.xml文件,使其处于编辑状态,输入如下内容:
<?xml version="1.0" encoding="UTF-8"?> <project name="test" default="report" basedir="."> <tstamp> <!--format property="time" pattern="yyyyMMddkkmm" /--> <format property="date" pattern="yyyy/MM/dd kk:mm:ss"/> <!--kk是24小时制,KK是12小时制--> </tstamp> <!-- 需要改成自己本地的 Jmeter 目录--> <property name="jmeter.home" value="D:/apache-jmeter-2.13" /> <property name="report.title" value="Jmeter_接口自动化测试结果"/> <!-- jmeter生成jtl格式的结果报告的路径--> <property name="jmeter.result.jtl.dir" value="D:/Jenkins_WorkSpace/result/jtl" /> <!-- jmeter生成html格式的结果报告的路径--> <property name="jmeter.result.html.dir" value="D:/Jenkins_WorkSpace/result/html" /> <!-- 生成的报告的前缀--> <!-- 生成的报告的名称--> <property name="ReportName" value="DetailsReport" /> <property name="ReportName2" value="SummaryReport" /> <!--jtl的value值是D:\Jenkins\jmxReport\jtl\TestReport+yyyyMMddhhmm.jtl--> <!--html的value值是D:\Jenkins\jmxReport\html\TestReport+yyyyMMddhhmm.html--> <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}.jtl" /> <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}.html" /> <property name="jmeter.result.htmlName2" value="${jmeter.result.html.dir}/${ReportName2}.html" /> <!-- 工程引用包 --> <property name="lib.home" value="D:/apache-jmeter-2.13/xjar"/> <!--jmx文件存放位置--> <property name="jmxFile" value="D:/Jenkins_WorkSpace/jmx"/> <!--项目初始化设置--> <target name="init" description="init" > <!--删除jtl文件夹下生成的所有文件及文件夹包括空目录,但不删除根目录--> <delete verbose="true" includeemptydirs="true" > <fileset dir="${jmeter.result.jtl.dir}" > <include name="**/*" /> </fileset> </delete> <!--删除html文件夹下生成的所有文件及文件夹包括空目录,但不删除根目录--> <delete> <fileset dir="${jmeter.result.html.dir}"> <include name="**/*"/> </fileset> </delete> <!--<delete dir="${classes.home}"/> <mkdir dir="${classes.home}"/>--> </target> <target name="test" depends="init"> <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /> <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本--> <testplans dir="${jmxFile}" includes="*.jmx" /> <!--声明生成的jtl文件是xml格式,否则会报错 --> <property name="jmeter.save.saveservice.output_format" value="xml"/> </jmeter> </target> <path id="xslt.classpath"> <fileset dir="${lib.home}" includes="xalan*.jar"/> <fileset dir="${lib.home}" includes="serializer*.jar"/> </path> <target name="report" depends="test" > <xslt classpathref="xslt.classpath" force="true" in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter.results.shanhe.me.xsl"> <param name="titleReport" expression="${report.title}"/> <param name="dateReport" expression="${date}"/> </xslt> <xslt classpathref="xslt.classpath" force="true" in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName2}" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"> <param name="titleReport" expression="${report.title}"/> <param name="dateReport" expression="${date}"/> </xslt> <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 --> <copy todir="${jmeter.result.html.dir}"> <fileset dir="${jmeter.home}/extras"> <include name="collapse.png" /> <include name="expand.png" /> </fileset> </copy> </target> </project>
相关配置完成后,可在build.xml所在文件夹下执行cmd,并输入ant验证构建是否成功,如出现下图所示结果代表构建成功:
Jenkins配置:
环境配置:
在浏览器中输入http://Jenkins_IP:端口号,登录到Jenkins界面,如下图所示:
点击“系统管理”-“Global Tool Configuration”,在该界面中配置Ant路径和Jdk路径(取消自动安装),如下图所示:
配置完成后点击“save”进行保存。
插件配置:
保存成功后返回系统配置,点击“插件管理”,安装“Ant Plugin”、“HTML Publisher plugin”、Startup Trigger、Groovy plugin和“Performance Plugin”等插件,安装完成后在已安装中可以查到相关插件,如下图所示:(注:在未联网的系统内部署时,可以将其他部署好的Jenkins中plugin文件夹拷贝到未联网系统中)
配置完成后点击“Jenkins”跳转到初始化界面。
Job创建
在初始化界面点击“新建”,在跳转后的界面中输入item name,选择“构建一个自由风格的软件项目”,点击“OK”,如下图所示:
在调转后界面的构建中添加“Invoke Ant”插件,如下图所示:
添加完成后,配置相关参数信息,如下图所示:(注如果Invoke Ant未完全显示,请点击其下方的高级按钮)
在构建后操作中添加“Publish HTML reports”,如下图所示:
添加完成后,配置相关参数,如下图所示:
配置完成后点击“保存”按钮,创建job成功。
解决HTML展示异常
由于Jenkins的一个安全策略,默认会设置为一个非常严格的权限集,以防止Jenkins用户在workspace、/userContent、archived artifacts中受到恶意HTML/JS文件的攻击。因此在“HTML Report”展示HTML报告时候无法正常显示,因此我们要进行一下处理,详细描述可参考网络博客:解决 Jenkins 中无法展示 HTML 样式的问题,这里采用一劳永逸的方式。
继续创建新的job,命名为:“HTML展示脚本”,在配置界面的“构建触发器”中勾选“Build when job nodes start”,不设置任何参数,如下图所示:
在“构建”中增加“Execute system Groovy script”,如下图所示:
增加完成后,在“Groovy Script”中输入如下脚本:
System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "")
如下图所示:
点击保存按钮,将新建的job进行保存。当下次Jenkins重启后也不用担心HTML的问题了,由于没有研究Jenkins安全策略问题,而且使用的HTML模板使用较多的js等,此处直接放开所有权限了。
自动化测试执行:
本次只采用手动构建方式,具体操作如下:
在job项目界面,点击“立即构建”执行构建操作,执行完成后查看相关执行结果报告,如下图所示:
查看结果报告可以点击“HTML Report”,展示结果如下:
概要报告:
详细报告:
备注:本分享是基于实际工作的经验总结而成,相关插件等资源来自网络,如遇到部署等问题,请先根据部署环境中使用的软件版本进行部署,先关版本亲测未发现问题,希望对读者有所帮助。