zoukankan      html  css  js  c++  java
  • Jmeter (三十)jmeter+ant+jenkins持续集成

    性能测试自动化环境搭建教程

      所需软件清单:

      

      ===========================================================================

      软件    下载地址

      JDK     http://www.oracle.com/technetwork/java/javase/downloads/index.html

      Jmeter   https://archive.apache.org/dist/jmeter/binaries/

      Ant      http://archive.apache.org/dist/ant/binaries/

      Jenkins    https://jenkins.io/download/

      ===========================================================================

    安装步骤:

      安装Jmeter、JDK前面章节有,这里不赘述...

      安装Jenkins:

        

        

        

        

      解锁 Jenkins

      http://localhost:8080/login?from=%2F

       

      

      

      

    安装插件:

      

      

    设置管理员:

      

      

      

      

    安装Ant:

      解压软件:

      

       

      设置环境变量

      设置环境变量 ANT_HOME: D: oolapache-ant-1.9.7

      

      设置环境变量 PATH: D: oolapache-ant-1.9.7in

       

    验证安装:

      

     ANT 与 Jmeter集成配置:

      修改 Jmeter 默认保存配置

      修改文件 D: oolapache-jmeter-3.1injmeter.properties

      添加:jmeter.save.saveservice.output_format=xml

      将 D: oolapache-jmeter-3.1extrasant-jmeter-1.1.1.jar 拷贝 D: oolapache-ant-1.9.7lib 目录下

      

      

     验证 ant 集成 jmeter

      在 D: oolapache-jmeter-3.1extras 目录下打开 CMD,运行"ant.bat -file build.xml Dtest=Test" . 查看 D: oolapache-jmeter-3.1extras 目录下是否出现 Test.jtl、Test.html 文件,若有,则构建成功。注意:Test.jmx 是默认存在的 Sample 脚本文件。

      若构建失败,请分析 cmd 打印的日志消息,定位问题;

    安装 Jmeter 插件

      Jmeter 插件的安装。解压 JMeterPlugins-Extras-1.1.2.zip、JMeterPlugins-Standard-1.1.2.zip,

      ServerAgent-2.2.1.zip 将对应 ext 目录下的文件 jar 文件拷贝到 D: oolapache-jmeter-

      3.1libext 目录下,将 ReportGen.jar、jmeter-plugins-manager-0.11.jar 拷贝到 D: oolapachejmeter-3.1libext 目录下

       

      

      

      

      新建工作空间工作空间目录结构为:

      

     安装Jenkins插件:

      

      

      安装插件: HTML Publisher plugin

       

      

    Jenkins配置任务:

      新建任务:

      

      

       丢弃旧的构建:

      

      

      参数化构建:

      

      result.home: E:JENKINSTESTReport

      

       build.home: E:JENKINSTEST

      

      

      ReportName: PerfmanceTestingReport

      

      Threads:1

      

      Duration:60

      

      jmeter.home: D: oolapache-jmeter-3.1

      

       ant.home:D: oolapache-ant-1.9.7

      

     构建:

      

      

      

      cd /d  %ANT_HOME%in

      ant -f %build.home%uild.xml  -Dresult.home=%result.home% -Dbuild.home=%build.home%

      -Dtime=%BUILD_ID%         -DReportName=%ReportName%          -Dthreads=%threads%          -

      Dduration=%duration%                        -DPerMonhome=%result.home%/%BUILD_ID%   DbuildId=%BUILD_ID% -DjobName=%JOB_NAME%

    构建后操作:

      

      

      

      HTML directory to archive:${result.home}/${BUILD_ID}/png/

      Index page[s]:AggregateReport.png

      Index page title[s] (Optional):聚合报告

      Report title:聚合报告

      

      

      HTML directory to archive:${result.home}/${BUILD_ID}/png/

      Index page[s]:test_CpuMem.png

      

     监控被测服务器:

      将 ServerAgent-2.2.1.zip 上传至被压测服务器

       

      

    启动监控:

      

     Jmeter脚本配置:

      线程组配置:

      线程数:${__P(request.threads,1)} 持续时间:${__P(request.duration,300)}

       

      

    监控服务器配置: 

      配置监控服务器 IP、端口、资源

      写入文件:E:JENKINSTESTperfmon est-perfmon.jtl

      

      配置输出文件格式

       

    编写Build.xml:

      文件位置:E:JENKINSTESTuild.xml

        

    <?xml version="1.0" encoding="utf-8"?>

    <!--
    Author:Fresh.Qin
    Email:lzqinfen@126.com
    -->
    <project name="ant-jmeter-test" default="all" basedir=".">
    <!--
    <tstamp>
    <format property="time" pattern="yyyyMMddHHmmss" />
    </tstamp>
    -->
    <!-- 需要改成自己本地的 Jmeter 目录-->
    <property name="jmeter.home" value="D: oolapache-jmeter-3.1"/>
    <!-- 需要改成 Jmeter CMDRunner.jar 目录-->
    <property name="CMDRunner.home" value="${jmeter.home}libextCMDRunner.jar"/>
    <property name="ReportGen.home" value="${jmeter.home}libextReportGen.jar"/>
    <!-- 需要改成自己本地的 Jmeter 目录-->
    <!--<property name="result.home" value="E:jmeterBCSReport" />-->
    <property name="cpuresult.home" value="E:JENKINSTESTperfmon"/>
    <property name="script.home" value="E:JENKINSTESTScripts"/>
    <!-- jmeter 生成 jtl 格式的结果报告的路径-->
    <property name="jmeter.result.jtl.dir" value="${result.home}${time}jtl"/>
    <!-- jmeter 生成 html 格式的结果报告的路径-->
    <property name="jmeter.result.html.dir" value="${result.home}${time}html"/>
    <!-- jmeter 生成 png 格式的结果报告的路径-->
    <property name="jmeter.result.png.dir" value="${result.home}${time}png"/>
    <!-- 生成的报告的前缀-->
    <!--<property name="ReportName" value="TestReport" />-->
    <!-- 相关报告路径配置-->
    <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}${ReportName}${time}.jtl"/>
    <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}${ReportName}${time}.html"/>
    <!--给 Jmeter 传入的 参数-->
    <!--
    <property name="threads" value="1" />
    <property name="duration" value="30" />
    <property name="PerMonhome" value="E:jmeterBCSReport" />
    <property name="build.home" value="E:jmeterBCS" />
    -->
    <target name="all">
    <echo message="jmeter.result.jtl.dir=${jmeter.result.jtl.dir}"/>
    <echo message="jmeter.result.html.dir=${jmeter.result.html.dir}"/>
    <echo message="jmeter.result.png.dir=${jmeter.result.png.dir}"/>
    <echo message="jmeter.result.jtlName=${jmeter.result.jtlName}"/>
    <antcall target="clean"/>
    <!--第一步 运行脚本-->
    <!--<antcall target="run.script" />-->
    <antcall target="test"/>
    <!--第二步 生成基础报表
    <antcall target="base.report" /> 存在性能问题,不再生成基础报表-->
    <!--第三步 生成扩展报表-->
    <antcall target="extras.report"/>
    <!--第四步 清理生成的文件-->
    <antcall target="finish"/>
    </target>
    <target name="clean">
    <mkdir dir="${jmeter.result.jtl.dir}"/>
    <mkdir dir="${jmeter.result.html.dir}"/>
    <mkdir dir="${jmeter.result.png.dir}"/>
    <delete includeemptydirs="true">
    <fileset dir="${cpuresult.home}" includes="**/*.jtl"/>
    </delete>
    </target>
    <target name="test">
    <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask"/>
    <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}">
    <testplans dir="${script.home}" includes="*.jmx"/>
    <property name="jmeter.save.saveservie.output_format" value="xml"/>
    <property name="request.threads" value="${threads}"/>
    <property name="request.duration" value="${duration}"/>
    </jmeter>
    </target>
    <target name="extras.report">
    <!--TPS 每秒事务数-->
    <exec executable="cmd.exe">
    <arg line="/c java -jar ${CMDRunner.home} --tool Reporter --generate-png ${jmeter.result.png.dir}/${ReportName}${time}_TPS.png --input-jtl ${jmeter.result.jtl.dir}/${ReportName}${time}.jtl --plugin-type TransactionsPerSecond --limitrows 100 --relative-times no"/>
    </exec>
    <!--RTP 响应时间的百分比-->
    <exec executable="cmd.exe">
    <arg line="/c java -jar ${CMDRunner.home} --tool Reporter --generate-png ${jmeter.result.png.dir}/${ReportName}${time}_RTP.png --input-jtl ${jmeter.result.jtl.dir}/${ReportName}${time}.jtl --plugin-type ResponseTimesPercentiles "/>
    </exec>
    <!--RTD 响应时间分布情况-->
    <exec executable="cmd.exe">
    <arg line="/c java -jar ${CMDRunner.home} --tool Reporter --generate-png ${jmeter.result.png.dir}/${ReportName}${time}_RTD.png --input-jtl ${jmeter.result.jtl.dir}/${ReportName}${time}.jtl --plugin-type ResponseTimesDistribution "/>
    </exec>
    <!--RLOT 响应时间随时间的变化曲线-->
    <exec executable="cmd.exe">
    <arg line="/c java -jar ${CMDRunner.home} --tool Reporter --generate-png ${jmeter.result.png.dir}/${ReportName}${time}_RLOT.png --input-jtl ${jmeter.result.jtl.dir}/${ReportName}${time}.jtl --plugin-type LatenciesOverTime --limitrows 100 --relative-times no"/>
    </exec>
    <!--CpuMem Cpu 内存监控结果生成-->
    <exec executable="cmd.exe">
    <arg line="/c java -jar ${CMDRunner.home} --tool Reporter --generate-png ${jmeter.result.png.dir}/${ReportName}${time}_CpuMem.png --input-jtl ${cpuresult.home}/test-perfmon.jtl --plugin-type PerfMon --limit-rows 100 --relative-times no"/>
    </exec>
    <!--生成聚合报告的 CSV 文件,后面需要二次处理-->
    <exec executable="cmd.exe">
    <arg line="/c java -jar ${CMDRunner.home} --tool Reporter --generate-csv ${jmeter.result.png.dir}/AggregateReport.csv --input-jtl ${jmeter.result.jtl.dir}/${ReportName}${time}.jtl --plugin-type AggregateReport"/>
    </exec>
    <!--CSV 转换成 PNG-->
    <exec executable="cmd.exe">
    <arg line="/c java -jar ${ReportGen.home} ${jmeter.result.png.dir}/AggregateReport.csv ${jmeter.result.png.dir}/AggregateReport.png"/>
    </exec>
    <!--服务器监控数据处理-->
    <exec executable="cmd.exe">
    <arg line="/c java -jar ${CMDRunner.home} --tool Reporter --generate-png ${jmeter.result.png.dir}/test_CpuMem.png --input-jtl ${cpuresult.home}/test-perfmon.jtl -- plugin-type PerfMon --limit-rows 100 --relative-times no"/>
    </exec>
    </target>
    <target name="finish">
    <copy todir="${jmeter.result.jtl.dir}">
    <fileset dir="${cpuresult.home}">
    <include name="**/*.jtl"/>
    </fileset>
    </copy>
    </target>
    </project>

    一键压测:

      

      

      

      

    转自:https://www.cnblogs.com/ai594ai/p/7127333.html

  • 相关阅读:
    Windows Socket编程简介
    IIS7.0 Appcmd 命令详解
    VC显示网页验证码、模拟CSDN网页登录
    c++对象初始化中 ZeroMemory、memset、直接赋0的区别
    在MFC程序中显示 JPG/GIF图像
    开始学习WTL——(1)关于STL/ATL/WTL之间的区别
    可编辑子项的CListCtrl类
    VC添加自定义消息
    VC调用JavaScript函数--处理QQ网页登录密码加密(空间、农场、WEB QQ等)
    VC创建定时关闭的MessageBox
  • 原文地址:https://www.cnblogs.com/Lydia25/p/9989933.html
Copyright © 2011-2022 走看看