一、环境准备:

1、JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html

2、Jmeter:http://jmeter.apache.org/download_jmeter.cgi

3、Ant:http://ant.apache.org/bindownload.cgi

4、Jenkins:http://jenkins-ci.org/

具体可参见我另一篇博客:http://www.cnblogs.com/puresoul/p/4808416.html

二、Jemter脚本准备:

1、脚本目录:D:\B_TOOLS\apache-jmeter-2.13\demo

2、脚本内容:都是简单的访问百度或google首页

baidu.jmx                      google.jmx

 

三、ANT的build.xml代码准备:

build3.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 8     <property environment="env"/>9     <property name="ReportName" value="TestReport" />
10     <!-- 需要改成自己本地的 Jmeter 目录-->
11     <property name="jmeter.home" value="D:\B_TOOLS\apache-jmeter-2.13" />
12     <!-- jmeter生成jtl、html格式的结果报告的路径-->
13     <property name="jmeter.result.dir" value="${env.WORKSPACE}/results/${env.BUILD_ID}" />
14     <!-- 生成的报告的前缀-->
15     <property name="jmeter.result.jtlName" value="${jmeter.result.dir}/${ReportName}.jtl" />
16     <property name="jmeter.result.htmlName" value="${jmeter.result.dir}/${ReportName}.html" />
17
18     <target name="run">
19         <echo message="start..."/>
20         <antcall target="clean" />
21         <antcall target="test" />
22         <antcall target="report" />
23     </target>
24
25     <target name="clean">
26         <mkdir dir="${env.WORKSPACE}/results/${env.BUILD_ID}" />
27     </target>
28
29     <target name="test">
30         <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" />
31         <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
32             <!-- 声明要运行的脚本"*.jmx"指包含此目录下的所有jmeter脚本-->
33             <testplans dir="D:\B_TOOLS\apache-jmeter-2.13\demo" includes="*.jmx" />
34
35             <property name="jmeter.save.saveservice.output_format" value="xml"/>
36         </jmeter>
37     </target>
38
39     <target name="report">
40         <xslt in="${jmeter.result.jtlName}"
41               out="${jmeter.result.htmlName}"
42               style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" />
43         <!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 -->
44         <copy todir="${jmeter.result.dir}">
45             <fileset dir="${jmeter.home}/extras">
46                 <include name="collapse.png" />
47                 <include name="expand.png" />
48             </fileset>
49         </copy>
50     </target>
51 </project>

四、配置Jenkins Job并运行:

1、job配置如下:

2、job运行结果:

 1 Started by user anonymous2 Building in workspace D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace3 [demo] $ cmd.exe /C '"ant.bat -file build3.xml run && exit %%ERRORLEVEL%%"'4 Buildfile: build3.xml5 6 run:7      [echo] start...8 9 clean:
10     [mkdir] Created dir: D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace\results\15
11
12 test:
13    [jmeter] Executing test plan: D:\B_TOOLS\apache-jmeter-2.13\demo\baidu.jmx ==> D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace\results\15\TestReport.jtl
14    [jmeter] Creating summariser <summary>
15    [jmeter] Created the tree successfully using D:\B_TOOLS\apache-jmeter-2.13\demo\baidu.jmx
16    [jmeter] Starting the test @ Tue Sep 22 15:50:33 CST 2015 (1442908233010)
17    [jmeter] Waiting for possible shutdown message on port 4445
18    [jmeter] summary +      1 in     1s =    2.0/s Avg:   254 Min:   254 Max:   254 Err:     0 (0.00%) Active: 1 Started: 1 Finished: 0
19    [jmeter] summary +      5 in     1s =    7.3/s Avg:   131 Min:    96 Max:   196 Err:     0 (0.00%) Active: 0 Started: 1 Finished: 1
20    [jmeter] summary =      6 in   1.2s =    5.0/s Avg:   151 Min:    96 Max:   254 Err:     0 (0.00%)
21    [jmeter] Tidying up ...    @ Tue Sep 22 15:50:34 CST 2015 (1442908234310)
22    [jmeter] ... end of run
23    [jmeter] Executing test plan: D:\B_TOOLS\apache-jmeter-2.13\demo\google.jmx ==> D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace\results\15\TestReport.jtl
24    [jmeter] Creating summariser <summary>
25    [jmeter] Created the tree successfully using D:\B_TOOLS\apache-jmeter-2.13\demo\google.jmx
26    [jmeter] Starting the test @ Tue Sep 22 15:50:35 CST 2015 (1442908235240)
27    [jmeter] Waiting for possible shutdown message on port 4445
28    [jmeter] summary +      1 in     1s =    1.9/s Avg:   253 Min:   253 Max:   253 Err:     1 (100.00%) Active: 1 Started: 1 Finished: 0
29    [jmeter] summary +      5 in   1.1s =    4.4/s Avg:   209 Min:    97 Max:   420 Err:     0 (0.00%) Active: 0 Started: 1 Finished: 1
30    [jmeter] summary =      6 in     2s =    3.6/s Avg:   216 Min:    97 Max:   420 Err:     1 (16.67%)
31    [jmeter] Tidying up ...    @ Tue Sep 22 15:50:36 CST 2015 (1442908236992)
32    [jmeter] ... end of run
33
34 report:
35      [xslt] Processing D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace\results\15\TestReport.jtl to D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace\results\15\TestReport.html
36      [xslt] Loading stylesheet D:\B_TOOLS\apache-jmeter-2.13\extras\jmeter-results-detail-report_21.xsl
37      [copy] Copying 2 files to D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace\results\15
38
39 BUILD SUCCESSFUL
40 Total time: 5 seconds
41 [workspace] $ cmd /c call D:\Users\heman793\AppData\Local\Temp\hudson4765606743104861298.bat
42
43 D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace>echo D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace
44 D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace
45
46 D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace>echo 15
47 15
48
49 D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace>cd results
50
51 D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace\results>cd 15
52
53 D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace\results\15>exit 0
54 Finished: SUCCESS

