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