[jmeter]linux下自动测试环境+持续集成ant+jmeter+Apache(httpd)环境搭建与使用

前言:考虑搭建一个接口性能自动化测试平台,时间又比较紧急,所以就现想到了用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

      3、配置ServerName:# vi /etc/httpd/conf/httpd.conf
      a:里面需要注意的是“DocumentRoot”是Apache默认将网站的根目录,也就是读取报告的路径,后面会用到,需要注意;
      b:“Listen” 后面跟的是端口,如果端口冲突需要修改,并且在访问时带上用该出配置的端口;   
         c:“ServerAdmin root@localhost”这里是访问的域名,如果有自己域名可以修改localhost,我这里选择了默认,即IP访问。 
    4 启动:#service httpd start
    5 停止:#service httpd stop
    6 查看状态:# service httpd status
    7 设置开机自动启动:chkconfig httpd on
    8 安装目录介绍
      默认的主配置文件是/etc/httpd/conf/httpd.conf
      配置存储在的/etc/httpd/conf.d/目录
  • 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子目录下,再次执行,成功!

 

 

posted @ 2017-08-04 15:12  Amberly  阅读(537)  评论(2编辑  收藏  举报