qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          性能測試工具Grinder

          什么是Grinder
            Grinder是一個JavaTM負載測試框架,支持分布式測試,且是開源的。
            官網(wǎng)及下載:SourceForge.net.
            The Grinder processes
            Grinder是一個將測試腳本運行在多個機器上的框架。Grinder框架由三個process(或program)組成: worker processes, agent processes, 和console. 每種process的職責(zé)如下:
            Worker processes
            解釋Jython測試腳本,并啟動worker線程進行測試
            Agent processes
            管理 worker processes
            The console
            協(xié)調(diào)其他的 processes
            數(shù)據(jù)的收集,處理及顯示
            測試腳本的編輯及分發(fā)
            Grinder由Java編寫,其中每個processes都是一個java虛擬機(JVM)。
            在進行負載測試時,應(yīng)該在每個測試機上啟動一個代理線程。代理進程啟動的所有worker進程都可以由同一個控制臺進行控制和監(jiān)視。在每個測試機上都啟動多個代理進程是非常沒有必要的,但是如果你愿意也可以這樣做。
           Tests and test scripts 測試及測試腳本
            在一個典型的測試場景中,測試腳本會被執(zhí)行很多遍。每個工作進程都包含若干個工作線程,每個工作線程都會調(diào)用測試腳本若干次。測試腳本的一次單獨執(zhí)行稱作一個run。
            測試腳本的獲取有兩種方式:
            1.        手工編寫grinder測試腳本。參考:Script Gallery。
            2.        TCP代理錄制測試腳本
            啟動代理命令:net.grinder.TCPProxy –console –http > grinder.py
            設(shè)置IE代理:
            在IE中打開設(shè)置窗口:Tools -> Internet Options -> Connections ->Local Area Network Settings -> advanced... 按上面控制臺輸出的信息填入代理。
            打開要測試的網(wǎng)站或工程,對網(wǎng)站或工程的操作會被自動記錄到當(dāng)前目錄的grinder.py腳本中。
            Network communication網(wǎng)絡(luò)通訊
            每個worker process都會與console建立一個網(wǎng)絡(luò)連接來報告統(tǒng)計數(shù)據(jù)。
            每個agent process都與console建立一個連接來接收命令,然后傳遞給它的worker process。
            Console通過一個特殊的地址和端口來監(jiān)聽這兩種連接。默認情況下,地址是運行console的機器的本地地址,端口是6372。
            如果agent process連接console失敗,或者 grinder.useConsole屬性被設(shè)置為false,agent將不需要console的控制而獨立地運行,并自動啟動worker process開始測試。Worker process運行至完成都不再向console報告。如果你不想受console的干擾而快速的開始測試,上面的方式是非常有用的。
            Note
            更改console地址的方法:設(shè)置grinder.properties文件中的grinder.consoleHost和grinder.consolePort。
            輸出
            每個worker process都會寫日志信息到文件out-host-n.log中,其中host是主機名,n是worker process數(shù)量。
            Error信息在文件error-host-n.log中。如果沒有error產(chǎn)生,將不會創(chuàng)建該文件。
            測試結(jié)果在文件data-host-n.log中。該文件可以導(dǎo)入電子表格工具中,例如Microsoft ExcelTM,以便進一步的分析。
           最后的統(tǒng)計匯總數(shù)據(jù)(out-*文件中)形式如下:
          Final statistics for this process:
          Successful  Errors   Mean Test  Test Time Standard
          Tests                                 Time(ms)    Deviation (ms)
          Test 0     25        0       255.52     22.52
          Test 1     25        0       213.40     25.15
          Test 2     25        0       156.80     20.81     "Image"
          Test 3     25        0       90.48      14.41
          Test 4     25        0       228.68     23.97      "Login page"
          Test 5     25        0       86.12      12.53  "Security check"
          Test 6     25        0       216.20     8.89
          Test 7     25        0       73.20      12.83
          Test 8     25        0       141.92     18.36
          Test 9     25        0       104.68     19.86     "Logout page"
          Totals        250           0             156.70       23.32
            測試過程中,Console會動態(tài)顯示簡單的統(tǒng)計信息。另外,plug-in和高級測試腳本可以提供額外的數(shù)據(jù)統(tǒng)計,例如:HTTP plug-in 添加了對response消息體的內(nèi)容長度統(tǒng)計。
            每個測試有兩種可能結(jié)果:
            Success.
            Error.
            其中Total, Mean, 以及 Standard Deviation 都是基于成功的測試進行計算的。
            如何啟動 Grinder開始測試?
            啟動Grinder進行測試包括以下步驟:
            創(chuàng)建 grinder.properties 文件.
            該文件指定一般的控制信息(例如:worker process如何與console通信,使用的worker process數(shù)等),以及要執(zhí)行的Jython測試腳本。
            設(shè)置系統(tǒng)環(huán)境變量: CLASSPATH 包含 grinder.jar 文件, 該文件應(yīng)該在 lib 文件夾下。
            在其中一個測試機上啟動 console :
            java net.grinder.Console
            對每一個測試機,執(zhí)行步驟1和步驟2,然后啟動一個agent process:
            java net.grinder.Grinder
            agent將會在本地文件夾中尋找grinder.properties文件。
            Jython腳本通常存放在properties文件同級目錄下。
            另外,可以通過參數(shù)的方式明確指定properties文件,例如:
            java net.grinder.Grinder myproperties
            Note
            如果對console比較熟悉,可以通過console來編輯以及分發(fā)properties文件和測試腳本,這樣就不必將他們分別拷貝到每個測試機上。
            下面的一些腳本是在Unix/Linux 下,用來啟動grinder agents, console 和 錄制HTTP腳本的TCPProxy。
          Windows
          setGrinderEnv.cmd:
          ·                      set GRINDERPATH=(full path to grinder install directory)
          ·                      set GRINDERPROPERTIES=(full path to grinder.properties)\grinder.properties
          ·                      set CLASSPATH=%GRINDERPATH%\lib\grinder.jar;%CLASSPATH%
          ·                      set JAVA_HOME=(full path to java install directory)
          ·                      PATH=%JAVA_HOME%\bin;%PATH%
          startAgent.cmd:
          ·                      call (path to setGrinderEnv.cmd)\setGrinderEnv.cmd
          ·                      echo %CLASSPATH%
          ·                      java -cp %CLASSPATH% net.grinder.Grinder %GRINDERPROPERTIES%
          startConsole.cmd:
          ·                      call (path to setGrinderEnv.cmd)\setGrinderEnv.cmd
          ·                      java -cp %CLASSPATH% net.grinder.Console
          startProxy.cmd:
          ·                      call (path to setGrinderEnv.cmd)\setGrinderEnv.cmd
          ·                      java -cp %CLASSPATH% net.grinder.TCPProxy -console -http > grinder.py
          Unix
          setGrinderEnv.sh:
          ·                      #!/usr/bin/ksh
          ·                      GRINDERPATH=(full path to grinder install directory)
          ·                      GRINDERPROPERTIES=(full path to grinder.properties)/grinder.properties
          ·                      CLASSPATH=$GRINDERPATH/lib/grinder.jar:$CLASSPATH
          ·                      JAVA_HOME=(full path to java install directory)
          ·                      PATH=$JAVA_HOME/bin:$PATH
          ·                      export CLASSPATH PATH GRINDERPROPERTIES
          startAgent.sh:
          ·                      #!/usr/bin/ksh
          ·                      . (path to setGrinderEnv.sh)/setGrinderEnv.sh
          ·                      java -cp $CLASSPATH net.grinder.Grinder $GRINDERPROPERTIES
          startConsole.sh:
          ·                      #!/usr/bin/ksh
          ·                      . (path to setGrinderEnv.sh)/setGrinderEnv.sh
          ·                      java -cp $CLASSPATH net.grinder.Console
          startProxy.sh:
          ·                      #!/usr/bin/ksh
          ·                      . (path to setGrinderEnv.sh)/setGrinderEnv.sh
          ·                      java -cp $CLASSPATH net.grinder.TCPProxy -console -http > grinder.py

          posted on 2014-06-30 18:21 順其自然EVO 閱讀(749) 評論(0)  編輯  收藏 所屬分類: 測試學(xué)習(xí)專欄

          <2014年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 唐海县| 白山市| 祁门县| 郓城县| 临湘市| 忻城县| 宜兴市| 久治县| 龙江县| 宜川县| 博湖县| 邳州市| 扬中市| 繁昌县| 洞头县| 黄骅市| 奈曼旗| 五峰| 天水市| 阳城县| 西畴县| 广州市| 大石桥市| 云南省| 莱西市| 泗洪县| 洛南县| 虎林市| 筠连县| 右玉县| 中方县| 宜兰县| 北海市| 盐池县| 阳曲县| 霸州市| 马鞍山市| 武汉市| 鄢陵县| 秭归县| 嘉鱼县|