欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-03 18:17:46
...

准备工作:

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文件的工作,执行完毕后会有类似如下输出:


基于ant的jmeter自动化性能测试
            
    
    博客分类: 性能测试 antjmeter集成性能测试build.xml 
 同时当前目录会自动创建jtl、html、csv三个文件夹:


基于ant的jmeter自动化性能测试
            
    
    博客分类: 性能测试 antjmeter集成性能测试build.xml 
 

查看结果:

那么问题来了,我们怎么查看压测的结果呢?很简单,在当前机器上配置一个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。


基于ant的jmeter自动化性能测试
            
    
    博客分类: 性能测试 antjmeter集成性能测试build.xml 
 每执行一次测试,都会自动建立一个文件夹,点进相应的文件夹,有几个接口就会html,点击相应的html我们就可以看到图表方式的TPS、响应时间等。


基于ant的jmeter自动化性能测试
            
    
    博客分类: 性能测试 antjmeter集成性能测试build.xml 
 
基于ant的jmeter自动化性能测试
            
    
    博客分类: 性能测试 antjmeter集成性能测试build.xml 
 

批量定时运行:

使用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就好了。

  • 基于ant的jmeter自动化性能测试
            
    
    博客分类: 性能测试 antjmeter集成性能测试build.xml 
  • 大小: 51 KB
  • 基于ant的jmeter自动化性能测试
            
    
    博客分类: 性能测试 antjmeter集成性能测试build.xml 
  • 大小: 20.6 KB
  • 基于ant的jmeter自动化性能测试
            
    
    博客分类: 性能测试 antjmeter集成性能测试build.xml 
  • 大小: 19.4 KB
  • 基于ant的jmeter自动化性能测试
            
    
    博客分类: 性能测试 antjmeter集成性能测试build.xml 
  • 大小: 66.5 KB
  • 基于ant的jmeter自动化性能测试
            
    
    博客分类: 性能测试 antjmeter集成性能测试build.xml 
  • 大小: 54.9 KB