前言:考虑搭建一个接口性能自动化测试平台,时间又比较紧急,所以就现想到了用jenkins+ant+jmeter完成,考虑到在linux环境中本身就可以设置定时任务,暂时该自动化用例还不与项目集成关联,所以先完成ant+jmeter+Apache(httpd)的搭建,这里Apache是为了方便报告读取。
一、环境准备
-
Apache服务安装:
linux环境中,最好用的安装软件命令,当然是yum莫属(如果其他环境,例如ubuntu请自行用wget)
1、查看httpd包是否可用:# yum list | grep httpd
2、安装Apache:# yum install httpd
-
ant安装:
下载路径:http://ant.apache.org/bindownload.cgi,界面“Current Release of Ant”目录下找到最新版本即可,这里我用的是apache-ant-1.10.1-bin.zip,下载下来后养成好习惯,MD5校验一下,防止安装包损坏。
安装步骤:
1、上传安装包到linux服务器,并解压安装包,用uzip命令即可;
2、到文件夹目录,将解压后的文件夹挪到opt目录下(根据自己的需求):mv apache-ant-1.10.1 ./opt/
3、配置环境变量:sudo vim /etc/profile,并增加如下设置
export ANT_HOME="/opt/apache-ant-1.10.1" -------这个路径是你安装包路径,请根据实际情况修改
export PATH="${ANT_HOME}/bin":$PATH
4、使配置生效:source /etc/profile
5、安装完成验证:#ant -version
如果显示命令不存在,请查看环境变量是否正确即可。
-
jmeter安装:
下载路径:http://jmeter.apache.org/download_jmeter.cgi,界面“Binaries”目录下找到最新版本即可,这里我用的是apache-jmeter-3.2.tgz,下载下来后养成好习惯,MD5校验一下,防止安装包损坏。
安装步骤:
1、上传安装包到linux服务器,并解压安装包,用tar -xzvf 命令即可;
2、到文件夹目录,将解压后的文件夹挪到opt目录下(根据自己的需求):mv apache-jmeter-3.2 ./opt/
3、配置环境变量:sudo vim /etc/profile,并增加如下设置
export JMETER="/opt/apache-jmeter-3.2" -------这个路径是你安装包路径,请根据实际情况修改
export CLASSPATH=${JMETER}/lib/ext/ApacheJMeter_core.jar:${JMETER}/lib/jorphan.jar:$JMETER/lib/logkit-2.0.jar:${CLASSPATH}
export PATH=${JMETER}/bin/:${PATH}
4、使配置生效:source /etc/profile
5、安装完成验证:#jmeter -v
如果显示命令不存在,请查看环境变量是否正确即可。
二、报告配置
1、jmeter报告的界面配置文件:/opt/apache-jmeter-3.2/extras/目录下jmeter-results-detail-report_21.xsl和jmeter-results-report_21.xsl
2、报告路径展示等配置文件,可以自行配置,我配置在了testplan里面/opt/apache-jmeter-3.2/testplan/build.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 <!-- 需要改成自己本地的jmeter目录--> 8 <property name="jmeter.home" value="/opt/apache-jmeter-3.2/"/> 9 <!-- jmeter生成的jtl格式的结果报告的路径--> 10 <property name="jmeter.result.jtl.dir" value="/opt/apache-jmeter-3.2/testplan/report/jti" /> 11 <!-- jmeter生成的html格式的结果报告的路径--> 12 <property name="jmeter.result.html.dir" value="/var/www/html/report/" /> 13 <!-- ʺ生成的报告的前缀--> 14 <property name="ReportName" value="TestReport" /> 15 <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}${time}.jtl" /> 16 <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}${time}.html" /> 17 18 <target name="run"> 19 <antcall target="test" /> 20 <antcall target="report" /> 21 </target> 22 23 <target name="test"> 24 <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /> 25 <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> 26 <!-- 声明要运行的脚本“*.jmx”指包含此目录下的所有jmeter脚本--> 27 <testplans dir="/opt/apache-jmeter-3.2/testplan/" includes="*.jmx" /> 28 29 <property name="jmeter.save.saveservice.output_format" value="xml"/> 30 31 </jmeter> 32 </target> 33 <path id="xslt.classpath"> 34 <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/> 35 <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/> 36 </path> 37 38 <target name="report"> 39 <tstamp> 40 <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /> 41 </tstamp> 42 <xslt 43 classpathref="xslt.classpath" 44 force="true" 45 in="${jmeter.result.jtlName}" 46 out="${jmeter.result.htmlName}" 47 style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"> 48 <param name="dateReport" expression="${report.datestamp}"/> 49 </xslt> 50 <!-- 拷贝报告所需的图片资源至目标目录 --> 51 <copy todir="${jmeter.result.html.dir}"> 52 <fileset dir="${jmeter.home}/extras"> 53 <include name="collapse.png" /> 54 <include name="expand.png" /> 55 </fileset> 56 </copy> 57 </target> 58 </project>
三、简单验证
1、执行测试计划:
进入testplan目录,将测试计划传入,执行ant命令即可(标红的是报告名称)
2、查看报告:http://[服务器IP]:[端口]/report/[报告名称].html
page下面那个后面+ 点开是每个请求详情。具体报告还需要优化,待续
四、问题处理
1、执行ant命令之后,报错taskdef class org.programmerplanet.ant.taskdefs.jmeter.JMeterTask cannot be found
解决方案:将JMeter所在目录下的extras子目录里面的ant-JMeter-1.1.1.jar复制到Ant所在目录lib子目录下,再次执行,成功!