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

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值