`
zfy421
  • 浏览: 233630 次
社区版块
存档分类
最新评论

基于ant的jmeter自动化性能测试

阅读更多

准备工作:

1.java的运行环境正常,及运行java -version、javac -version能正常输出java版本;

2.ant的运行环境正常,使用ant需要配置环境变量,编辑/etc/profile,在结尾处添加:

export ANT_HOME="/export/servers/ant"

 

export PATH="/export/servers/ant/bin":$PATH

保存退出后,执行命令source /etc/profile使环境变量即可生效。

3.将JMeter所在目录下extras子目录里的ant-JMeter-1.1.1.jar复制到Ant所在目录lib子目录之下,这样Ant运行时才能找到"org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"这个类,从而成功触发JMeter脚本

配置build.xml:

将本猿编写的jmetertool.tar.gz上传到服务器并解压,编辑其中的build.xml:

 

<project name="autotest" default="all" basedir=".">   
        <!-- 需要改成自己本地的 Jmeter 目录-->
        <property name="jmeter.home" value="/export/servers/jmeter"/>
        <!-- jmeter生成jtl格式的结果报告的路径-->
        <property name="jmeter.result.jtl.dir" value="${basedir}/jtl" />
        <!-- jmeter生成html格式的结果报告的路径-->
        <property name="jmeter.result.html.dir" value="${basedir}/html" />
        <!-- jmeter生成csv格式的结果报告的路径-->
        <property name="jmeter.result.csv.dir" value="${basedir}/csv" />
        <!-- 编译后class文件目录 -->
        <property name="classes" value="${basedir}/classes"/>
        <!-- 生成的报告的前缀-->
        <property name="ReportName" value="TestTomNgx"/>
        <!-- 参数-->
        <property name="threads1" value="5" />
        <property name="threads2" value="5" />

 修改其中的jmeter目录一定要修改成你本地所在的目录,根据需要修改ReportName以及线程数。

 

 

<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl"><testplans dir="${basedir}" includes="test.jmx"/>

 上传被测的jmx文件到当前目录,并修改build.xml中的jmx文件名。

 

为了能够动态修改压测的线程数,我们使用vi命令打开被测的jmx文件:

 

<stringProp name="ThreadGroup.num_threads">${__P(request.threads1)}</stringProp>

 将线程数设置项改为该参数,名字与build.xml中的对应即可。

 

 

<jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl">
                <testplans dir="${basedir}" includes="testbaidu.jmx"/>
                <property name="jmeter.save.saveservice.output_format" value="csv"/>
             <property name="jmeter.save.saveservice.response_message" value="false" />
                <jvmarg value="-Xincgc"/>
                <jvmarg value="-Xms1024m"/>
                <jvmarg value="-Xmx1024m"/>
                <property name="request.threads1" value="${threads1}"/>
                <property name="request.threads2" value="${threads2}"/>

参数 ${threads1}、${threads2}当前默认值是5个线程,可自行修改。

 

开始压测:

做完上面的工作,运行命令ant或者ant -Dthreads=8 -Dthreads=3即可,会自动启动jmeter进行压测,jmeter运行完毕后,会自动执行将生成的jtl文件分析为csv文件的工作,执行完毕后会有类似如下输出:



 同时当前目录会自动创建jtl、html、csv三个文件夹:



 

查看结果:

那么问题来了,我们怎么查看压测的结果呢?很简单,在当前机器上配置一个tomcat,将当前的目录(我的是/export/servers/jmeter/script)配置为tomcat的虚拟目录(注意不要配置到html文件夹,而应该配置到html的上一层,否则style里的js无法加载),在tomcat的web.xml中找到

<init-param>
            <param-name>listings</param-name>
            <param-value>true</param-value>
</init-param>

设置为true以开启目录浏览功能。好了,我们访问该tomcat即可,http://ip:port/html。



 每执行一次测试,都会自动建立一个文件夹,点进相应的文件夹,有几个接口就会html,点击相应的html我们就可以看到图表方式的TPS、响应时间等。



 

 

批量定时运行:

使用linux的crontab命令即可,crontab -e 每行添加一条ant命令例如:

30 1 11 * * ant -Dthreads1=8 Dthreads2=6

30 2 11 * * ant -Dthreads1=16 Dthreads2=12

或者使用at命令也很方便,从此再也不用因为加班到很晚而得罪老婆大人了,第二天早上来打开浏览器看结果就行。

 

如果需要多机负载的话,在<jmeter jmeterhome="${jmeter.home}" runremote="true" resultlog="${jmeter.result.jtl.dir}/${ReportNam

e}${time}.jtl">

然后修改jmeter/bin目录下的jmeter.propties即可

 

PS:如果运行到convert2csv这个步骤报数组越界错误,则需要去看看你生成的jtl文件第一行是不是加上了标题,如果有则删掉第一行标题即可。第二如果生成的图表没有任何数据,则去看看你的jtl第七列是不是代表请求是否成功的true or false,如果不是那要么去修改jmeter.properties的生成jtl的列选项,要么修改源码中的列数,在ant compile就好了。

  • 大小: 51 KB
  • 大小: 20.6 KB
  • 大小: 19.4 KB
  • 大小: 66.5 KB
  • 大小: 54.9 KB
4
0
分享到:
评论
19 楼 爱在梦幻谷 2017-09-28  
二咻_win 写道
TPS和响应时间的平均值怎么看呢?

虚线就是平均值
18 楼 爱在梦幻谷 2017-09-25  
无意间看到你的项目,很赞,利用一个周末的时间在你的基础上做了一些改动,能够支持多JMeter脚本性能测试。性能测试报告上可以进一步优化。
17 楼 二咻_win 2017-05-26  
TPS和响应时间的平均值怎么看呢?
16 楼 286090326 2017-03-25  
jmetertool.tar.gz你写的这个在哪里下载?链接没有了
liuxinmiao2010 写道
下载后的文件打开是空的,是否能提供一个zip文件下载呢?

15 楼 maoshuai01 2016-11-08  
非常感谢,已经搭建好。
14 楼 ceekay_ 2016-09-03  
alike222 写道
你好:

  我跑出来的HTML的结果显示空白,可以帮忙看看原因吗?生成了CSV文件如下:
Elapsed time Test(success) Test
0:00:00              175 557.04
0:00:01              249 76.92
0:00:02              19         29.32
0:00:03              48         31.6
0:00:04              9         31.56

生成的HTML文件如下:
<html>
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="../../style/jquery.min.js"></script>
<script type="text/javascript" src="../../style/echarts-all.js" charset="utf-8"></script>
<script type="text/javascript" src="../../style/csvutil.js"></script>
<style type="text/css">
table{ background-color:#fff;line-height:25px;}
th{ border:1px solid #aaa}
td{  text-align:center;border:1px solid #aaa}
tr:hover{ background-color:#aaa}
</style>
</head>
<body>
<input type="hidden" value="/TestTomNgx201603101644" id="parent_path">
<input type="hidden" value="Test.csv" id="file_name">
<div id="tpschart" style="height:400px;"></div>
<hr/>
<div id="rptchart" style="height:400px;"></div>
</body>
</html>


http://localhost:8080/test/html/TestTomNgx201603101644/Test.html
Apache环境搭建了,就是不显示曲线图,希望大神帮忙看看。多谢了

你的结局的我跟你一样,HTML只显示一条横线,没数据
13 楼 ceekay_ 2016-09-03  
我生成的HTML只是一条横线,啥都没有
12 楼 ceekay_ 2016-09-03  
那三个JAVA类放哪儿?
11 楼 zfy421 2016-08-05  
hu_tong2011 写道
你好,方便给一下源码学习一下么?谢谢。qq:846728752


源代码已上传,下载后重命名后缀为.tar.gz即可正常打开
10 楼 strarboy 2016-06-25  
在mac上,发现fireox浏览器显示不了,但是safari是没有问题的。



9 楼 hu_tong2011 2016-05-25  
你好,方便给一下源码学习一下么?谢谢。qq:846728752
8 楼 xxhlzd 2016-04-15  
你好,我跑出来的没有csv文件生成,导致produce-html时空指针,这个怎么解决啊!
zfy_convert2csv 这一步完成了,但是没有打印出move这个动作
7 楼 fojian 2016-04-07  
顶!!要是能增加TP99和TP999报告就完美了  
6 楼 alike222 2016-03-11  
avocado 写道
非常赞,已根据你的指引搭好了自己的项目,非常非常感谢提供工具和指引

你好,我跑出来的HTML是空白,不知道你之前遇到过没,希望能提供指导,感谢。
5 楼 alike222 2016-03-11  
你好:

  我跑出来的HTML的结果显示空白,可以帮忙看看原因吗?生成了CSV文件如下:
Elapsed time Test(success) Test
0:00:00              175 557.04
0:00:01              249 76.92
0:00:02              19         29.32
0:00:03              48         31.6
0:00:04              9         31.56

生成的HTML文件如下:
<html>
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script type="text/javascript" src="../../style/jquery.min.js"></script>
<script type="text/javascript" src="../../style/echarts-all.js" charset="utf-8"></script>
<script type="text/javascript" src="../../style/csvutil.js"></script>
<style type="text/css">
table{ background-color:#fff;line-height:25px;}
th{ border:1px solid #aaa}
td{  text-align:center;border:1px solid #aaa}
tr:hover{ background-color:#aaa}
</style>
</head>
<body>
<input type="hidden" value="/TestTomNgx201603101644" id="parent_path">
<input type="hidden" value="Test.csv" id="file_name">
<div id="tpschart" style="height:400px;"></div>
<hr/>
<div id="rptchart" style="height:400px;"></div>
</body>
</html>


http://localhost:8080/test/html/TestTomNgx201603101644/Test.html
Apache环境搭建了,就是不显示曲线图,希望大神帮忙看看。多谢了
4 楼 alike222 2015-11-10  
jtl\TestTomNgx201511102231.jtl (系统找不到指定的文件。)
一直提示这个

上传被测的jmx文件到当前目录,并修改build.xml中的jmx文件名。
这个我改了的,参数也设置了,找不到原因在哪
3 楼 avocado 2015-04-22  
非常赞,已根据你的指引搭好了自己的项目,非常非常感谢提供工具和指引
2 楼 zfy421 2015-03-16  
liuxinmiao2010 写道
下载后的文件打开是空的,是否能提供一个zip文件下载呢?

将下载的文件夹重命名下,后缀名该为.tar.gz,就可以正常打开了
1 楼 liuxinmiao2010 2015-03-13  
下载后的文件打开是空的,是否能提供一个zip文件下载呢?

相关推荐

    jenkins+ant+jmeter自动化接口测试框架搭建

    总结来说,搭建Jenkins+Ant+JMeter自动化接口测试框架涉及到软件工具的安装配置、环境变量的设置、测试脚本的编写和执行、以及自动构建和测试流程的管理。这个过程不仅需要掌握各个工具的使用方法,还需要有一定的...

    性能自动化测试(基于jmeter+jenkins+ant+tomcat)

    基于【jmeter+jenkins+ant+tomcat】的自动化测试框架可以帮助我们高效地进行性能测试。 **JMeter** 是一个开源的、跨平台的性能测试工具,专门用于测试Web应用性能和负载。它可以模拟多个用户并发访问服务,从而...

    基于Jmeter+Ant+SVN+Jenkins实现接口自动化测试

    本话题将详细介绍如何利用JMeter、Ant、SVN和Jenkins这四款工具来构建一个完整的接口自动化测试流程。 首先,Apache JMeter是一款强大的性能测试工具,它主要用于测试Web应用,包括接口测试。通过JMeter,我们可以...

    ant jmeter接口自动化--数据驱动

    【接口自动化测试】基于Ant和JMeter的数据驱动测试框架 接口自动化测试是现代软件开发中的重要环节,它能有效确保API的功能正确性、性能稳定性和数据一致性。在本场景中,我们将利用Apache Ant构建自动化测试框架,...

    jmeter+ant+Jenkins搭建接口自动化测试

    ### jmeter+ant+Jenkins搭建接口自动化测试 #### 一、JMeter介绍与配置 JMeter是一款开源的性能测试工具,主要用于Web应用的负载测试和功能测试。它支持多种协议,包括HTTP、HTTPS、FTP等,并且可以用于测试静态和...

    6.Jmeter+Ant+Jenkins接口自动化测试平台.pdf

    集成Jmeter、Ant和Jenkins的自动化接口测试平台是指通过将Jmeter、Ant和Jenkins三个工具集成在一起,实现自动化的接口测试、报告生成和持续集成的平台。这种平台可以自动执行测试,自动生成报告,并且实现持续集成。...

    ant持续集成插件安装包(ant+jmeter)

    标题"ant持续集成插件安装包(ant+jmeter)"表明这是一个包含Ant和JMeter的集成解决方案,可能用于自动化构建和性能测试的持续集成流程。这个安装包可能是为了简化这两个工具的配置和集成,让开发者能够快速搭建起一...

    ant-jmeter-1.0.9.jar.zip

    这意味着你可以直接在Ant的构建脚本中编写JMeter测试计划,从而实现自动化性能测试。这个版本(1.0.9)可能包含了一些特定的改进和修复,以适应当时的开发环境。 使用ant-jmeter-1.0.9.jar,开发者可以将JMeter测试...

    JMeter:基于JMeter的性能自动化测试框架完美版

    欢迎查阅Apache JMeter(性能自动化测试框架体系) Apache JMeter JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测 试但后来扩展到其他测试领域 • 可用于压力...

    搭建Jenkins+Jmeter+Ant自动化集成环境(修订2210202).docx

    通过以上步骤,你就构建了一个基于Jenkins、JMeter和Ant的自动化集成环境,能够自动执行性能测试并生成测试报告,这对于持续集成和持续交付过程中的质量保证至关重要。记得在实际环境中根据需求调整各个工具的版本和...

    centos7下搭建Jenkins+ant+jmeter环境

    在本文中,我们将深入探讨如何在CentOS 7.4操作系统上搭建Jenkins、Ant和JMeter的环境,实现持续集成接口测试。首先,我们来理解这三个关键组件的作用: 1. **CentOS 7.4**:这是一个基于RHEL(Red Hat Enterprise ...

    基于JMeter、Ant和WeTest的佣金管理系统接口自动化测试程序开发.pdf

    本文档介绍了一种基于JMeter、Ant和WeTest的佣金管理系统接口自动化测试程序开发方法,旨在通过自动化手段提高对佣金管理系统的测试效率。 首先,文档提到了佣金管理系统的背景。这是一个采用微服务结构设计的保险...

    Jmeter+Ant+Jenkins接口自动化测试平台

    【Jmeter+Ant+Jenkins接口自动化测试平台】 在IT行业中,接口自动化测试是软件质量保障的重要环节,尤其是在大规模分布式系统中。本文将详细介绍如何利用JMeter、Ant和Jenkins构建一个高效的接口自动化测试平台,以...

    基于JMeter、Ant和WeTest的佣金管理系统接口自动化测试程序开发.rar

    本压缩包文件"基于JMeter、Ant和WeTest的佣金管理系统接口自动化测试程序开发"提供了一种有效的解决方案,利用这三种工具进行高效的测试。 首先,JMeter是Apache组织开发的一款开源性能测试工具,主要用于测试Web...

    Jmeter+ant实现测试报告build.xml和报告模板jmeter-results-newreport.xsl

    JMeter和Ant是两个非常流行的开源工具,分别用于性能测试和构建自动化。本文将深入探讨如何利用这两个工具来实现接口自动化测试,以及如何自定义测试报告。 首先,JMeter(Apache JMeter)是一款强大的性能测试工具...

    一步一步教您如何搭建ant+jenkins+jmeter自动化接口测试框架(持续集成篇)

    本篇文章将指导你如何构建一个基于Ant、Jenkins和JMeter的自动化接口测试框架,实现持续集成。 **1. 安装与配置Ant** Ant是Apache基金会的一个项目,是一个Java构建工具,用于自动化构建、编译、测试和部署Java项目...

    jmeter接口自动化持续集成环境搭建

    Apache JMeter是一款强大的性能测试工具,尤其适合进行接口自动化测试。本文将详细介绍如何利用JMeter、Ant和Jenkins来搭建一个自动化的接口测试环境,实现一键构建和发送测试报告。 ### 1. JMeter介绍 Apache ...

Global site tag (gtag.js) - Google Analytics