【Jenkins+Ant+Jmeter】持续集成接口测试平台搭建

一、环境准备:
1、JDK:Java Downloads | Oracle

2、Jmeter:Apache JMeter - Download Apache JMeter

3、Ant:Apache Ant - Binary Distributions

4、Jenkins:Jenkins

  

二、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 anonymous
 2 Building in workspace D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace
 3 [demo] $ cmd.exe /C '"ant.bat -file build3.xml run && exit %%ERRORLEVEL%%"'
 4 Buildfile: build3.xml
 5 
 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统一管理,这里就不介绍了,感觉的可以自己研究下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/25442.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

云服务器和专用服务器之间的区别

在当今数字化时代&#xff0c;服务器是构建和支持各种应用和服务的基础设施之一。随着技术的发展和需求的增加&#xff0c;出现了不同类型的服务器&#xff0c;其中最常见的是云服务器和专用服务器。本文将详细介绍云服务器和专用服务器之间的区别&#xff0c;以帮助您更好地了…

多线程安全的案例展示与解决方案

一、概念 1. 什么是线程安全 当多个线程访问一个对象时&#xff0c;如果不用考虑这些线程在运行时环境下的调度和交替执行&#xff0c;也不需要进行额外的同步&#xff0c;或者在调用方进行任何其他的协调操作&#xff0c;调用这个对象的行为都可以获得正确的结果&#xff0c…

【Linux】iptables防火墙

文章目录 一、Linux防火墙基础1.Linux防火墙概术2.netfilter/iptables3.四表五链4.规则链之间的匹配顺序 二、iptables 安装1.常用的控制类型2.常用的管理选项 三、示例演示1.添加新的规则2.查看规则列表3.删除规则4.清空规则 四、规则的匹配1.通用匹配2.隐含匹配3.显式匹配 一…

Mybatis generator

文章目录 依赖式使用引入依赖配置文件设置生成使用中出现的异常 Mybatis中javaType和jdbcType对应关系int、bigint、smallint 和 tinyint是使用整数数据的精确数字数据类型。 插件式使用添加依赖和插件创建逆向工程的配置文件执行MBG插件的generate目标执行结果 逆向工程&#…

shell SNAT与DNAT

文章目录 SNATSNAT原理与应用SNAT实验 DNATDNAT原理与应用DNAT实验 SNAT SNAT原理与应用 SNAT 应用环境&#xff1a;局域网主机共享单个公网IP地址接入Internet&#xff08;私有不能早Internet中正常路由&#xff09; SNAT原理&#xff1a;修改数据包的源地址。 SNAT转换前提…

C++进阶 —— lambda表达式(C++11新特性)

目录 一&#xff0c;模板函数sort 二&#xff0c;lambda表达式 一&#xff0c;模板函数sort 在C98中&#xff0c;如对一个数据集合中的元素进行排序&#xff0c;可使用模板函数sort&#xff0c;如元素为自定义类型&#xff0c;需定义排序时的比较规则&#xff1b;随着C的发展…

intel驱动程序和支持助理常见问题:不识别、无法检测等问题解决方法

起因&#xff1a; wifi驱动有点问题&#xff0c;于是想着更新一下官方的驱动&#xff0c;下载intel驱动程序和支持助理并安装完成后&#xff0c;打开成了这个样子&#xff0c;刷新多少次都没有用&#xff0c;就是不识别。 解决方法&#xff1a; 经过一波胡乱操作&#xff0…

【Linux入门】Linux权限及管理

【Linux入门】Linux权限及管理 目录 【Linux入门】Linux权限及管理Linux权限管理文件访问者的分类文件类型和访问权限&#xff08;事物属性&#xff09; 文件权限值的表示方法文件访问权限的相关设置方法目录的权限实现共享目录粘滞位目录权限总结 作者&#xff1a;爱写代码的刚…

算法基础学习笔记——⑫最小生成树\二分图\质数\约数

✨博主&#xff1a;命运之光 ✨专栏&#xff1a;算法基础学习 目录 ✨最小生成树 &#x1f353;朴素Prim &#x1f353;Kruskal算法 ✨二分图 &#x1f353;匈牙利算法 ✨质数 &#x1f353;&#xff08;1&#xff09;质数的判定——试除法 &#x1f353;&#xff08;2&…