3、在job的workspace目录下会生成结果报告:

4、TestReport.html:

更新补充:

  上面生成的报告有如下两个问题,解决办法参见Jmeter自带报告优化(一):

  1、Date report这里的时间没有正确显示出来

  2、Summary里的字段Min Time和Max Time显示的是NaN,没有显示正确的时间。

五、配置发送邮件功能

1、自已写一个发送邮件的功能并打成sendmail.jar包,放在job的workspace目录中

2、jenkins增加构建步骤

  a)进入到测试报告的目录

  b) 调用sendmail.jar命令发送邮件

说明:

  1、由build3.xml的第12、13行可知,报告文件生成目录为:${env.WORKSPACE}/results/${env.BUILD_ID},所以这里我要先cd到具体执行的那个build_id目录下。

  2、我们也可以把上面的两行命令写在成一个批处理文件,例如我第1步有个sendmail.bat文件就是的,然后调用时直接写sendmail.bat就好了。

另外,我本文所有脚本都在我本地,其实更好的办法是使用SVN统一管理,这里就不介绍了,感觉的可以自己研究下。

作者:Glen.He 
出处:http://www.cnblogs.com/puresoul/ 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

Jmeter默认报告优化

一、本文目的:

  之前写了两篇文章搭建持续集成接口测试平台(Jenkins+Ant+Jmeter)和ANT批量执行Jmeter脚本,功能实现上都没有什么问题,但是最后生成的报告有一点小问题,虽然不影响使用,但总是感觉不够完美,具体问题如下:

  1、Date report这里的时间没有正确显示出来

  2、Summary里的字段Min Time和Max Time显示的是NaN,没有显示正确的时间。

本文主要解决上述两个问题,具体报告如何生成可参考上面提到的两篇文章。

二、Jmeter+Ant报告生成原理:

  在解决问题之前,让我们先弄清楚Jmeter+Ant是生成报告的原理,知道原理后我们就可以很从容的解决问题了。另外,如果后续我们想定制报告也就很容易了。

  1、在Jmeter的extras目录下,官方已经为我们提供了一个现成的实例,我们只需要在该目录下执行ant命令就可以生成一个数据文件Test.jtl和一个报告Test.html(PS:如果没有安装ant需要先去安装,不会用ant的自行百度)。

  2、知道了上一步后,接下来我们研究的重点就是extras目录下的build.xml文件了,具体研究细节就不在此细说了,因为这就部分内容属于ant的范围,有需要的可以自行补充下ant的知识。

三、解决问题:

1、找到extras目录下build.xml文件内容的如下部分:它的作用就是把生成的.jtl数据文件转换为.html格式的报告

具体属性的含义:

  • in:生成的.jtl文件的路径
  • out:生成的.html文件的路径
  • style:从.jtl转换成.html所使用的样式,这些文件也在extras目录下,这个是最重要的部分,如果我们想定制报告可以自行定义这个文件或者从网上找一些合适的文件。
  • param:参数,这几个参数可以在style中使用,下面会讲到。
  • path:添加jar包的路径,在下面的target中有引用到(下面第9行)。
 1     <path id="xslt.classpath">//jar的路径2         <fileset dir="${lib.dir}" includes="xalan*.jar"/>3         <fileset dir="${lib.dir}" includes="serializer*.jar"/>4     </path>5    //把生成的.jtl数据文件转换成.html格式的报告6     <target name="xslt-report" depends="_message_xalan">7         <tstamp><format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/></tstamp>8         <xslt9             classpathref="xslt.classpath"
