Jmeter (三十)jmeter+ant+jenkins持续集成

it2026-04-03  12

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

  所需软件清单:

  

 

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

  软件    下载地址

  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.QinEmail: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

 

转载于:https://www.cnblogs.com/Lydia25/p/9989933.html

最新回复(0)