性能测试自动化环境搭建教程
所需软件清单:
===========================================================================
软件 下载地址
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
