测试基础课接口IT必备技能

Jmeter+Ant自定义接口测试报告以及集成jenkins

2019-06-26  本文已影响26人  wangshukai

(文档包含自定义接口测试报告以及集成jenkins)

      Jmeter是压力测试、接口测试工具,Ant是基于Java的构建工具,具有跨平台的作用,jenkins是持续集成工具。将这三者结合起来可以搭建一套webservice接口测试的持续构建环境。

  1、安装JDK,配置java环境变量(略过)

  2、安装Jmeter,这里用到的版本是3.1(安装过程略过)

  3、安装 ANT

   3.1 下载安装

     下载地址 http://ant.apache.org/bindownload.cgi,下载后解压到指定位置即可,

     比如:D:/program files/apache-ant-1.9.0

   3.2 配置环境变量

windows中设置ant变量:

ANT-HOME D:/program files/apache-ant-1.9.0

path D:/program files/apache-ant-1.9.0/bin

classpath D:/program files/apache-ant-1.9.0/lib

   3.3 安装验证

     验证安装结果,命令行输入ant -v ,出现版本信息则安装成功(本人安装的是1.10.5版)

  4、ANT中配置Jmeter   

          4.1、配置库文件

          将jmeter extras目录下的ant-jmeter-1.1.1.jar 文件拷贝到ant安装目录下的lib文件夹中(本人安装的是jmeter3.1)

      copy from:

      paste to:

    4.2  配置ANT与Jmeter的配置文件

         4.2.1 配置ant 编译文件 build.xml

      拷贝下面的内容与新建的txt文件中,并将此文件改名为:build.xml            

1 <?xml version="1.0" encoding="UTF-8"?>

2

3 <project name="ant-jmeter-test" default="run" basedir=".">

4    <tstamp>

5        <format property="time" pattern="yyyyMMddhhmm" />

6    </tstamp>

7    <!-- 需要改成自己本地的 Jmeter 目录--> 

8    <property name="jmeter.home" value="D:\测试工具\JMETER\apache-jmeter-3.1" />

9    <!-- jmeter生成jtl格式的结果报告的路径-->

10    <property name="jmeter.result.jtl.dir" value="D:\测试工具\JMETER\apache-jmeter-3.1\bin\ant-test\smoke_report\jtl" />

11    <!-- jmeter生成html格式的结果报告的路径-->

12    <property name="jmeter.result.html.dir" value="D:\测试工具\JMETER\apache-jmeter-3.1\bin\ant-test\smoke_report\html" />

13    <!-- 生成的报告的前缀--> 

14    <property name="ReportName" value="TestReport" />

15    <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" />

16    <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}.html" />

17   

18    <target name="run">

19        <antcall target="test" />

20        <antcall target="report" />

21    </target>

22   

23    <target name="test">

24        <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />

25        <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">

26              <!-- 声明要运行的脚本。"*.jmx"指包含此目录下的所有jmeter脚本-->

27            <testplans dir="D:\测试工具\JMETER\apache-jmeter-3.1\bin\ant-test\测试" includes="*.jmx" />

28

29              <property name="jmeter.save.saveservice.output_format" value="xml"/>

30        </jmeter>

31    </target>

32   

33      <path id="xslt.classpath">

34        <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/>

35        <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/>

36      </path>

37       

38    <target name="report">

39        <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp>   

40        <xslt             

41              classpathref="xslt.classpath"

42              force="true"

43             

44              in="${jmeter.result.jtlName}"

45              out="${jmeter.result.htmlName}"

46              style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" /> 

47       

48        <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->

49        <copy todir="${jmeter.result.html.dir}">

50            <fileset dir="${jmeter.home}/extras">

51                <include name="collapse.png" />

52                <include name="expand.png" />

53            </fileset>

54        </copy>

55    </target>   

56   

57 </project>

