`
eminem
  • 浏览: 138761 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

The Grinder试用记录一-脚本录制

阅读更多
The Grinder试用记录一-脚本录制

The Grinder是开源性能测试工具,用Java编写,其脚本语言用Jython编写,脚本编辑的界面不友好,但是脚本编写比较灵活,可以支持参数化和关联操作。跟openSTA一样,其脚本录制功能也可以录制dwr请求。支持分布式负载,测试过程中没有提供对服务器的监控方式。可以运行在window和liunx环境。脚本采用Jython,所以需要测试员有Jython经验,上手比较难。
从http://grinder.sourceforge.net 网站下载The Grinder 3,解压后放到C盘下面,文件夹改名为grinder。该文件夹下面可以看到contrib,etc,example,lib文件夹,新建一个bin文件夹,用于存放生成的cmd可执行文件。
The Grinder的脚本采用专用工具TCPProxy录制。具体步骤如下:
1、编写一个setGrinderEnv.cmd文件,放在bin文件夹下面,用于设置环境变量,内容如下:
    set GRINDERPATH=C:\grinder
           set GRINDERPROPERTIES=C:\grinder\etc\grinder.properties
2、编写一个startProxy.cmd文件,放在bin文件夹下面,用于启动TCPProxy,内容如下:
    call C:\grinder\bin\setGrinderEnv.cmd
           java net.grinder.TCPProxy -console -http > %GRINDERPATH%\grinder.py
           pause
    功能是录制http请求,把录制得到的脚本存储在grinder.py文件中。
3、双击startProxy.cmd文件后,录制启动,出现一个java程序窗口 TCPProxy Console。在这个窗口,你可以控制停止录制,也可以随时给脚本加评论。打开浏览器,设置代理服务器的地址为127.0.0.1,端口8001,然后 地址栏输入被测试服务的url,进行录制,录制过程中,可以随时用“Insert comment”按钮在脚本中插入评论。录制完成后,点击窗口中的“Stop”按钮,录制停止。
4、录制停止后,进入C:\grinder,找到文件 grinder.py,该文件就是录制得到的测试脚本。
 

The Grinder试用记录二-分布式测试
    The Grinder的分布式测试操作很简单,步骤如下:
    1、客户端(192.168.0.101)建立一个C:\grinder\etc\grinder.properties配置文件,该文件是一个配置文 件,指定运行的测试脚本,运行的进程,线程数,循环次数,并指定分布式测试的控制服务器地址和端口(默认为6372,端口值可以通过 文件-选项 修改)。例如:
         grinder.processes=2
         grinder.threads=3
         grinder.runs=4
         grinder.logDirectory=log
         grinder.numberOfOldLogs=2
         grinder.consoleHost=192.168.0.100
         grinder.consolePort=6372
         grinder.useConsole=true
         grinder.script=grinder.py
    2、控制端(192.168.0.100)建立一个startConsole.cmd文件并启动,启动后会出现一个“The Grinder控制台”窗口。文件内容如下:
         call C:\grinder\bin\setGrinderEnv.cmd
         java net.grinder.Console
         pause
    3、客户端(192.168.0.101)建立一个startAgent.cmd文件并启动,文件内容如下:
         call C:\grinder\bin\setGrinderEnv.cmd
         java net.grinder.Grinder %GRINDERPROPERTIES%
         pause
        把测试脚本 grinder.py拷贝到和startAgent.cmd同一个文件夹下面。
   4、客户端启动后,会根据grinder.properties文件的配置连接控制端,连接上以后,控制端的 动作-启动进程 选项变成可选,点击该选项,客户端的测试进程启动,开始测试。测试过程中,控制端能看到各个测试项运行的状态。
   5、测试结束后,查看bin文件夹下面的log文件夹,可以看到各个测试进程,各个测试项的统计指标。
   如果不想用分布式测试,把控制端和客户端都放到一个机器下运行就可以。

字号: 大  中  小
The Grinder试用记录三-脚本编辑
    如果懂Jython语法,那么操作脚本(包括参数化和关联)是非常简单的事情,下面这个脚本向blog.163.com发送一个dwr请求,并把response内容保存到文件。
from net.grinder.script import Test
from net.grinder.script.Grinder import grinder
from net.grinder.plugin.http import HTTPPluginControl, HTTPRequest
from HTTPClient import NVPair
connectionDefaults = HTTPPluginControl.getConnectionDefaults()
httpUtilities = HTTPPluginControl.getHTTPUtilities()
# To use a proxy server, uncomment the next line and set the host and port.
# connectionDefaults.setProxyServer("localhost", 8001)
# These definitions at the top level of the file are evaluated once,
# when the worker process is started.
connectionDefaults.defaultHeaders = \
  ( NVPair('User-Agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727)'), )

headers3= \
  ( NVPair('Accept', '*/*'),
    NVPair('Referer', 'http://blog.163.com/'),
    NVPair('Accept-Language', 'zh-c'), )
url7 = 'http://blog.163.com:80'
# Create an HTTPRequest for each request, then replace the
# reference to the HTTPRequest with an instrumented version.
# You can access the unadorned instance using request101.__target__.
request1001 = HTTPRequest(url=url7, headers=headers3)
request1001 = Test(1001, 'POST UserBean.getProvinceAndCity.dwr').wrap(request1001)
class TestRunner:
  """A TestRunner instance is created for each worker thread."""
  def page10(self):
    """POST UserBean.getProvinceAndCity.dwr (request 1001)."""
    result = request1001.POST('/dwr/call/plaincall/UserBean.getProvinceAndCity.dwr',
      '''callCount=1\n\
page=/\n\
httpSessionId=\n\
scriptSessionId=4FC528EBDD341FE22046F074D587F3733\n\
c0-scriptName=UserBean\n\
c0-methodName=getProvinceAndCity\n\
c0-id=0\n\
c0-param0=boolean:false\n\
c0-param1=boolean:false\n\
batchId=0\n\
''',
      ( NVPair('Content-Type', 'text/plain'), ))
    return result

  def __call__(self):
    """This method is called for every run performed by the worker thread."""
    result1=self.page10()     # POST UserBean.getProvinceAndCity.dwr (request 1001)
    writeToFile(result1.getText())
   
   
def writeToFile(text):
filename = grinder.getFilenameFactory().createFilename(
  "page", "-%d.html" % grinder.runNumber)
file = open(filename, "w")
print >> file, text
file.close()
   
   
参考资料:
1、官方介绍资料:http://grinder.sourceforge.net/g3/scripts.html
2、Script API :http://grinder.sourceforge.net/g3/script-javadoc/index.html
3、官方例子:http://grinder.sourceforge.net/g3/script-gallery.html
4、Jython学习资料:https://www6.software.ibm.com/developerworks/cn/education/java/j-jython2/tutorial/


* grinder.properties 参数设置详解    http://grinder.sourceforge.net/g3/properties.html


*****小整理
一.脚本录制
1.设置代理HTTP和SSL选择localhost 端口8001
2.脚本录制java net.grinder.TCPProxy -console -http>xx.py
3.执行USECASE 点击STOP完成脚本录制
二.执行脚本
1.打开CONSOLE,java net.grinder.console
2.CMD到脚本目录,java net.grinder.Grinder

grinder.properties

grinder.processes=50//进程数
grinder.threads=1//线程数
grinder.runs=6000//循环执行的次数

grinder.useConsole=true

grinder.logDirectory=log
grinder.numberOfOldLogs=1

#grinder.consoleHost=10.0.0.66 //CONSOLE在66上
#grinder.consolePort=6372

//每30秒增加2个进程
grinder.processIncrement=2
grinder.processIncrementInterval=30000
grinder.initialProcesses=6//起初运行的进程数
grinder.duration=600000//脚本执行10分钟


grinder.reportTimesToConsole=false

#grinder.initialSleepTime=500
#grinder.sleepTimeFactor=0.01
#grinder.sleepTimeVariation=0.005
grinder.jvm.arguments=-mx512m

#grinder.script=dmryrz.py
#grinder.script=pingzhengdaochu.py
#grinder.script=xinzidaochu.py
grinder.script=jiaoyi3.py

三.根据生成的LOG文件分析系统
1.条件
需要工具grinderAnalyzer(下载地址),jython_installer-2.2.1.jar 可以到相应网站下载
2.把grinder生成的data.log文件放到E:\grinderAnalyzer.V2.b9目录下,同时选择一其中一个out.log文件(out.log只需要一个且不限定哪个,只要是同个测试的log)
3.CMD到E:\grinderAnalyzer.V2.b9目录 执行命令jython analyzer.py E:\grinderAnalyzer.V2.b9\data_0.log E:\grinderAnalyzer.V2.b9\data_1.log E:\grinderAnalyzer.V2.b9\data_2.log E:\grinderAnalyzer.V2.b9\out_0.log 1 其中1代表agent的数量
4.在grinderReport下有生成的结果repot.html

分享到:
评论
2 楼 eminem 2008-12-11  
asdf3070 写道

没看太懂,能不能更加清楚点


哪部分不太懂?
1 楼 asdf3070 2008-11-05  
没看太懂,能不能更加清楚点

相关推荐

    the grinder 3.0安装文件

    1. **解压文件**:找到下载的压缩包 `grinder-3.11`,使用解压缩工具将其解压到一个合适的目录,例如 `C:\Program Files\The Grinder`。 2. **设置环境变量**:为了方便运行 The Grinder,可以将安装路径添加到系统...

    grinder-dcr-agent-3.9.1.jar

    grinder jar需要的jar包,使用ngrinder时用到的,有需要的可以使用

    The Grinder3.0

    在“测试报告”中,可能包含了The Grinder 3.0在实际项目中的应用案例,详细描述了如何设置测试场景,如何录制和编辑测试脚本,以及如何解读和分析测试数据。报告可能涵盖了如何配置和使用各种插件,例如HTTP请求...

    grinder的使用步骤和运行命令

    3. 保存脚本:停止Proxy,Grinder会提示保存录制的脚本,一般保存为`.tscript`文件。 四、编写和编辑脚本 Grinder脚本使用Jython编写,这是一种Python的Java实现。您可以在脚本中添加逻辑,例如循环、条件判断等,...

    论文研究-基于the Grinder的性能测试及应用 .pdf

    本文作者杨晓旗针对这一需求,提出了一套基于开源性能测试工具the Grinder的性能测试方法,并证明了其可行性和有效性。 在进行性能测试之前,了解性能测试的相关指标是必要的。性能测试关注的指标包括响应时间、...

    Grinder-分布式测试负载

    1.grinder 是非常好用的性能测试软件,纯java 编写 可以通过编写phthon 脚本来测试软件性能,数据库性能 等等, 还可以调用java 的class 2.环境和测试脚本已打包,可直接拿来用。 3.附带一个Grinder的pdf使用指南。...

    grinder 3.2 + 源代码 + 入门指南

    "grinder-3.2-src.zip"则提供了源代码,对于开发者来说,这是一个宝贵的资源,可以深入了解Grinder的工作原理,甚至根据项目需求进行二次开发。 "Grinder_how_to.zip"则是一份入门指南,帮助初学者快速掌握Grinder...

    [www.infoshare.cc]grinder-3.11.tar.gz

    [www.infoshare.cc]grinder-3.11.tar.gz

    grinder安装使用说明文档

    Grinder是一款开源的负载和性能测试框架,其核心理念是“测试脚本化”,支持使用Jython(Python的Java版本)语言编写测试脚本,使得测试脚本的编写更为灵活和易读。Grinder提供了一个图形化的控制台,可以方便地管理...

    grinder:Grinder是一个用于自动模糊Web浏览器和管理大量崩溃的系统

    Grinder是一个用于自动模糊Web浏览器和管理大量崩溃的系统。 Grinder Nodes提供了一种自动的方法来模糊浏览器,并生成有用的崩溃信息(例如带有符号信息的调用堆栈以及可以在以后生成可再现测试用例的日志信息)。 ...

    Grinder入门介绍

    Grinder 是一个强大的框架,用于在多台机器上运行测试脚本。该框架由三种类型的进程组成:Worker 进程、Agent 进程以及控制台(Console)。每种进程的具体职责如下: - **Worker 进程**:解释执行 Jython 测试脚本...

    ngrinder-recorder-1.0.zip

    其中,ngrinder-recorder是ngrinder的重要组件,它作为一个录制工具,能够帮助用户轻松地创建性能测试脚本。在本文中,我们将深入探讨ngrinder-recorder-1.0的具体功能、使用方法及其在性能测试中的价值。 一、...

    Grinder用户手册

    此外,Grinder 还提供了一个脚本库,里面包含了各种实用的示例脚本。这些脚本可以直接使用或者作为参考来创建自己的测试案例。 #### 7. SSL 支持 ##### 2.7.1. 准备工作 在开始使用 SSL 功能之前,需要做一些准备...

    dBot:dBot-PokeMMO机器人-开源

    dBot由-DefaulT(d.faultx@gmail.com)编码,该机器人包括以下内容:-Shiny Catcher -Chat Flooder -Auto Fisher -Auto Grinder -Auto Login-自定义脚本自定义脚本部分对dBot并不那么独特正如大多数机器人所未见的...

    性能测试工具Grinder

    Grinder是一个将测试脚本运行在多个机器上的框架。Grinder框架由三个process(或program)组成:workerprocesses,agentprocesses,和console.每种process的职责如下:Workerprocesses解释Jython测试脚本,并启动worker...

Global site tag (gtag.js) - Google Analytics