(转载)基于遗传算法的多目标优化算法(matlab实现)

1 理论基础 1.1 多目标优化及Pareto最优解 多目标优化问题可以描述如下&#xff1a; 其中&#xff0c;f(x)为待优化的目标函数&#xff1b;x为待优化的变量&#xff1b;Ib和ub分别为变量x的下限和上限约束&#xff1b;Aeq*xbeq为变量x的线性等式约束&#xff1b;A*x≤b为变…

数据库作业

目录 数据库teaching中的表结构和表记录。 问题&#xff1a; 答案&#xff1a; 数据库teaching中的表结构和表记录。 &#xff08;1&#xff09;学生信息表student    #student表结构      create table if not exists student (      studentno char(11) not…

c++ 11标准模板(STL) std::map(六)

定义于头文件<map> template< class Key, class T, class Compare std::less<Key>, class Allocator std::allocator<std::pair<const Key, T> > > class map;(1)namespace pmr { template <class Key, class T, clas…

【Linux驱动】认识驱动(驱动的概念、驱动分类)

目录 1、什么是驱动&#xff1f; 2、应用程序调用驱动基本流程 3、file_operations 结构体 4、驱动的分类 1、什么是驱动&#xff1f; 驱动就是一段程序&#xff0c;能够获取外设或者传感器数据、控制外设。驱动获取到的数据会提交给应用程序。 在 Linux 中一切皆为文件&…

物联网GPRS模块流量计算

物联网GPRS模块流量计算 MQTT(消息队列遥测传输) 是ISO 标准下一个基于TCP/IP的消息发布/订阅传输协议。 一、TCP消耗流量计算 以太网数据包结构&#xff1a; 以太网首部 IP首部 TCP首部 APPL首部 用户数据 以太网尾部 以太网首部为14个字节 IP首部为20个字节 TCP首部…

【CesiumJS入门】(1)创建Viewer及相关配置项

前言 在上一篇博客中&#xff0c;我们直接在vue组件完成初始渲染并创建 DOM 节点后通过 const map new Cesium.Viewer(cesiumContainer)构建了一个地球场景。 而本篇&#xff0c;我们将会专门把地球创建的方法写在一个js文件中&#xff0c;以便后续的调用。 同时&#xff0…

【JavaSE】Java基础语法(三十二):Stream流

文章目录 1. 体验Stream流2. Stream流的常见生成方式3. Stream流中间操作方法【应用】4. Stream流终结操作方法【应用】5. Stream流的收集操作 1. 体验Stream流 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合&#xff0c;存储多个字符串元素把集合中所有以"…

torch_scatter.scatter()的使用方法

学习目标&#xff1a; 在学习PyG时&#xff0c;遇到了 scatter 这个函数&#xff0c;经过学习加上自身的理解&#xff0c;记录如下以备复习 学习内容&#xff1a; src&#xff1a;表示输入的tensor&#xff0c;接下来被处理&#xff1b;index&#xff1a;表示tensor对应的索引…

机器学习 day14 ( 神经网络 )

神经网络的发展 最开始的动机&#xff1a;是通过构建软件来模拟大脑&#xff0c;但今天的神经网络几乎与大脑的学习方式无关 我们依据大脑中的神经网络&#xff0c;来构建人工神经网络模型。左图中&#xff1a;一个神经元可以看作一个处理单元&#xff0c;它有很多的输入/树突…

chatgpt赋能python:Python创建一个Animal类介绍

Python创建一个Animal类介绍 Python是一种高级编程语言&#xff0c;其简单易学、灵活性强、可读性高以及强大的库使得Python非常受欢迎。在Python中创建类非常容易且非常常见&#xff0c;我们可以使用Python创建各种类型的类。今天&#xff0c;我们将讨论如何使用Python创建一…

【时空权衡】

目录 知识框架No.0 时空权衡一、基本思想 No.1 计数排序一、比较计数二、分布计数 No.2 散列法一、开散列&#xff08;分离链&#xff09;二、闭散列&#xff08;开式寻址&#xff09; 知识框架 No.0 时空权衡 一、基本思想 其实时空权衡&#xff1a;是指在算法的设计中&…