10             force="true"
11             in="${testpath}/${test}.jtl"
12             out="${testpath}/${test}.html"
13             style="${basedir}/jmeter-results-detail-report${style_version}.xsl">
14             <param name="showData" expression="${show-data}"/>
15             <param name="titleReport" expression="${report.title}"/>
16             <param name="dateReport" expression="${report.datestamp}"/>
17         </xslt>
18     </target>

2、通过上面的分析,style 文件是整成报告转换的关键,那我们就打开jmeter-results-detail-report_21.xsl这个文件看看,找到如下几行,这里也定义了三个参数跟build.xml文件中一样,由此可猜测,我们只要在build.xml文件中定义dateReport这个参数和值,在style中就可以按如下方式使用,经过测试证明猜测是正确的,那么第一个问题就解决了:

1 <xsl:param    name="showData" select="'n'"/>
2 <xsl:param    name="titleReport" select="'Load Test Results'"/>
3 <xsl:param    name="dateReport" select="'date not defined'"/>

3、对于第二个问题,其实把第1步中的代码复制到我们自己的build.xml文件中后,可以一并解决这两个问题。解决第二个总是的关键代码是第9行和第10行:

  classpathref="xslt.classpath"

  force="true"

而第9行又引用了第1~4行

4、到此,两个问题都解决了,最终修改后的build.xml文件如下,标黄是解决总是添加的代码:

<?xml version="1.0" encoding="UTF-8"?>
<project name="ant-jmeter-test" default="run" basedir="."><!-- 需要改成自己本地的 Jmeter 目录-->  <property name="jmeter.home" value="/Users/Tools/Jmeter" /><property name="report.title" value="接口测试"/><!-- jmeter生成jtl格式的结果报告的路径--> <property name="jmeter.result.jtl.dir" value="/Users/Desktop/jmx/report" /><!-- jmeter生成html格式的结果报告的路径--><property name="jmeter.result.html.dir" value="/Users/Desktop/jmx/report" /><!-- 生成的报告的前缀-->  <property name="ReportName" value="TestReport" /><property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}.jtl" /><property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}.html" /><target name="run"><antcall target="test" /><antcall target="report" /></target><target name="test"><taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /><jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"><!-- 声明要运行的脚本"*.jmx"指包含此目录下的所有jmeter脚本--><testplans dir="/Users/Desktop/jmx" includes="*.jmx" /><property name="jmeter.save.saveservice.output_format" value="xml"/></jmeter></target><path id="xslt.classpath"><fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/><fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/></path><target name="report"><tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp><xslt classpathref="xslt.classpath"force="true"in="${jmeter.result.jtlName}"out="${jmeter.result.htmlName}"style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"><param name="dateReport" expression="${report.datestamp}"/></xslt><!-- 因为上面生成报告的时候,不会将相关的图片也一起拷贝至目标目录,所以,需要手动拷贝 --> <copy todir="${jmeter.result.html.dir}"><fileset dir="${jmeter.home}/extras"><include name="collapse.png" /><include name="expand.png" /></fileset></copy></target></project>

5、修改后的报告:

作者:Glen.He 
出处:http://www.cnblogs.com/puresoul/ 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

Jmeter报告优化之New XSL stylesheet

 Jmeter默认的报告展示的信息比较少,如果出错了,不是很方便定位问题。由Jmeter默认报告优化这篇文章可知,其实由.jtl格式转换为.html格式的报告过程中,style文件起了很关键的作用。下面介绍另一种style文件的使用方法:

1、下载style文件:jmeter.results.shanhe.me.xsl

2、把下载的文件放到jmeter的extras目录下。

3、修改jmeter.properties文件如下部分,我这里都修改成true,这样执行完脚本后就会保存这些结果到.jtl文件里面:

jmeter.save.saveservice.data_type=true
jmeter.save.saveservice.label=true
jmeter.save.saveservice.response_code=true
# response_data is not currently supported for CSV output
jmeter.save.saveservice.response_data=true
# Save ResponseData for failed samples
jmeter.save.saveservice.response_data.on_error=false
jmeter.save.saveservice.response_message=true
jmeter.save.saveservice.successful=true
jmeter.save.saveservice.thread_name=true
jmeter.save.saveservice.time=true
jmeter.save.saveservice.subresults=true
jmeter.save.saveservice.assertions=true
jmeter.save.saveservice.latency=true
jmeter.save.saveservice.connect_time=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.responseHeaders=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.encoding=false
jmeter.save.saveservice.bytes=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.filename=true
jmeter.save.saveservice.hostname=true
jmeter.save.saveservice.thread_counts=true
jmeter.save.saveservice.sample_count=true
jmeter.save.saveservice.idle_time=true

