ant+jmeter+jenkins接口自动化测试一
【Jmeter篇】jmeter+Ant+Jenkins接口自动化测试集成(一)
一.简介
1、什么是ant?
ant是构建工具,把代码从某个地方拿来,编译,再拷贝到某个地方去等等操作
JMeter+Ant是比较常见的自动化测试框架,因为JMeter、Ant都是由java开发的,所以此性能测试框架具有良好的跨平台性;下图是按自己的理解绘制的自动化框架图:

2、ant的好处
跨平台 --因为ant是使用java实现的,所以它跨平台
使用简单--与ant的兄弟make比起来
语法清晰--同样是和make相比
功能强大--ant能做的事情很多,可能你用了很久,你仍然不知道它能有多少功能。当你自己开发一些ant插件的时候,你会发现它更多的功能。
3、实现过程
(1)Ant通过XML文件进行构建,所有的构建信息配置在build.xml文件中,通过调用target树来执行各种任务;如执行测试脚本(jmx文件),输出测试结果(jtl文件);
(2)Ant通过测试结果(jtl文件)构建生成html测试报告,输出在制定路径下;
(3)根据build.xml文件中配置的邮件信息,将html测试报告自动发送到制定的邮箱;
4、原理
jenkins驱动ant执行,ant驱动jmeter执行
二.配置ant环境
1、去Apache官网上http://ant.apache.org/bindownload.cgi下载ant,我下载的是apach-ant-1.10.7

2、下完之后解压,放到一个目录下面。我把它和jmeter都放在了一个目录下C:\jmeter\apache-ant-1.10.7

3、配置环境变量,与jmeter类似。
新建系统变量ANT_HOME,值C:\jmeter\apache-ant-1.10.7
系统变量CLASSPATH,值后面添加C:\jmeter\apache-ant-1.10.7\lib
系统变量Path,值后面添加C:\jmeter\apache-ant-1.10.7\bin
cmd下,输入ant,结果如下图所示,"build.xml does not exist "说明ant配置成功

三、Jmeter与Ant集成使用
准备环境:jdk1.8.0_60,环境变量的配置;jmeter5.0安装,环境变量的配置;ant1.10.7的安装,环境变量的配置
1、将C:\jmeter\apache-jmeter-5.0\extras文件夹下的ant-jmeter-1.1.1.jar这个jar包复制到C:\jmeter\apache-ant-1.10.7\lib文件夹下

2、打开C:\jmeter\apache-jmeter-5.0\bin\jmeter.properties 将jmeter.save.saveservice.output_format=csv 改成 jmeter.save.saveservice.output_format=xml,记得去掉前面的“#”

3、.jmx脚本放置C:\jmeter\apache-jmeter-5.0\extras下

