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:\tool\apache-ant-1.9.7

  

 

  设置环境变量 PATH: D:\tool\apache-ant-1.9.7\bin

   

验证安装:

  

 

 ANT 与 Jmeter集成配置:

  修改 Jmeter 默认保存配置

  修改文件 D:\tool\apache-jmeter-3.1\bin\jmeter.properties

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

  将 D:\tool\apache-jmeter-3.1\extras\ant-jmeter-1.1.1.jar 拷贝 D:\tool\apache-ant-1.9.7\lib 目录下

  

  

 验证 ant 集成 jmeter

  在 D:\tool\apache-jmeter-3.1\extras 目录下打开 CMD,运行"ant.bat -file build.xml Dtest=Test" . 查看 D:\tool\apache-jmeter-3.1\extras 目录下是否出现 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:\tool\apache-jmeter-

  3.1\lib\ext 目录下,将 ReportGen.jar、jmeter-plugins-manager-0.11.jar 拷贝到 D:\tool\apachejmeter-3.1\lib\ext 目录下

   

  

  

  

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

  

 

 安装Jenkins插件:

  

  

 

  安装插件: HTML Publisher plugin

   

  

 

Jenkins配置任务:

  新建任务:

  

 

  

 

   丢弃旧的构建:

  

  

  参数化构建:

  

 

  result.home: E:\JENKINS\TEST\Report

  

 

   build.home: E:\JENKINS\TEST

  

  

  ReportName: PerfmanceTestingReport

  

 

  Threads:1

  

 

  Duration:60

  

 

  jmeter.home: D:\tool\apache-jmeter-3.1

  

 

   ant.home:D:\tool\apache-ant-1.9.7

  

 

 构建:

  

  

  

  cd /d  %ANT_HOME%\bin

  ant -f %build.home%\build.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:\JENKINS\TEST\perfmon\test-perfmon.jtl

  

 

  配置输出文件格式

   

 

编写Build.xml:

  文件位置:E:\JENKINS\TEST\build.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:\tool\apache-jmeter-3.1\"/>
<!-- 需要改成 Jmeter CMDRunner.jar 目录-->
<property name="CMDRunner.home" value="${jmeter.home}\lib\ext\CMDRunner.jar"/>
<property name="ReportGen.home" value="${jmeter.home}\lib\ext\ReportGen.jar"/>
<!-- 需要改成自己本地的 Jmeter 目录-->
<!--<property name="result.home" value="E:\jmeter\BCS\Report" />-->
<property name="cpuresult.home" value="E:\JENKINS\TEST\perfmon"/>
<property name="script.home" value="E:\JENKINS\TEST\Scripts"/>
<!-- 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:\jmeter\BCS\Report" />
<property name="build.home" value="E:\jmeter\BCS\" />
-->
<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

 

posted @ 2018-11-20 16:52  北卡蓝色的小方块  阅读(635)  评论(0编辑  收藏  举报