小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Jmeter壓力測試自動化

 小豬窩969 2016-03-16
壓力測試能不能自動化?當然能,而且也可以進一步加入持續(xù)集成,說到底無非就是一個job的事兒。

在越來越快的迭代中,性能測試是否一個系統(tǒng)一輩子只需做一次就夠了?

一周一個版本,接口、數(shù)據(jù)庫、代碼不斷頻繁改動,如何保證現(xiàn)有改動不影響性能?

想要做一個千萬級用戶的應(yīng)用,任何一點接口修改的失誤或者bug,可能對性能的影響都是致命的。




給大家分享一下,目前在項目中做的壓力測試自動化相關(guān),有需要的可以參考下

(初步版本,先描述大概思路,如果感興趣的人多再補充后續(xù))




環(huán)境篇——

性能測試工具:Jmeter 2.11


持續(xù)集成平臺:Jenkins 1.606  + 插件 Performance Plugin v1.13

地址:http:///  


建議使用最新版本,之前的版本都會有各種奇怪的bug,已踩過深坑…...




1、安裝Linux Jenkins

使用64位Linux做為服務(wù)器,安裝tomcat+Jenkins 形式部署 jenkins,壓力測試生成的 jtl 文件可能會比較大,如果 tomcat 分配的內(nèi)存過小,多半會 opps!




2、拷貝tools.jar

部分jdk和公司標裝的機器可能沒有tools.jar , 從有該 jar 包的目錄拷貝一個到對應(yīng)的jdk 環(huán)境變量中,放到 JDK 的 lib 目錄下

否則可能會遇到報錯:

Unable to locate tools.jar. Expected to find it in /usr/lib/jvm/java-1.6/lib/tools.jar




3、設(shè)置 JMETER_HOME

在運行性能測試的執(zhí)行及上,配置 JMETER_HOME

否則可能出現(xiàn)報錯:

You must set jmeterhome to your JMeter install directory




4、拷貝 ant-jmeter-1.1.1.jar 

為了能夠在后續(xù) ant 腳本中使用 jmeter task,必須要將 ant-jmeter-1.1.1.jar 拷貝到執(zhí)行機 ant 的 classpath 中(即拷貝到 ant 的 lib 目錄中),這個 jar 包一般可以在 jmeter 的目錄 lib/extras 中找到

否則可能出現(xiàn)報錯:

task class org.programmerplanet.ant.taskefs.jmeter.JMeterTask cannot be found







編寫篇——

Jmeter怎么進行性能測試?不再該篇文章中贅述




1、生成性能測試案例 jmx 文件


  • 性能測試的每個測試場景在 Jmeter 中都可以生成
  • 盡量去除掉所有不必要的 listener ,只留一個聚合報告即可。
  • 生成的 jmx 文件名字中不要含有中文,否則生成報告中會有亂碼




