51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1440|回复: 1
打印 上一主题 下一主题

【转帖】性能测试工具Grinder

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2017-7-20 13:21:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
什么是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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-15 11:28 , Processed in 0.065940 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表