`
eminem
  • 浏览: 136351 次
  • 性别: 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  
没看太懂,能不能更加清楚点

相关推荐

    grinder-dcr-agent-3.9.1.jar

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

    the grinder 3.0安装文件

    the grinder 3.0安装文件

    Grinder-分布式测试负载

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

    The Grinder3.0

    测试报告 博文链接:https://gq913.iteye.com/blog/159928

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

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

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

    基于the Grinder的性能测试及应用,杨晓旗,,如何选择适合不同用户需求的性能测试工具并且执行测试,找出系统可能存在的系统瓶颈和系统漏洞,是软件性能测试的关键。本文提出

    性能测试工具Grinder

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

    grinder的使用步骤和运行命令

    环境配置好,双击就可以运行,简单操作,效率高。没有工具的或者还是不会运行的 hongzhuxuke@126.com联系我

    dBot:dBot-PokeMMO机器人-开源

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

    grinder 3.2 + 源代码 + 入门指南

    grinder 是非常好用的性能测试软件,纯java 编写 可以通过编写phthon 脚本来测试软件性能,数据库性能 等等, 还可以调用java 的class

    grinder.dart:Dart工作流程,自动化

    要创建一个简单的grinder脚本,请运行: pub run grinder:init 通常,grinder脚本如下所示: import 'package:grinder/grinder.dart' ;main (args) => grind (args);@DefaultTask ( 'Build the project.' )build ()...

    Grinder入门介绍

    Grinder入门介绍:简单介绍了Grinder中进程、脚本、网络通讯等概念。

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

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

    Grinder用户手册

    Grinder用户手册:详细介绍了Grinder 3的新特性、脚本编写方法和统计数据等。

    matlab精度检验代码-cnn_grinder:CNN-Grinder工作流程项目文件

    CNN-Grinder是模板驱动的工作流程,可用于将对移动设备友好的CNN的算法描述转换为用于对低端,低成本FPGA SoC进行编程的高级综合(HLS)C / C ++代码。 使用HLS方法是为了加速CNN中最典型的图层类型(例如卷积和最大...

Global site tag (gtag.js) - Google Analytics