4、修改build.xml文件,如下第7行style的值修改为新下载的xsl文件名:

 1 <target name="report" depends="_message_xalan">2   <xslt3     classpathref="xslt.classpath"4     force="true"5       in="${testpath}/${test}.jtl"6       out="${testpath}/${test}.html"7       style="${basedir}/jmeter-results-shanhe-me.xsl">8     <param name="showData" expression="${show-data}"/>9   </xslt>
10 </target>

5、执行脚本,生成报告如下,明显感觉展示的内容比之前的报告多很多,定位问题也比较方便直观:

参考:

https://testerhome.com/topics/3773

http://shanhe.me/node/18/314

作者:Glen.He 
出处:http://www.cnblogs.com/puresoul/ 
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/ceshi2016/p/6029508.html

搭建持续集成接口测试平台(Jenkins+Ant+Jmeter)相关推荐

  1. [搬运工系列]-JMeter(二十四)搭建持续集成接口测试平台(Jenkins+Ant+Jmeter)

    一.环境准备: 1.JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.html 2.Jmeter:http://jme ...

  2. 【接口测试】Jenkins+ant+jmeter接口自动化测试及邮件发送

    引言 在前一篇博文里,我介绍了关于Jmeter+ant的接口测试,详见链接Jmeter+ant.本文将在上一个文章基础上,讲解Jenkins的安装及使用(全程Windows环境下).         ...

  3. Jenkins Gitlab持续集成打包平台搭建

    相关概念 Jenkins Jenkins,一个用Java编写的开源的持续集成工具,提供了软件开发的持续集成服务,可监控并触发持续重复的工作,具有开源,支持多平台和插件扩展,安装简单,界面化管理等特点. ...

  4. 使用Jenkins搭建iOS/Android持续集成打包平台

    http://debugtalk.com/post/iOS-Android-Packing-with-Jenkins/ http://debugtalk.com/post/iOS-Android-Pa ...

  5. 基于Jenkins 快速搭建持续集成环境

    2019独角兽企业重金招聘Python工程师标准>>> 持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开 ...

  6. 基于 Jenkins 快速搭建持续集成环境--转

    源地址:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/ 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础 ...

  7. 基于 Jenkins 快速搭建持续集成环境

    持续集成概述 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的问题.尤其是近些年来,敏捷(Agile) 在软件工程领域 ...

  8. Jenkins+Maven+SVN快速搭建持续集成环境

    Jenkins是一个可扩展的持续集成引擎,Jenkins非常易于安装和配置,简单易用,下面看看我们是如何几分钟就快速搭建一个持续集成环境吧. 假设我们目前已经有2个maven项目:entities(J ...

  9. 使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境

    前言 但凡一个略有规模的项目都需要一个持续集成环境的支撑,为什么需要持续集成环境,我们来看一个例子.假如一个项目,由A.B两位程序员来协作开发,A负责前端模块,B负责后端模块,前端依赖后端.A和B都习 ...

最新文章

  1. 美团支付平台产品规划
  2. NPOI 删除指定的行
  3. loewe测试软件,实测Loewe三角包 最轻的小包最贴心的设计
  4. 转载:使用 Frida 来 hook 加固的 Android 应用的 java 层
  5. python批量生成word报告_python自动生成word报告 | 如何将现有的数据利用python 填入word的表格中?...
  6. magento SEO
  7. 先睹为快!第十一届数据技术嘉年华七大看点全揭秘
  8. 华为发布麒麟990系列芯片,余承东评论友商5G芯片:苹果没有 三星PPT
  9. 【java】高并发之限流 RateLimiter使用
  10. PHP tcp短链接,示例:建立TCP链接
  11. Android SDK下载网址
  12. 基于并查集的六度分隔理论的验证与实现
  13. 木纤维(WF)保温材料UKCA认证—EN 13171
  14. python数据收集整理教案_数据收集整理教学设计
  15. 一年半的外包程序员心得体会
  16. 如何解决在线医疗语音问诊的技术难题 | 以眩晕问诊为例
  17. 台式计算机怎么强制关机,台式电脑怎么强制关机
  18. 《深入理解计算机系统》之浅析程序性能优化
  19. 华为鸿蒙os系统怎么更新不了,华为鸿蒙OS系统真的不是PPT!适配机型再更新:多款重磅旗舰可升级...
  20. UNIFI 多wan端口转发设置

热门文章

  1. Java回顾之JDBC
  2. 判别模型和生成模型(Discriminative Model Generative Model)【转】
  3. 访问数组元素的 3 种方法
  4. Vue报错:3 errors and 0 warnings potentially fixable with the `--fix` option.
  5. 音乐陶冶情操,怎样让孩子喜欢音乐?
  6. 保险的现金价值是什么意思?
  7. 发生心梗后,家属做些什么才能保证患者获救,降低死亡?
  8. 卢克沃顿对于湖人作用
  9. 老板应该如何运用人才?
  10. 互联网的逻辑和电商的逻辑是不一样的