nGrinder-入門學習1

什麼是Grinder

Grinder是一個JavaTM負載測試框架,支持分佈式測試,且是開源的。

有關grinder 的最新消息,下載以及其他情況可以從以下網站獲取:SourceForge.net.

 

The Grinder processes

Grinder是一個將測試腳本運行在多個機器上的框架。Grinder框架由三個process(program)組成worker processesagent processes, console. 每種process的職責如下:

  • Worker processes
    • 解釋Jython測試腳本,並啓動worker線程進行測試
  • Agent processes
    • 管理 worker processes
  • The console
    • 協調其他的 processes
    • 數據的收集,處理及顯示
    • 測試腳本的編輯及分發

GrinderJava編寫,其中的每個processes都是一個java虛擬機(JVM)。

Grinder學習整理

在進行負載測試時,應該在每個測試機上啓動一個代理線程。代理進程啓動的所有worker進程都可以由同一個控制檯進行控制和監視。在每個測試機上都啓動多個代理進程是非常沒有必要的,但是如果你願意也可以這樣做。

 

Tests and test scripts測試及測試腳本

在一個典型的測試場景中,測試腳本會被執行很多遍。每個工作進程都包含若干個工作線程,每個工作線程都會調用測試腳本若干次。測試腳本的一次單獨執行稱作一個run

測試腳本的獲取有兩種方式:

1.        手工編寫grinder測試腳本。參考:Script Gallery

2.        TCP代理錄製測試腳本

Ø        啓動代理命令:net.grinder.TCPProxy –console –http > grinder.py

Ø        設置IE代理:

在IE中打開設置窗口:Tools -> Internet Options -> Connections ->

Local Area Network Settings->advanced... 按上面控制檯輸出的信息填入代理。

Ø        打開要測試的網站或工程,對網站或工程的操作會被自動記錄到當前目錄的grinder.py腳本中。

 

Network communication網絡通訊

Ø        每個worker process都會與console建立一個網絡連接來報告統計數據。

Ø        每個agent process都與console建立一個連接來接收命令,然後傳遞給它的worker process

Ø        Console通過一個特殊的地址和端口來監聽這兩種連接。默認情況下,地址是運行console的機器的本地地址,端口是6372

如果agent process連接console失敗,或者 grinder.useConsole屬性被設置爲falseagent將不需要console的控制而獨立地運行,並自動啓動worker process開始測試。Worker process運行至完成都不再向console報告。如果你不想受console的干擾而快速的開始測試,上面的方式是非常有用的。

Note

更改console地址的方法:設置grinder.properties文件中的grinder.consoleHostgrinder.consolePort

 

輸出

每個worker process都會寫日誌信息到文件out-host-n.log中,其中host是主機名,nworker process數量。

Error信息在文件error-host-n.log中。如果沒有error產生,將不會創建該文件。

測試結果在文件data-host-n.log中。該文件可以導入電子表格工具中,例如Microsoft ExcelTM,以便進一步的分析。

最後的統計彙總數據(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會動態顯示簡單的統計信息。另外,plug-in和高級測試腳本可以提供額外的數據統計,例如:HTTP plug-in 添加了對response消息體的內容長度統計。

每個測試有兩種可能結果:

  1. Success.
  2. Error.

其中TotalMean, 以及 Standard Deviation 都是基於成功的測試進行計算的。

如何啓動 Grinder開始測試?

啓動Grinder進行測試包括以下步驟:

  1. 創建 grinder.properties 文件.

該文件指定一般的控制信息(例如:worker process如何與console通信,使用的worker process數等),以及要執行的Jython測試腳本。

  1. 設置系統環境變量: CLASSPATH 包含 grinder.jar 文件, 該文件應該在 lib 文件夾下。
  2. 在其中一個測試機上啓動 console :

java net.grinder.Console

  1. 對每一個測試機,執行步驟1和步驟2,然後啓動一個agent process:

       java net.grinder.Grinder

Ø       agent將會在本地文件夾中尋找grinder.properties文件。

Ø       Jython腳本通常存放在properties文件同級目錄下。

Ø       另外,可以通過參數的方式明確指定properties文件,例如:

java net.grinder.Grinder myproperties

 

Note

如果對console比較熟悉,可以通過console來編輯以及分發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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章