4、进入C:\jmeter\apache-jmeter-5.0\extras,打开build.xml文件,进行配置
第一处要修改的地方
<!-- Name of test (without .jmx) -->
<property name="test1" value="insight2.0-180720"/>
此处填写你要测试的脚本,后面不用写.jmx,只用写文件名。这里的意思为test1的值为insight2.0-180720,你将要测试的脚本就是insight2.0-180720.jmx
当然property name的也可以取其他的,test、a、b.....等等都可以,简单理解为一个变量名,value就是变量值。
第二处要修改的地方
在<target name = "run"> 下面修改子标签jmeter
<jmeter
jmeterhome="${jmeter.home}"
testplan ="${testpath}/${test1}.jmx"
resultlog="${testpath}/${test1}.jtl">
........
</jmeter>
这里就开始运行jmx脚本了,测试计划testplan的值就是上一处你定义的test1;resultlog就是执行jmx之后生成的日志文件,它会默认保存在extras文件夹下。
第三处要修改的地方
在<target name="xslt-report" depends="_message_xalan">下面修改子标签xslt
<xslt
classpathref="xslt.classpath"
force="true"
in="${testpath}/${test1}.jtl"
out="${testpath}/${test1}.html"
........
</xslt>
这里做的工作是,将jmeter执行之后生成的jtl文件,编译构建成HTML文件,默认保存在extras文件夹下。
仔细看,in等于的就是上一处的rasultlog,out的后缀为html
第四处要修改的地方
我想每执行一次脚本,就生成一个HTML、一个jtl文件,并且文件名能显示每次执行的时间。这里可以联想到时间戳,每次运行结果都生成不一样的文件。
1、定义指定格式的时间变量。可以直接在target name =run下定义
<tstamp>
<format property="time" pattern="yyyy-MM-dd-HH-mm-ss"/>
</tstamp>
2、在jmeter标签下,修改jtl文件的存储路径
<jmeter
jmeterhome="${jmeter.home}"
testplan ="${testpath}/${test1}.jmx"
resultlog="${testpath}/${test1}/${time}.jtl">
...</jmeter>
3、在xslt标签下,修改in、out的路径
<xslt
classpathref="xslt.classpath"
force="true"
in="${testpath}/${test1}/${time}.jtl"
out="${testpath}/${test1}/${time}.html"
.....</xslt>
第五处要修改的地方
build.xml文件无法使用*.jmx执行extras目录下所有的jmx文件,那么如果想每一次想执行多个脚本怎么办呢??目前想到了一个解决办法。大概思路就是,定义多个变量,分别执行。
<!-- Name of test (without .jmx) -->
<property name="test1" value="要执行的脚本1"/>
<property name="test2" value="要执行的脚本2"/>
<property name="test3" value="要执行的脚本3"/>
.........

5、修改完build.xml文件之后,就可以试一下jmeter+ant的集成有没有成功,打开命令提示符,进入到C:\jmeter\apache-jmeter-5.0\extras,在这里输入ant。
最后面显示build successful说明执行成功了!可以进入到extras文件夹下面查看结果,生成了HTML和jtl文件



6、打开html测试报告如下

7、聚合报告打开jtl文件如下

