qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請?jiān)L問 http://qaseven.github.io/

          Jenkins+Ant+Jmeter自動(dòng)化性能測試平臺(tái)

           Jmeter性能測試的工具,java編寫、開源,小巧方便,可以圖形界面運(yùn)行也可以在命令行下運(yùn)行。網(wǎng)上已經(jīng)有人使用ant來運(yùn)行,,既然可以使用ant運(yùn)行,那和hudson、jenkins集成就很方便了,而且jenkins上也有相應(yīng)的插件Performance Plugin,可以自動(dòng)收集jmeter的測試結(jié)果,展示出來。
            首先去下載jmeter,在2.8版本中測試通過,2.9版本測試未通過。下載ant-jmeter-1.1.1.jar放在jmeter主目錄lib文件夾下。
            下載需要的ant包,包含配置文件和一些jar包。里面的build.xml是配置文件,可以自定義。需要修改其中jmeter路徑,然后直接ant運(yùn)行即可。 
          <?xml version="1.0" encoding="utf-8"?>
          <project default="all">
          <!-- Define your Jmeter Home & Your Report Title & Interval Time Between Test-->
          <property name="report.title" value="WebLoad Test Report"/>
          <property name="jmeter-home" location="D:\work\apache-jmeter-2.8" />
          <property name = "interval-time-in-seconds" value ="10"/>
          <!-- default path config, you can modify for your own requirement;Generally, you do not need to modify -->
          <property environment="env" />
          <property name="runremote" value="false"/>
          <property name="resultBase" value="results"/>
          <property name="results.jtl" value="jtl"/>
          <property name="results.html" value ="html"/>
          <property name="jmxs.dir"  value= "jmxs"/>
          <tstamp><format property="report.datestamp" pattern="yyyy-MM-dd-HH-mm-ss"/></tstamp>
          <property name="time" value="${report.datestamp}"/>
          <!--  Diffrent version of Jmeter has its own ant-jmeter.jar,Please input the right versioin -->
          <path id="ant.jmeter.classpath">
          <pathelement location="${jmeter-home}/lib/ant-jmeter-1.1.1.jar" />
          </path>
          <taskdef name="jmeter"
          classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"
          classpathref="ant.jmeter.classpath" />
          <!-- just to support foreach by ant -->
          <taskdef resource="net/sf/antcontrib/antcontrib.properties" >
          <classpath>
          <pathelement location="./libs/ant-contrib-20020829.jar" />
          </classpath>
          </taskdef>
          <!-- use this config to generate html report; if not, may not display Min/Max Time in html-->
          <path id="xslt.classpath">
          <fileset dir="./libs" includes="xalan-2.7.1.jar"/>
          <fileset dir="./libs" includes="serializer-2.9.1.jar"/>
          </path>
          <!--運(yùn)行之前首先創(chuàng)建臨時(shí)結(jié)果文件夾-->
          <target name="create-folder">
          <delete dir="${resultBase}/temp"/>
          <mkdir dir="${resultBase}/temp/${results.jtl}" />
          <mkdir dir="${resultBase}/temp/${results.html}" />
          </target>
          <target name="all-test" depends="create-folder">
          <foreach  param="jmxfile" target="test" >
          <fileset dir="${jmxs.dir}">
          <include name="*.jmx" />
          </fileset>
          </foreach>
          </target>
          <target name="test" >
          <basename property="jmx.filename" file="${jmxfile}" suffix=".jmx"/>
          <echo message="---------- Processing ${jmxfile} -----------"/>
          <echo message="resultlogdir===${resultBase}/temp/${results.jtl}"/>
          <jmeter jmeterhome="${jmeter-home}" resultlogdir="${resultBase}/temp/${results.jtl}" runremote="${runremote}" resultlog="${jmx.filename}.jtl"
          testplan="${jmxs.dir}/${jmx.filename}.jmx">
          <jvmarg value="-Xincgc"/>
          <jvmarg value="-Xms1024m"/>
          <jvmarg value="-Xm1024m"/>
          </jmeter>
          <sleep seconds="20"></sleep>
          <!--Generate html report-->
          <xslt   in="${resultBase}/temp/${results.jtl}/${jmx.filename}.jtl"
          out="${resultBase}/temp/${results.html}/${jmx.filename}.html"  classpathref="xslt.classpath"
          style="${jmeter-home}/extras/jmeter-results-report_21.xsl" >
          <param name="dateReport" expression="${report.datestamp}"/>
          <param name="showData" expression="n"/>
          <param name="titleReport" expression="${report.title}:[${jmx.filename}]"/>
          </xslt>
          <echo message="Sleep ${interval-time-in-seconds} Seconds, and then start next Test; Please waiting ......"/>
          <sleep seconds="${interval-time-in-seconds}"></sleep>
          </target>
          <target name="copy-images" depends="all-test">
          <copy file="${jmeter-home}/extras/expand.png" tofile="${results.html}/expand.png"/>
          <copy file="${jmeter-home}/extras/collapse.png" tofile="${results.html}/collapse.png"/>
          <copydir src="${resultBase}/temp" dest="${resultBase}/${report.datestamp}"/>
          <delete dir="${resultBase}/temp"/>
          </target>
          <target name="all" depends="all-test, copy-images" />
          </project>
            jmxs文件夾存放jmeter腳本,ant會(huì)順序執(zhí)行其中的腳本,執(zhí)行結(jié)果會(huì)放在results文件夾中,包含統(tǒng)計(jì)的html文件和jmeter的請求詳細(xì)jtl文件。
            最后和jenkins集成,搭建jenkins環(huán)境,安裝Performance Plugin插件,新建一個(gè)job,選擇目標(biāo)機(jī)器(機(jī)器上要有ant),填好svn或者cvs、定時(shí)執(zhí)行、構(gòu)建命令等。在Add post-build action中可以添加一個(gè)Publish Performance test result report用來收集jmeter測試結(jié)果,選擇就meter,然后在Report files中填寫**/*.jtl即可。

          posted on 2014-11-26 14:22 順其自然EVO 閱讀(2169) 評(píng)論(0)  編輯  收藏 所屬分類: 測試學(xué)習(xí)專欄性能測試

          <2014年11月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 花莲县| 嘉定区| 齐齐哈尔市| 正阳县| 金溪县| 高陵县| 凤城市| 奉新县| 息烽县| 仁寿县| 治多县| 察哈| 会东县| 本溪| 博野县| 江华| 白河县| 巴中市| 湖北省| 安庆市| 丰台区| 富蕴县| 昌邑市| 科尔| 台江县| 柳河县| 刚察县| 乐清市| 秦安县| 忻州市| 鹤山市| 淳化县| 本溪| 宜黄县| 岗巴县| 运城市| 乳山市| 永川市| 江门市| 永兴县| 淮北市|