View Code(复制代码记得删除每行数列的数字序号

 4.2.2 配置jmeter.properties

    配置jmeter报告输出格式为xml在jmeter目录下jmeter.properties文件中修改jmeter.save.saveservice.output_format=csv 为

        jmeter.save.saveservice.output_format=xml,并去掉前面的注释符号#

  4.3 验证配置,执行构建测试

  4.3.1 准备测试脚本数据

    build配置文件放在与测试脚本同目录

  4.3.2 执行测试     

          命令行cd到build.xml文件所在目录,输入ant run ,执行测试

   看到build successful 则说明构建测试成功

   4.3.3 报告输出路径下查看测试结果报告

    按build.xml文件中设置的测试报告地址找到html版测试报告

    打开看看:测试结果展现了用例数、成功率、用例执行时间等结果参数

  4.4、 测试报告优化

   用jmeter自带的测试报告得到的测试报告信息并不是很全,这里参考网上的方法,做一个优化

   4.4.1、下载优化模板 jmeter-results-shanhe-me.xsl,拷贝到jmeter的extras目录中,

      如D:\测试工具\JMETER\apache-jmeter-3.1\extras

链接:https://pan.baidu.com/s/1dWvwufys0YtYDC6w8bnSMQ 密码:7m03

上面的为请求结果自动换行,且用json格式化请求结果

      4.4.2、设置测试输出报告要输出的内容

     同样在jmeter.properties中,设置需要输出的内容为true,并去掉前面的注释符号#,这里全部设置成true

 4.4.3 设置build文件的报告模板为优化后的模板jmeter-results-shanhe-me.xsl

链接:https://pan.baidu.com/s/1ogCJRfdsZ6s2m-PHN1nSEA 密码:rk81

4.4.4、按前面的方式再次用ant构建测试,查看优化后的测试报告

  5、配置jenkins

 5.1 、jenkins.war的下载与安装,下载后放到d盘根目录

       5.2 、配置环境变量,设置JENKINS_HOME ,例如jenkins文件在d盘根目录,JENKINS_HOME=d:\jenkins       

       5.3 、启动jenkins(jenkins.war文件我放在D盘根目录的)

             命令行输入java -jar jenkins.war

浏览器中输入url:jenkins所在主机IP 端口:8080 ,打开jenkins

    配置用户名、密码及插件,这里需要配置invoke ant插件、HTML测试报告展示的插件

invoke ant插件

HTML插件

   5.4、新建并配置一个JOB

    设置项目名称:

    配置构建:

    配置构建:invoke ant

配置build文件路径: 

 配置测试报告插件,用于打开测试结果报告

基本配置完成

     5.5、JOB主页,点击立即构建,执行测试,构建完成即可通过HTML_Report来查看测试结果

           继续构建基本完成

配置邮件插件来发送测试报告(引用他人截图)

1、在Jenkins安装Email Extension Plugin插件,如下图:

2、设置Extended E-mail Notification

进入“系统管理”-“系统设置”,对Extended E-mail Notification进行配置,具体参考下图: 

注意:上图中的Password不是qq密码,而是在QQ邮箱申请开通IMAP/SMTP服务后收到的密码

3、设置邮件通知

还是在系统管理-系统设置里面设置,内容和Extended E-mail Notification差不多,具体如下图: 

4、Jenkins任务的配置

a、在进入任务的配置页面,然后在构建后操作模块增加构建后的操作“Editable Email Notification”,如图: 

b、我的Editable Email Notification配置如下: 

注释:当测试邮件配置失败,看下系统管理员邮箱有没有配置。

c、注意:还要在高级里设置邮件的触发条件,如下: 

d、我的邮件内容如下,可参考

第一个

<!DOCTYPE html>  

<html>  

<head>  

<meta charset="UTF-8">  

<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>  

</head>  

<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"  

  offset="0">  

  <div>

  <table width="95%" cellpadding="0" cellspacing="0" 

    style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif"> 

    <tr>

      <th align="center" colspan="2"><br />

        <h2>构建信息</h2> 

      </th>

    </tr>

    <tr>  

      <td>  

        <ul>  

          <li>项目名称 : ${PROJECT_NAME}</li><br />  

          <li>详细测试报告 : <a href="${PROJECT_URL}测试报告">${PROJECT_URL}测试报告</a></li><br />

          <li>触发原因: ${CAUSE}</li><br />           

          <li>项目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li><br />

        </ul>  

      </td> 

      <td>${JELLY_SCRIPT,template="html"}<br/> 

    </tr>  

    <tr>  

      <td colspan="2" align="center"><br />

      <h2>测试报告</h2>

      </td>  

    </tr>

    <tr>

      <td colspan="2" align="center">

        <div>${FILE ,path="C:/Users/kingdee/.jenkins/workspace/AutoTestDemo/target/surefire-reports/emailable-report.html"}</div>

      </td>

    </tr>

  </table> 

  </div>

 </body>  

</html>

注意这行代码:

${FILE ,path=”D:/测试工具/JMETER/apache-jmeter-3.1/bin/ant-test/smoke_report/TestReport.htmll”}

作用是引入了testng生成的测试报告,然后在邮件的html里显示出来。

第二个:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次构建日志</title>

</head>

<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"

  offset="0">

  <table width="95%" cellpadding="0" cellspacing="0"

    style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">

    <tr>

      <td>(本邮件是程序自动下发的,请勿回复!)</td>

    </tr>

    <tr>

      <td><h2>

          <font color="#0000FF">构建结果 - ${BUILD_STATUS}</font>

        </h2></td>

    </tr>

    <tr>

      <td><br />

      <b><font color="#0B610B">构建信息</font></b>

      <hr size="2" width="100%" align="center" /></td>

    </tr>

    <tr>

      <td>

        <ul>

          <li>项目名称&nbsp;:&nbsp;${PROJECT_NAME}</li>

          <li>构建编号&nbsp;:&nbsp;第${BUILD_NUMBER}次构建</li>

          <li>触发原因:&nbsp;${CAUSE}</li>

          <li>构建日志:&nbsp;<a href="${BUILD_URL}console">${BUILD_URL}console</a></li>

          <li>构建&nbsp;&nbsp;Url&nbsp;:&nbsp;<a href="${BUILD_URL}">${BUILD_URL}</a></li>

          <li>工作目录&nbsp;:&nbsp;<a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>

          <li>项目&nbsp;&nbsp;Url&nbsp;:&nbsp;<a href="${PROJECT_URL}">${PROJECT_URL}</a></li>

        </ul>

      </td>

    </tr>

    <tr>

      <td><b><font color="#0B610B">Changes Since Last

            Successful Build:</font></b>

      <hr size="2" width="100%" align="center" /></td>

    </tr>

    <tr>

      <td>

        <ul>

          <li>历史变更记录 : <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a></li>

        </ul> ${CHANGES_SINCE_LAST_SUCCESS,reverse=true, format="Changes for Build #%n:<br />%c<br />",showPaths=true,changesFormat="<pre>[%a]<br />%m</pre>",pathFormat="&nbsp;&nbsp;&nbsp;&nbsp;%p"}

      </td>

    </tr>

    <tr>

      <td><b>Failed Test Results</b>

      <hr size="2" width="100%" align="center" /></td>

    </tr>

    <tr>

      <td><pre

          style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">$FAILED_TESTS</pre>

        <br /></td>

    </tr>

    <tr>

      <td><b><font color="#0B610B">构建日志 (最后 100行):</font></b>

      <hr size="2" width="100%" align="center" /></td>

    </tr>

    <!-- <tr>

      <td>Test Logs (if test has ran): <a

        href="${PROJECT_URL}ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip">${PROJECT_URL}/ws/TestResult/archive_logs/Log-Build-${BUILD_NUMBER}.zip</a>

        <br />

      <br />

      </td>

    </tr> -->

    <tr>

      <td><textarea cols="80" rows="30" readonly="readonly"

          style="font-family: Courier New">${BUILD_LOG, maxLines=100}</textarea>

      </td>

    </tr>

  </table>

</body>

</html>

设置构建时间来定时自动执行测试 

上一篇 下一篇

猜你喜欢

热点阅读