一、JDK:http://www.oracle.com/technetwork/java/javase/downloads/index.htmlphp
二、Jmeter:http://jmeter.apache.org/download_jmeter.cgihtml
三、Ant:http://ant.apache.org/bindownload.cgijava
四、Jenkins:http://jenkins-ci.org/node
具體可參見我另外一篇博客:http://www.cnblogs.com/puresoul/p/4808416.htmlexpress
2、Jemter腳本準備:apache
一、腳本目錄:D:\B_TOOLS\apache-jmeter-2.13\demooracle
二、腳本內容:都是簡單的訪問百度或google首頁post
baidu.jmx google.jmx測試
3、ANT的build.xml代碼準備:優化
build3.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <project name="ant-jmeter-test" default="run" basedir="."> 4 <tstamp> 5 <format property="time" pattern="yyyyMMddhhmm" /> 6 </tstamp> 7 8 <property environment="env"/> 9 <property name="ReportName" value="TestReport" /> 10 <!-- 須要改爲本身本地的 Jmeter 目錄--> 11 <property name="jmeter.home" value="D:\B_TOOLS\apache-jmeter-2.13" /> 12 <!-- jmeter生成jtl、html格式的結果報告的路徑--> 13 <property name="jmeter.result.dir" value="${env.WORKSPACE}/results/${env.BUILD_ID}" /> 14 <!-- 生成的報告的前綴--> 15 <property name="jmeter.result.jtlName" value="${jmeter.result.dir}/${ReportName}.jtl" /> 16 <property name="jmeter.result.htmlName" value="${jmeter.result.dir}/${ReportName}.html" /> 17 18 <target name="run"> 19 <echo message="start..."/> 20 <antcall target="clean" /> 21 <antcall target="test" /> 22 <antcall target="report" /> 23 </target> 24 25 <target name="clean"> 26 <mkdir dir="${env.WORKSPACE}/results/${env.BUILD_ID}" /> 27 </target> 28 29 <target name="test"> 30 <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /> 31 <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> 32 <!-- 聲明要運行的腳本"*.jmx"指包含此目錄下的全部jmeter腳本--> 33 <testplans dir="D:\B_TOOLS\apache-jmeter-2.13\demo" includes="*.jmx" /> 34 35 <property name="jmeter.save.saveservice.output_format" value="xml"/> 36 </jmeter> 37 </target> 38 39 <target name="report"> 40 <xslt in="${jmeter.result.jtlName}" 41 out="${jmeter.result.htmlName}" 42 style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl" /> 43 <!-- 由於上面生成報告的時候,不會將相關的圖片也一塊兒拷貝至目標目錄,因此,須要手動拷貝 --> 44 <copy todir="${jmeter.result.dir}"> 45 <fileset dir="${jmeter.home}/extras"> 46 <include name="collapse.png" /> 47 <include name="expand.png" /> 48 </fileset> 49 </copy> 50 </target> 51 </project>
4、配置Jenkins Job並運行:
一、job配置以下:
二、job運行結果:
1 Started by user anonymous 2 Building in workspace D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace 3 [demo] $ cmd.exe /C '"ant.bat -file build3.xml run && exit %%ERRORLEVEL%%"' 4 Buildfile: build3.xml 5 6 run: 7 [echo] start... 8 9 clean: 10 [mkdir] Created dir: D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace\results\15 11 12 test: 13 [jmeter] Executing test plan: D:\B_TOOLS\apache-jmeter-2.13\demo\baidu.jmx ==> D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace\results\15\TestReport.jtl 14 [jmeter] Creating summariser <summary> 15 [jmeter] Created the tree successfully using D:\B_TOOLS\apache-jmeter-2.13\demo\baidu.jmx 16 [jmeter] Starting the test @ Tue Sep 22 15:50:33 CST 2015 (1442908233010) 17 [jmeter] Waiting for possible shutdown message on port 4445 18 [jmeter] summary + 1 in 1s = 2.0/s Avg: 254 Min: 254 Max: 254 Err: 0 (0.00%) Active: 1 Started: 1 Finished: 0 19 [jmeter] summary + 5 in 1s = 7.3/s Avg: 131 Min: 96 Max: 196 Err: 0 (0.00%) Active: 0 Started: 1 Finished: 1 20 [jmeter] summary = 6 in 1.2s = 5.0/s Avg: 151 Min: 96 Max: 254 Err: 0 (0.00%) 21 [jmeter] Tidying up ... @ Tue Sep 22 15:50:34 CST 2015 (1442908234310) 22 [jmeter] ... end of run 23 [jmeter] Executing test plan: D:\B_TOOLS\apache-jmeter-2.13\demo\google.jmx ==> D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace\results\15\TestReport.jtl 24 [jmeter] Creating summariser <summary> 25 [jmeter] Created the tree successfully using D:\B_TOOLS\apache-jmeter-2.13\demo\google.jmx 26 [jmeter] Starting the test @ Tue Sep 22 15:50:35 CST 2015 (1442908235240) 27 [jmeter] Waiting for possible shutdown message on port 4445 28 [jmeter] summary + 1 in 1s = 1.9/s Avg: 253 Min: 253 Max: 253 Err: 1 (100.00%) Active: 1 Started: 1 Finished: 0 29 [jmeter] summary + 5 in 1.1s = 4.4/s Avg: 209 Min: 97 Max: 420 Err: 0 (0.00%) Active: 0 Started: 1 Finished: 1 30 [jmeter] summary = 6 in 2s = 3.6/s Avg: 216 Min: 97 Max: 420 Err: 1 (16.67%) 31 [jmeter] Tidying up ... @ Tue Sep 22 15:50:36 CST 2015 (1442908236992) 32 [jmeter] ... end of run 33 34 report: 35 [xslt] Processing D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace\results\15\TestReport.jtl to D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace\results\15\TestReport.html 36 [xslt] Loading stylesheet D:\B_TOOLS\apache-jmeter-2.13\extras\jmeter-results-detail-report_21.xsl 37 [copy] Copying 2 files to D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace\results\15 38 39 BUILD SUCCESSFUL 40 Total time: 5 seconds 41 [workspace] $ cmd /c call D:\Users\heman793\AppData\Local\Temp\hudson4765606743104861298.bat 42 43 D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace>echo D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace 44 D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace 45 46 D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace>echo 15 47 15 48 49 D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace>cd results 50 51 D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace\results>cd 15 52 53 D:\B_TOOLS\jenkins\jobs\TestJenkins\workspace\results\15>exit 0 54 Finished: SUCCESS
三、在job的workspace目錄下會生成結果報告:
四、TestReport.html:
更新補充:
上面生成的報告有以下兩個問題,解決辦法參見Jmeter自帶報告優化(一):
一、Date report這裏的時間沒有正確顯示出來
二、Summary裏的字段Min Time和Max Time顯示的是NaN,沒有顯示正確的時間。
5、配置發送郵件功能
一、自已寫一個發送郵件的功能並打成sendmail.jar包,放在job的workspace目錄中
二、jenkins增長構建步驟
a)進入到測試報告的目錄
b) 調用sendmail.jar命令發送郵件
說明:
一、由build3.xml的第十二、13行可知,報告文件生成目錄爲:${env.WORKSPACE}/results/${env.BUILD_ID},因此這裏我要先cd到具體執行的那個build_id目錄下。
二、咱們也能夠把上面的兩行命令寫在成一個批處理文件,例如我第1步有個sendmail.bat文件就是的,而後調用時直接寫sendmail.bat就行了。
另外,我本文全部腳本都在我本地,其實更好的辦法是使用SVN統一管理,這裏就不介紹了,感受的能夠本身研究下。
做者:Glen.He
出處:http://www.cnblogs.com/puresoul/
本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。
1、本文目的:
以前寫了兩篇文章搭建持續集成接口測試平臺(Jenkins+Ant+Jmeter)和ANT批量執行Jmeter腳本,功能實現上都沒有什麼問題,可是最後生成的報告有一點小問題,雖然不影響使用,但老是感受不夠完美,具體問題以下:
一、Date report這裏的時間沒有正確顯示出來
二、Summary裏的字段Min Time和Max Time顯示的是NaN,沒有顯示正確的時間。
本文主要解決上述兩個問題,具體報告如何生成可參考上面提到的兩篇文章。
2、Jmeter+Ant報告生成原理:
在解決問題以前,讓咱們先弄清楚Jmeter+Ant是生成報告的原理,知道原理後咱們就能夠很從容的解決問題了。另外,若是後續咱們想定製報告也就很容易了。
一、在Jmeter的extras目錄下,官方已經爲咱們提供了一個現成的實例,咱們只須要在該目錄下執行ant命令就能夠生成一個數據文件Test.jtl和一個報告Test.html(PS:若是沒有安裝ant須要先去安裝,不會用ant的自行百度)。
二、知道了上一步後,接下來咱們研究的重點就是extras目錄下的build.xml文件了,具體研究細節就不在此細說了,由於這就部份內容屬於ant的範圍,有須要的能夠自行補充下ant的知識。
3、解決問題:
一、找到extras目錄下build.xml文件內容的以下部分:它的做用就是把生成的.jtl數據文件轉換爲.html格式的報告
具體屬性的含義:
1 <path id="xslt.classpath">//jar的路徑 2 <fileset dir="${lib.dir}" includes="xalan*.jar"/> 3 <fileset dir="${lib.dir}" includes="serializer*.jar"/> 4 </path> 5 //把生成的.jtl數據文件轉換成.html格式的報告 6 <target name="xslt-report" depends="_message_xalan"> 7 <tstamp><format property="report.datestamp" pattern="yyyy/MM/dd HH:mm"/></tstamp> 8 <xslt 9 classpathref="xslt.classpath" 10 force="true" 11 in="${testpath}/${test}.jtl" 12 out="${testpath}/${test}.html" 13 style="${basedir}/jmeter-results-detail-report${style_version}.xsl"> 14 <param name="showData" expression="${show-data}"/> 15 <param name="titleReport" expression="${report.title}"/> 16 <param name="dateReport" expression="${report.datestamp}"/> 17 </xslt> 18 </target>
二、經過上面的分析,style 文件是整成報告轉換的關鍵,那咱們就打開jmeter-results-detail-report_21.xsl這個文件看看,找到以下幾行,這裏也定義了三個參數跟build.xml文件中同樣,由此可猜想,咱們只要在build.xml文件中定義dateReport這個參數和值,在style中就能夠按以下方式使用,通過測試證實猜想是正確的,那麼第一個問題就解決了:
1 <xsl:param name="showData" select="'n'"/> 2 <xsl:param name="titleReport" select="'Load Test Results'"/> 3 <xsl:param name="dateReport" select="'date not defined'"/>
三、對於第二個問題,其實把第1步中的代碼複製到咱們本身的build.xml文件中後,能夠一併解決這兩個問題。解決第二個老是的關鍵代碼是第9行和第10行:
classpathref="xslt.classpath"
force="true"
而第9行又引用了第1~4行
四、到此,兩個問題都解決了,最終修改後的build.xml文件以下,標黃是解決老是添加的代碼:
<?xml version="1.0" encoding="UTF-8"?> <project name="ant-jmeter-test" default="run" basedir="."> <!-- 須要改爲本身本地的 Jmeter 目錄--> <property name="jmeter.home" value="/Users/Tools/Jmeter" /> <property name="report.title" value="接口測試"/> <!-- jmeter生成jtl格式的結果報告的路徑--> <property name="jmeter.result.jtl.dir" value="/Users/Desktop/jmx/report" /> <!-- jmeter生成html格式的結果報告的路徑--> <property name="jmeter.result.html.dir" value="/Users/Desktop/jmx/report" /> <!-- 生成的報告的前綴--> <property name="ReportName" value="TestReport" /> <property name="jmeter.result.jtlName" value="${jmeter.result.jtl.dir}/${ReportName}.jtl" /> <property name="jmeter.result.htmlName" value="${jmeter.result.html.dir}/${ReportName}.html" /> <target name="run"> <antcall target="test" /> <antcall target="report" /> </target> <target name="test"> <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" /> <jmeter jmeterhome="${jmeter.home}" resultlog="${jmeter.result.jtlName}"> <!-- 聲明要運行的腳本"*.jmx"指包含此目錄下的全部jmeter腳本--> <testplans dir="/Users/Desktop/jmx" includes="*.jmx" /> <property name="jmeter.save.saveservice.output_format" value="xml"/> </jmeter> </target> <path id="xslt.classpath"> <fileset dir="${jmeter.home}/lib" includes="xalan*.jar"/> <fileset dir="${jmeter.home}/lib" includes="serializer*.jar"/> </path> <target name="report"> <tstamp> <format property="report.datestamp" pattern="yyyy/MM/dd HH:mm" /></tstamp> <xslt classpathref="xslt.classpath" force="true" in="${jmeter.result.jtlName}" out="${jmeter.result.htmlName}" style="${jmeter.home}/extras/jmeter-results-detail-report_21.xsl"> <param name="dateReport" expression="${report.datestamp}"/> </xslt> <!-- 由於上面生成報告的時候,不會將相關的圖片也一塊兒拷貝至目標目錄,因此,須要手動拷貝 --> <copy todir="${jmeter.result.html.dir}"> <fileset dir="${jmeter.home}/extras"> <include name="collapse.png" /> <include name="expand.png" /> </fileset> </copy> </target> </project>
五、修改後的報告:
做者:Glen.He
出處:http://www.cnblogs.com/puresoul/
本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。
Jmeter默認的報告展現的信息比較少,若是出錯了,不是很方便定位問題。由Jmeter默認報告優化這篇文章可知,其實由.jtl格式轉換爲.html格式的報告過程當中,style文件起了很關鍵的做用。下面介紹另外一種style文件的使用方法:
一、下載style文件:jmeter.results.shanhe.me.xsl
二、把下載的文件放到jmeter的extras目錄下。
三、修改jmeter.properties文件以下部分,我這裏都修改爲true,這樣執行完腳本後就會保存這些結果到.jtl文件裏面:
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
四、修改build.xml文件,以下第7行style的值修改成新下載的xsl文件名:
1 <target name="report" depends="_message_xalan"> 2 <xslt 3 classpathref="xslt.classpath" 4 force="true" 5 in="${testpath}/${test}.jtl" 6 out="${testpath}/${test}.html" 7 style="${basedir}/jmeter-results-shanhe-me.xsl"> 8 <param name="showData" expression="${show-data}"/> 9 </xslt> 10 </target>
五、執行腳本,生成報告以下,明顯感受展現的內容比以前的報告多不少,定位問題也比較方便直觀:
參考:
https://testerhome.com/topics/3773
做者:Glen.He
出處:http://www.cnblogs.com/puresoul/ 本文版權歸做者和博客園共有,歡迎轉載,但未經做者贊成必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,不然保留追究法律責任的權利。