8、build.xml内容如下
<?xml version="1.0" encoding="utf-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<project name="ant-jmeter" default="all">
<description> Sample build file for use with ant-jmeter.jar
See http://www.programmerplanet.org/pages/projects/jmeter-ant-task.php To run a test and create the output report:
ant -Dtest=script To run a test only:
ant -Dtest=script run To run report on existing test output
ant -Dtest=script report The "script" parameter is the name of the script without the .jmx suffix. Additional options:
-Dshow-data=y - include response data in Failure Details
-Dtestpath=xyz - path to test file(s) (default user.dir).
N.B. Ant interprets relative paths against the build file
-Djmeter.home=.. - path to JMeter home directory (defaults to parent of this build file)
-Dreport.title="My Report" - title for html report (default is 'Load Test Results')
</description> <property name="testpath" value="${user.dir}"/>
<property name="jmeter.home" value="${basedir}/.."/>
<property name="report.title" value="Load Test Results"/> <!-- Name of test (without .jmx) -->
<property name="test1" value="insight2.0-180720"/> <!-- Should report include response data for failures? -->
<property name="show-data" value="n"/> <property name="format" value="2.1"/> <condition property="style_version" value="_21">
<equals arg1="${format}" arg2="2.1"/>
</condition> <condition property="funcMode">
<equals arg1="${show-data}" arg2="y"/>
</condition> <condition property="funcMode" value="false">
<not>
<equals arg1="${show-data}" arg2="y"/>
</not>
</condition> <!-- Allow jar to be picked up locally -->
<path id="jmeter.classpath">
<fileset dir="${basedir}">
<include name="ant-jmeter*.jar"/>
</fileset>
</path> <taskdef
name="jmeter"
classpathref="jmeter.classpath"
classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/> <target name="all" depends="run,report"/> <target name="run">
<echo>funcMode = ${funcMode}</echo> <tstamp>
<format property="time" pattern="yyyy-MM-dd-HH-mm-ss"/>
</tstamp> <delete file="${testpath}/${test}.html"/>
<jmeter
jmeterhome="${jmeter.home}"
testplan ="${testpath}/${test1}.jmx"
resultlog="${testpath}/${test1}/${time}.jtl">
<!--
<jvmarg value="-Xincgc"/>
<jvmarg value="-Xmx128m"/>
<jvmarg value="-Dproperty=value"/>
<jmeterarg value="-qextra.properties"/>
-->
<!-- Force suitable defaults -->
<property name="jmeter.save.saveservice.output_format" value="xml"/>
<property name="jmeter.save.saveservice.assertion_results" value="all"/>
<property name="jmeter.save.saveservice.bytes" value="true"/>
<property name="file_format.testlog" value="${format}"/>
<property name="jmeter.save.saveservice.response_data.on_error" value="${funcMode}"/>
</jmeter>
</target> <property name="lib.dir" value="${jmeter.home}/lib"/> <!-- Use xalan copy from JMeter lib directory to ensure consistent processing with Java 1.4+ -->
<path id="xslt.classpath">
<fileset dir="${lib.dir}" includes="xalan*.jar"/>
<fileset dir="${lib.dir}" includes="serializer*.jar"/>
</path> <target name="report" depends="xslt-report,copy-images">
<echo>Report generated at ${report.datestamp}</echo>
</target> <target name="xslt-report" depends="_message_xalan">
<tstamp><format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/></tstamp>
<xslt
classpathref="xslt.classpath"
force="true"
in="${testpath}/${test1}/${time}.jtl"
out="${testpath}/${test1}/${time}.html"
style="${basedir}/jmeter-results-detail-report${style_version}.xsl">
<param name="showData" expression="${show-data}"/>
<param name="titleReport" expression="${report.title}"/>
<param name="dateReport" expression="${report.datestamp}"/>
</xslt>
</target> <!-- Copy report images if needed -->
<target name="copy-images" depends="verify-images" unless="samepath">
<copy file="${basedir}/expand.png" tofile="${testpath}/expand.png"/>
<copy file="${basedir}/collapse.png" tofile="${testpath}/collapse.png"/>
</target> <target name="verify-images">
<condition property="samepath">
<equals arg1="${testpath}" arg2="${basedir}" />
</condition>
</target> <!-- Check that the xalan libraries are present -->
<condition property="xalan.present">
<and>
<!-- No need to check all jars; just check a few -->
<available classpathref="xslt.classpath" classname="org.apache.xalan.processor.TransformerFactoryImpl"/>
<available classpathref="xslt.classpath" classname="org.apache.xml.serializer.ExtendedContentHandler"/>
</and>
</condition> <target name="_message_xalan" unless="xalan.present">
<echo>Cannot find all xalan and/or serialiser jars</echo>
<echo>The XSLT formatting may not work correctly.</echo>
<echo>Check you have xalan and serializer jars in ${lib.dir}</echo>
</target> </project>
本文分享自微信公众号 - 橙子探索测试(chengzitest)
ant+jmeter+jenkins接口自动化测试一的更多相关文章
- ant +jmeter+jenkins接口自动化测试二
[Jmeter篇]Jmeter+Ant+Jenkins接口自动化测试集成之半路逆转(二) 橙子探索测试发表于橙子探索测试订阅 72 [Jmeter篇]jmeter+Ant+Jenkins接口自动化测试 ...
- ant jmeter jenkins 实现自动化测试
编者按: 本文核心的关键是ant去调用build.xml 执行自动化测试任务. bulid.xml 文件的内容按照注释修改为你自己服务器相关信息. 配置完成后一定要手动在服务器上执行一次,确保你配置的 ...
- Jenkins+ant+jmeter搭建接口自动化测试环境
一.jmeter 1.下载jdk并安装配置 2.下载jmeter,并解包 下载地址:http://jmeter.apache.org/download_jmeter.cgi 二.ant 1.下载解包并 ...
- 持续集成实践---基于ant+jmeter+jenkins接口CI
背景: 大纲: jmeter入门教程 jenkins入门教程 ant介绍 jmeter+ant脚本自动执行实践 接口测试CI实践
- Linux+ant+jmeter+Jenkins接口持续集成自动化框架搭建
Linux下安装ant并配置环境变量 1.从http://ant.apache.org 上下载tar.gz版ant 2.复制到/usr下 3.tar -vxzf apache-ant-1.10.1-b ...
- Postman+Newman+Git+Jenkins接口自动化测试
一.Postman 1.创建Collection,在Collection中创建接口请求,如下图所示. 2.编写接口对应的断言Test和Pre-request Script,如下图所示. 3.配置接口 ...
- Jmeter+ant+jenkins接口自动化测试 平台搭建(一)
平台简介 一个完整的接口自动化测试平台需要支持接口的自动执行,自动生成测试报告,以及持续集成.Jmeter 支持接口的测试,Ant 支持自动构建,而 Jenkins 支持持续集成,所以三者组合在一起可 ...
- Jmeter+Ant+Jenkins接口自动化测试框架搭建
前言 软件开发的V模型大家都不陌生,其中测试阶段分为单元测试→功能测试→系统测试→验收测试.其中单元测试一般由开发同学们自己完成,大部分测试具体实施(这里不包括用例设计)是从单体功能测试开始着手的. ...
- jmeter+ant+jenkins接口自动化测试框架
大致思路:Jmeter可以做接口测试,也能做压力测试,而且是开源软件:Ant是基于Java的构建工具,完成脚本执行并收集结果生成报告,可以跨平台,Jenkins是持续集成工具.将这三者结合起来可以搭建 ...
随机推荐
- 前端开发SEO的理解
所谓seo(Search Engine Optimization)即搜索引擎优化.简单说就是百度.谷歌搜索引擎的‘蜘蛛’,如下图: 搜索引擎蜘蛛是通过,连接地址来找到你的网站的,seo就是让你的网站符 ...
- Beta冲刺 —— 总结随笔
这个作业属于哪个课程 软件工程 这个作业要求在哪里 Beta冲刺 这个作业的目标 Beta冲刺 作业正文 正文 github链接 项目地址 其他参考文献 无 一.项目预期计划: 1.对于初版小程序的现 ...
- MethodHandle(方法句柄)系列之三:invoke和invokeExact的区别
先把代码贴上来,用的是一样的代码 /** * * @author LiuYeFeng<897908343@qq.com> * @date 2015年4月8日 下午10:41:13 * @C ...
- Java实现 删数字
删数字 时间限制: 1 Sec 内存限制: 128 MB 题目描述 奶牛在数学课上学习了整除的概念.农夫Farmer John为了考验它的数学水平,于是在白纸上写了正整数T.由于农夫不喜欢数字0,所以 ...
- Java实现 蓝桥杯VIP 算法训练 简单加法
时间限制:1.0s 内存限制:512.0MB 问题描述 首先给出简单加法算式的定义: 如果有一个算式(i)+(i+1)+(i+2),(i>=0),在计算的过程中,没有任何一个数位出现了进位,则称 ...
- java实现取球游戏
/* 今盒子里有 n 个小球,A.B 两人轮流从盒中取球,每个人都可以看到另一个人取了多少个, 也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断. 我们约定: 每个人从盒子中取出的球的 ...
- (一)linux三剑客之grep
给自己提出以下6个问题,看自己是否真正掌握了grep [1] grep 是什么? [2] grep 有什么作用 ? [4] grep 常用于何处 ? [5] grep 的基本用法 ? [6] grep ...
- ModelArts准备工作
说明: 本文是一个ModelArts准备工作文档,适用于初次使用ModelArts的用户.使用ModelArts之前,需要做如下工作:注册华为云账号.完成ModelArts全局配置.以及熟悉OBS相关 ...
- Redis学习笔记(十六) Sentinel(哨兵)(下)
消失了一段时间,我又回来啦.不多说,继续把哨兵看完. 检测主观下线状态 默认情况下,Sentinel会以每秒一次的频率向所有与他创建了命令连接的实例(主从服务器以及其他Sentinel)发送PING命 ...
- React、Vue添加全局的请求进度条(nprogress)
全局的请求进度条,我们可以使用nprogress来实现,效果如下: 首先需要安装插件: npm i nprogress -S 然后使用的时候主要有两种方式,第一种是切换页面的时候,第二种则是请求接口的 ...