關於Jmeter的持續集成,首先先談談Jmeter+Maven的集成。
1、使用idea或者eclipse創建一個maven項目
2、在test下創建一個Jmeter目錄
3、將jmeter腳本放入jmeter這個目錄下
4、把本地的jmeter屬性文件放入到jmeter目錄下,這里需注意,需要修改一些屬性
(1)jmeter.save.saveservice.output_format=xml
(2)將以下地方修改將會在報告中顯示更多東西
jmeter.save.saveservice.data_type=true
jmeter.save.saveservice.label=true
jmeter.save.saveservice.response_code=true
# response_data is not currently supported for CSV output
jmeter.save.saveservice.response_data=true
# Save ResponseData for failed samples
jmeter.save.saveservice.response_data.on_error=false
jmeter.save.saveservice.response_message=true
jmeter.save.saveservice.successful=true
jmeter.save.saveservice.thread_name=true
jmeter.save.saveservice.time=true
jmeter.save.saveservice.subresults=true
jmeter.save.saveservice.assertions=true
jmeter.save.saveservice.latency=true
jmeter.save.saveservice.connect_time=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.responseHeaders=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.encoding=false
jmeter.save.saveservice.bytes=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.filename=true
jmeter.save.saveservice.hostname=true
jmeter.save.saveservice.thread_counts=true
jmeter.save.saveservice.sample_count=true
jmeter.save.saveservice.idle_time=true
5、在test文件下創建一個resources文件,並將它在項目屬性中設置為Test resources,在將xsl報告放入進去
6、設置Maven的pom文件
<!--設置報告生成的路徑-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jmeter.result.jtl.dir>${project.build.directory}\jmeter\results</jmeter.result.jtl.dir>
<jmeter.result.html.dir>${project.build.directory}\jmeter\html</jmeter.result.html.dir>
</properties>
<build>
<plugins>
<plugin>
<!-- 核心插件,用來執行jmx腳本,版本號對應的jmeter版本可在此地址查詢 https://github.com/jmeter-maven-plugin/jmeter-maven-plugin/blob/master/CHANGELOG.md-->
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>2.2.0</version>
<configuration>
<!-- 設置jmeter生成結果文件格式-->
<resultsFileFormat>xml</resultsFileFormat>
<!-- 設置忽略失敗是否停止運行-->
<ignoreResultFailures>true</ignoreResultFailures>
<!--設置結果是否有時間戳-->
<testResultsTimestamp>false</testResultsTimestamp>
<testFilesIncluded>
<!-- //指定運行的jmeter腳本 -->
<jMeterTestFile>youdao.jmx</jMeterTestFile>
</testFilesIncluded>
<!-- 指定jtl生成目錄 -->
<resultsDirectory>${jmeter.result.jtl.dir}</resultsDirectory>
</configuration>
<executions>
<execution>
<id>jmeter-tests</id>
<phase>verify</phase>
<!--腳本所在的文件夾 -->
<goals>
<goal>jmeter</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<!--根據xsl模版把jtl文件轉換成html-->
<groupId>org.codehaus.mojo</groupId>
<artifactId>xml-maven-plugin</artifactId>
<version>1.0-beta-3</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>transform</goal>
</goals>
</execution>
</executions>
<configuration>
<transformationSets>
<transformationSet>
<dir>${jmeter.result.jtl.dir}</dir>
<stylesheet>src\test\resources\jmeter.results.shanhe.me.xsl</stylesheet>
<outputDir>${jmeter.result.html.dir}</outputDir>
<!-- 把jtl格式轉傳承html -->
<fileMappers>
<fileMapper
implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
<targetExtension>html</targetExtension>
</fileMapper>
</fileMappers>
</transformationSet>
</transformationSets>
</configuration>
<!-- using XSLT 2.0 -->
<dependencies>
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>saxon</artifactId>
<version>8.7</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
備注:這里遇到過幾個問題
1、如果jmeter4.0版本是無法轉換HTML報告的,使用jmeter-maven-plugin插件無法修改jmeter的屬性文件,目前還沒有找到解決辦法,所以我使用的是3.3版本
2、如果提示xsl文件未找到,那就是找不到啟動的腳本,需查看
這里如果運行的話,運行的是jmeter目錄下的youdao.jmx文件
7、idea中運行maven,找到頂部的運行配置
點擊+號找到maven后添加,在Command line:下輸入verify保存即可
8、點擊運行,會生成一個target文件,運行后的html結果在此目錄下,此目錄是可以自己在pom文件里添加的

9、結果展示,此報告也可以二次重寫

10、jenkins相關配置:
首先先安裝jenkins,在全局工具中配置maven環境
設置maven項目路徑
在jenkins中安裝HTML Publisher插件,並使用
安裝Email Extension插件,並在系統設置中配置發件人郵箱信息
接收郵件人以及郵件模版
簡單的模版配置:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次構建日志</title>
</head>
<body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
offset="0">
<table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tr>
本郵件由系統自動發出,無需回復!<br/>
各位同事,大家好,以下為${PROJECT_NAME }項目構建信息</br>
<td><font color="#CC0000">構建結果 - ${BUILD_STATUS}</font></td>
</tr>
<tr>
<td><br />
<b><font color="#0B610B">構建信息</font></b>
<hr size="2" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>項目名稱 : ${PROJECT_NAME}</li>
<li>構建編號 : 第${BUILD_NUMBER}次構建</li>
<li>觸發原因: ${CAUSE}</li>
<li>構建狀態: ${BUILD_STATUS}</li>
<li>構建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
<li>構建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li>
<li>工作目錄 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li>
<li>項目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li>
</ul>
<h4><font color="#0B610B">失敗用例</font></h4>
<hr size="2" width="100%" />
$FAILED_TESTS<br/>
<h4><font color="#0B610B">最近提交(#$SVN_REVISION)</font></h4>
<hr size="2" width="100%" />
<ul>
${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"}
</ul>
詳細提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/>
</td>
</tr>
</table>
</body>
</html>
在回到剛才創建的項目中,在構建后添加一個郵件相關的配置,就可構建后發送郵件了
備注:
1、如果jmeter中使用了第三方插件,如果不在maven中配置的話,是會報錯的,具體我的操作步驟是
(1)將jmeter的第三方插件的jar包上傳到本地的maven里
(2)在項目的pom文件中調用即可
2、HTML報告在jenkins中顯示不出來樣式的問題
具體看這個文章吧https://testerhome.com/topics/9476,思路就是修改一個顯示CSS樣式的配置,永久修改的話是利用插件做成每次重啟后打jenkins都會去跑那個設置CSS樣式的項目,這樣就不會因為重啟的問題把CSS配置恢復了