美文网首页测试基础课接口IT必备技能
Jmeter+Ant自定义接口测试报告以及集成jenkins

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

作者: wangshukai | 来源:发表于2019-06-26 17:54 被阅读26次

    (文档包含自定义接口测试报告以及集成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>

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

    相关文章

      网友评论

        本文标题:Jmeter+Ant自定义接口测试报告以及集成jenkins

        本文链接:https://www.haomeiwen.com/subject/oehhcctx.html