您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
   
 
 
     
   
 订阅
  捐助
性能测试工具Grinder
 
作者 Linsa.Liu,火龙果软件    发布于 2014-07-24
   次浏览      
 

什么是Grinder?

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

官网及下载: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)。

在进行负载测试时,应该在每个测试机上启动一个代理线程。代理进程启动的所有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消息体的内容长度统计。

每个测试有两种可能结果:

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%\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
   
次浏览       
相关文章

微服务测试之单元测试
一篇图文带你了解白盒测试用例设计方法
全面的质量保障体系之回归测试策略
人工智能自动化测试探索
相关文档

自动化接口测试实践之路
jenkins持续集成测试
性能测试诊断分析与优化
性能测试实例
相关课程

持续集成测试最佳实践
自动化测试体系建设与最佳实践
测试架构的构建与应用实践
DevOps时代的测试技术与最佳实践
最新活动计划
LLM大模型应用与项目构建 12-26[特惠]
QT应用开发 11-21[线上]
C++高级编程 11-27[北京]
业务建模&领域驱动设计 11-15[北京]
用户研究与用户建模 11-21[北京]
SysML和EA进行系统设计建模 11-28[北京]

LoadRunner性能测试基础
软件测试结果分析和质量报告
面向对象软件测试技术研究
设计测试用例的四条原则
功能测试中故障模型的建立
性能测试综述
更多...   


性能测试方法与技术
测试过程与团队管理
LoadRunner进行性能测试
WEB应用的软件测试
手机软件测试
白盒测试方法与技术


某博彩行业 数据库自动化测试
IT服务商 Web安全测试
IT服务商 自动化测试框架
海航股份 单元测试、重构
测试需求分析与测试用例分析
互联网web测试方法与实践
基于Selenium的Web自动化测试
更多...