本文以jenkins
1.651为例,下载并安装Subversion Plug-in、Performance Plugin、Publish Over SSH。
Jenkins系统设置中在Publish Over SSH下新建与jmeter远程发压机的连接,输入ip和登录用户/密码,默认路径:
Jenkins里新建一个maven项目,用来编译jmeter java request的项目。
l SVN路径指向jmeter java request的项目地址。
l “maven goals and options”为clean dependency:copy-dependencies install。
l “构建后操作”下添加“Send
build artifacts over SSH”,将项目编译生成的jar复制到jmeter远程发压机的lib/ext目录下,将依赖的jar复制到lib目录下(由于依赖的jar较多,因此jmeter远程发压机上已经保存了基础依赖的jar,这里仅将每次调整接口时可能变化的jar复制过去):
执行编译成功后即将jmeter java request的jar install到jenkins机器的本地maven仓库里。
Jenkins里新建一个maven项目,用来编译jmeter-maven-plugin的项目,但首先要对项目的pom文件和jmx测试计划做一定修改。
将执行的jmx测试计划用参数替代:
<testFilesIncluded>
<jMeterTestFile>${jMeterTestFile}.jmx</jMeterTestFile>
</testFilesIncluded>
在<propertiesUser>下添加新的参数,用来与jenkins配合参数化并发线程数量和迭代执行次数:
<threads>${threads}</threads>
<testIterations>${testIterations}</testIterations>
在<remoteConfig>下添加参数,用来与jenkins配合参数化jmeter远程发压机的ip:
<remoteConfig>
<startServersBeforeTests>true</startServersBeforeTests>
<serverList>${remote_hosts_list}</serverList>
</remoteConfig>
最终pom.xml文件:(暂不提供)
在User
Defined Variables中添加参数threads,Value为${__P(threads,1)},参数testIterations,Value为${__P(testIterations,1)}:
线程组中将并发线程数量和迭代次数替换为参数:
参数化配置中去掉${parameterFilePath},jmeter远程发压机执行时会默认从bin目录下读取参数化文件:
l 勾选“参数化构建过程”,添加构建前需要传入的参数,包括jMeterTestFile、threads、testIterations、remote_hosts_list:
l SVN路径指向jmeter-maven-plugin的项目地址
l “maven goals and options”为clean verify。
l “Pre Steps”下添加“Send files or execute commands over SSH”,复制参数化文件和user.properties到jmeter远程发压机的bin目录下:
l “构建后操作”下添加“Publish Performance test
result report”,指定jmeter-maven-plugin执行后的结果路径(默认为target/jmeter/results),根据需求调整展现的结果阈值:
保存后点击Build with Parameters即可输入参数并开始构建:
查看jenkins编译日志可以看到jmeter-maven-plugin已经调起了jmeter远程发压机执行测试计划:
执行成功后Performance Plugin会分析测试结果并与之前编译成功的构建结果进行简单对比: