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

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

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,636评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,890评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,680评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,766评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,665评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,045评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,515评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,182评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,334评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,274评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,319评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,002评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,599评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,675评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,917评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,309评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,885评论 2 341

推荐阅读更多精彩内容