浅谈Ant+Jmeter+Jenkins接口自动化

最近几天尝试使用Ant+Jmeter+Jenkins来进行Jmeter接口的批量执行并生成测试报告,目标明确,实践的路上各种问题杀出来,现在细想来梳理一下。

一、关于Ant、Jmeter、Jenkins的下载安装以及环境配置略过。

二、各种环境配置好以后,我将工作分为以下几个步骤:

1、 通过Jmeter来配置好需要测试的接口,并保存响应的接口文件*.jmx,例如我就在D盘单独建了一个文件,用来保存(文件夹名称最好不要有中文);


2、确保上述接口都可以在Jmeter中正常运行,效果如下图;


3、通过Ant来执行上述保存的接口文档,此处需要配置一个build.xml文件,然后首先通过cmd命令窗口,进入到build.xml所在的文件夹,通过命令行ant来执行,如下图所示。


此处附上我使用的build.xml的配置文件

<?xml version="1.0" encoding="utf-8"?>
 
  <project name="ant-jmeter-test" default="run" basedir=".">
      <tstamp>
          <format property="time" pattern="yyyyMMddhhmmss" />
      </tstamp>
      <!-- 需要改成自己本地的 Jmeter 目录-->  
      <property name="jmeter.home" value="D:\software\jmeter\apache-jmeter-3.2" />
      <!-- jmeter生成jtl格式的结果报告的路径--> 
     <property name="jmeter.result.jtl.dir" value=".\report\jtl" />
     <!-- jmeter生成html格式的结果报告的路径-->
     <property name="jmeter.result.html.dir" value=".\report\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" />
	 <!--发送邮件的配置-->
	 <property name = "mail_to" value= "[email protected]"/>
     
     <target name="run">
         <antcall target="test" />
         <antcall target="report" />
	 <!--antcall target="sendMail"/-->
     </target>
     
     <target name="test">
         <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
         <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
              <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本此处我才用了相对路径,为后面通过Git来统一管理代码做铺垫-->
             <testplans dir=".\" includes="*.jmx" />
			<!--<property name="jmeter.save.saveservice.output_format" value="xml"/> --> 
         </jmeter>
     </target>
         
     <target name="report">
         <xslt in="${jmeter.result.jtlName}"
               out="${jmeter.result.htmlName}"
               style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" />
                 <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 --> 
         <copy todir="${jmeter.result.html.dir}">
             <fileset dir="${jmeter.home}/extras">
                 <include name="collapse.png" />
                 <include name="expand.png" />
             </fileset>
         </copy>
     </target>
	 
	 <target name = "sendMail">
		<mail mailhost = "smtp.163.com" mailport= "25" user = "[email protected]" password = "xxxx" ssl = "false" subject = "InterfaceTest Report!" messagemimetype = "text/html" tolist = "${mail_to}" >
		<from address = "[email protected]"/>
		<fileset dir = "${jmeter.result.html.dir}"/>
		<!--include name = "${ReportName}${Time}.html"/-->
		<message>This email was sent automatically by ANT. <br/>
			Please check the automation test report by the link below.  <br />
			If there are any questions, please contact with Bodhi Zhang. Thank you!<br /><br />
		</message>
		</mail>
	</target>
 </project>
注意:

    I、在运行ant时会报错,如果是从网上down的build.xml文件,此时需要确保的是build.xml文件编码为UTF-8,且文件内没有多余的乱码字符(可以通过notepad++打开build.xml文件,使用ansi编码方式编码,查看该文件中没有没有被注释掉的乱码字符,如果有删掉即可)

   II、build.xml的邮箱的配置需要确保发送邮件的邮箱的smtp已开启,否则执行发送邮件时会报很多530,533等授权问题,如果采用公司邮箱,一般该功能是不开启的,具体操作可以询问公司的IT服务。

4、通过cmd执行ant成功后,就可以在Jenkins中配置ant,通过Jenkins自动构建执行了。

5、可以额外配置HTML report来查看执行报告,并且通过发送邮件来通知,具体可查阅相关文档。

 注意:

 I、如果通过Jenkins自动发送测试报告邮件,需要安装Email相关插件,并且配置的发送邮箱也需要开启smtp,我的配置如下,smtp的Server可以先通过配置自己已开启smtp的qq邮箱或者163邮箱来测试;


  II、另外,邮件发送成功还需要配置系统管理员的邮件,该邮件地址需要和发送的邮件相同


6、上述都完成后,就可以通过Jenkins自动构建,实现接口批量执行,并生成报告发送邮件了。

猜你喜欢

转载自blog.csdn.net/zy_1107615451/article/details/79046190