Grinder资料收集

阅读更多

什么是 Grinder

Grinder 是一个 JavaTM 负载测试框架,支持分布式测试,且是开源的。

有关 grinder 的最新消息,下载以及其他情况可 以从以下网站获取: SourceForge.net .

 

The Grinder processes

Grinder 是一个将测试脚本运行在多个机器 上的框架。 Grinder 框架由三个 process( program )组成 : worker processes , agent processes , console . 每种 process 的职责如下:

  • Worker processes
    • 解释 Jython 测试脚本,并启动 worker 线程进行测试
  • Agent processes
    • 管理 worker processes
  • The console
    • 协调其他的 processes
    • 数据的收集,处理及显示
    • 测试脚本的编辑及分发

Grinder Java 编写,其中的每个 processes 都是一个 java 虚拟机( JVM )。

Grinder资料收集_第1张图片

 

 

在进行负载测试时,应该在每个测试 机上启动一个代理线程。代理进程启动的所有 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 属性被设置为 false agent 将不需要 console 的控制而独立地运行,并自动启动 worker process 开始测试。 Worker process 运行至完成都不再向 console 报告。如果你不想受 console 的干扰而快速的开始测试,上面的方式是非常有用的。

Note

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

 

输出

每个 worker process 都会写日志信息到文件 out-host-n.log 中,其中 host 是主机名, n worker 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.

其中 Total , Mean , 以及 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

你可能感兴趣的:(脚本,Java,Jython,.net,IE)