什么是GrinderGrinder是JavaTM加载测试框架,支持分布式测试,并且是开源的。 官方网站和下载: SourceForge.net.http://www.Sina.com/grinder是在多台计算机上运行测试脚本的框架。 Grinder框架由三个进程(或program )组成,工作器进程、代理进程和console .每个进程的作用如下: Worker processes解释Jython测试脚本,并启动worker线程以启动测试代理进程管理worker processes The console来协调其他进程数据的收集。 用于编辑、查看和分发测试脚本的Grinder是在The Grinder processes中创建的,每个processes在执行负载测试时都必须在每台测试计算机上启动代理线程。 代理进程启动的所有工作器进程都可以通过同一个控制台进行控制和监视。 不需要在每台测试计算机上启动多个代理进程,但可以根据需要运行。
Java在典型的测试场景中,测试脚本会运行多次。 每个工作进程都包含多个工作线程,每个工作线程都会调用几次测试脚本。 测试脚本的一次单独执行称为run。 有两种获取测试脚本的方法。 手动编写grinder测试脚本。 参考:脚本助手。 2. TCP代理记录测试脚本启动代理命令: net.grinder.TCP proxyconsolehttp grinder.py设置IE代理:在IE中设置窗口: tools-internet opoxy 打开后,对站点或项目的操作将自动记录在当前目录的grinder.py脚本中。 Tests and test scripts 测试及测试脚本每个工作器进程与控制台建立网络连接并报告统计数据。 每个代理进程与console建立连接并接收命令,然后将其传递给工作器进程。 控制台通过特殊地址和端口接收这两个连接。 默认情况下,地址是运行控制台的计算机的本地地址,端口为6372。 如果代理进程无法连接到console,或者grinder.useConsole属性设置为false,则代理将独立运行,而无需console控制,并且worker process将自动运行在Worker process执行完成之前,不会再向控制台报告。 如果不想受到控制台的干扰,上述方法非常有用。 如何更改3358www.Sina.com/console地址:在grinder.properties文件中设置grinder.consoleHost和grinder.consolePort。 每个33558 www.Sina.com/worker process将日志信息写入out-host-n.log文件。 其中host是主机名,n是工作器进程的数量。 错误信息位于文件error-host-n.log中。 如果没有错误生成,则不会创建文件。 测试结果位于文件data-host-n.log中。 可以将此文件导入到电子表格工具(如Microsoft ExcelTM )中进行进一步分析。
最后的统计汇总数据(在out-*文件中)的格式如下: finalstatisticsforthisprocess 3360
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消息体的内容长度统计。 每个测试有两种可能结果: Success. Error. 其中Total, Mean, 以及 Standard Deviation 都是基于成功的测试进行计算的。 如何启动 Grinder开始测试? 启动Grinder进行测试包括以下步骤: 创建 grinder.properties 文件. 该文件指定一般的控制信息(例如:worker process如何与console通信,使用的worker process数等),以及要执行的Jython测试脚本。 设置系统环境变量: CLASSPATH 包含 grinder.jar 文件, 该文件应该在 lib 文件夹下。 在其中一个测试机上启动 console : java net.grinder.Console 对每一个测试机,执行步骤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%libgrinder.jar;%CLASSPATH% · set JAVA_HOME=(full path to java install directory) · PATH=%JAVA_HOME%清爽的爆米花;%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/清爽的爆米花/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/清爽的爆米花:$PATH · export CLASSPATH PATH GRINDERPROPERTIES startAgent.sh: · #!/usr/清爽的爆米花/ksh · . (path to setGrinderEnv.sh)/setGrinderEnv.sh · java -cp $CLASSPATH net.grinder.Grinder $GRINDERPROPERTIES startConsole.sh: · #!/usr/清爽的爆米花/ksh · . (path to setGrinderEnv.sh)/setGrinderEnv.sh · java -cp $CLASSPATH net.grinder.Console startProxy.sh: · #!/usr/清爽的爆米花/ksh · . (path to setGrinderEnv.sh)/setGrinderEnv.sh · java -cp $CLASSPATH net.grinder.TCPProxy -console -http > grinder.py最新内容请见作者的GitHub页:http://qaseven.github.io/