2、編寫ant 腳本


  • 可參考如下 build.xml 腳本,腳本可以通用,只需要在不同 job 中設(shè)置對應(yīng)要運行的 jmx 名稱即可
  • 最后一段被注釋掉的,可以用于將 jtl 生成 html 報告,方便人閱讀,但是同時加上這個target 在轉(zhuǎn)換時候很吃 jenkins 的內(nèi)存。諸君可自行選擇
  • jmx 性能測試腳本,個人建議無需設(shè)置太長運行時間,在項目中目前一般設(shè)置為 300s,時間太短性能測試無法有效反映指標,時間越長 生成的 jtl 也越大,影響后續(xù)解析 


  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <project name='PerformanceTest'>  
  3.     <!-- ant-jmeter.jar comes with jmeter, be sure this is the release you have -->  
  4.     <property name="JMETER_HOME" value="/wls/pawf/tool/apache-jmeter-2.11" />  
  5.     <property name="properties.path" value="/wls/pawf/tool/apache-jmeter-2.11/bin/jmeter.properties" />  
  6.     <property environment="env" />  
  7.     <path id="ant.jmeter.classpath">  
  8.         <pathelement location="${JMETER_HOME}/extras/ant-jmeter-1.1.1.jar" />  
  9.     </path>  
  10.   
  11.     <taskdef name="jmeter" classname="org.programmerplanet.ant.taskdefs.jmeter.JMeterTask" classpathref="ant.jmeter.classpath" />  
  12.   
  13.   
  14.     <target name="clean">  
  15.         <delete file="jmeter.log" />  
  16.         <mkdir dir="${env.WORKSPACE}/results/${env.BUILD_ID}" />  
  17.   
  18.     </target>  
  19.   
  20.     <target name="run" depends="clean">  
  21.         <jmeter jmeterhome="${JMETER_HOME}" jmeterproperties="${properties.path}" runremote="true" resultlogdir="${env.WORKSPACE}/results/${env.BUILD_ID}">  
  22.             <testplans dir="/wls/pawf/testcase" includes="${TestCaseName}.jmx" />  
  23.             <property name="jmeter.save.saveservice.output_format" value="xml" />  
  24.         </jmeter>  
  25.     </target>  
  26.   
  27.   
  28.     <!-- This is not needed for the plugin, but it produces a nice html report  
  29.            which can be saved usin jenkins's archive artifact feature -->  
  30.     <!--  
  31.     <target name="report" depends="test">  
  32.         <xslt  
  33.            basedir="results/jtl"  
  34.            destdir="results/html"  
  35.            includes="*.jtl"/>  
  36.           
  37.            style="${JMETER_HOME}/extras/jmeter-results-detail-report_21.xsl"/>  
  38.                       
  39.     </target>  
  40.       
  41.     <target name="all" depends="test"/>   
  42.     --></span>  
  43. </project>  








運行篇——




1、在 jenkins 上配置 job 進行運行。

     參數(shù)化構(gòu)建過程。使用一個 ant 的 build 文件運行所有的 jmx 性能測試案例。但保持每個 job 只有一個 jmx 案例,各自獨立,互不影響。










2、運行 ant ,直接運行指定的build文件即可,注意執(zhí)行機上需要有 ant 的環(huán)境變量。在我做的這個項目中,通過步驟1中的 String Parameter 所有job都使用一個build文件。










3、jenkins插件解析 jtl 性能測試結(jié)果文件

這里就是上文所說的Performance Plugin 插件出場了,在構(gòu)建后步驟中選擇 “Publish Performance test result report” 

配置生成的 jtl 文件的路徑位置

正常情況下一般配置這個就可以了,不過在進行單個性能測試時候,我們可以好好的利用該插件中 “Use Relative thresholds for build comparison”,可以比較平均時間、中位數(shù)時間和 90%Line時間。











勾選 “compare with previous Build” 可以與上一次運行的性能測試結(jié)果比較。

勾選“compare with Build number”可以與指定的哪一次運行的性能測試結(jié)果比較,0為不比較。

其中“Unstable % Range”表示波動 ±百分比范圍內(nèi),將本次運行結(jié)果置為 Unstable


       “Failed % Range” 表示波動 ±百分比范圍內(nèi),將本次運行結(jié)果置為 Failed




如下圖,會計算出兩次運行之間 90%Line 時間的差值為148.0,和相差的百分比為 5.37%


 





4、測試結(jié)果圖表

這是最簡單的......也是最直觀的。

如下圖,經(jīng)過至少兩次運行之后,job 會運行出對應(yīng)的性能測試趨勢圖。

第一幅圖:每秒吞吐量 TPS 趨勢圖

第二幅圖:響應(yīng)時間趨勢圖,紅色——90%Line響應(yīng)時間

                                               藍色——平均響應(yīng)時間

                                               綠色——中位數(shù)響應(yīng)時間

第三幅圖:錯誤率趨勢圖










先到這兒 ……..等不忙了再詳細補充。 







  

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多