性能测试工具Grinder

什么是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

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-24 06:09:04

性能测试工具Grinder的相关文章

《全栈性能测试修炼宝典 JMeter实战》—第2章 2.5节性能测试工具选择

2.5 性能测试工具选择 工欲善其事必先利其器,性能测试时模拟大量负载需要工具帮忙,市面上可供使用的负载工具繁多,如何选择呢? 首先我们要明白负载工具是帮助我们来模拟负载的,对于性能测试来说,工具并不是核心,分析.评估.找出性能问题才是核心,这些是主观因素:工具是客户因素,自然要降低其对结果的影响,所以工具选择时我们有几个方面要考虑. (1)专业.稳定.高效,比如Loadrunner,工业级性能负载工具. (2)简单易上手,在测试脚本上不用花太多时间. (3)有技术支持,文档完善,不用在疑难问题

Web网站的性能测试工具

随着Web 2.0技术的迅速发展,许多公司都开发了一些基于Web的网站服务,通常在设计开发Web应用系统的时候很难模拟出大量用户同时访问系统的实际情况,因此,当Web网站遇到访问高峰时,容易发生服务器响应速度变慢甚至服务中断.为了避免这种情况,需要一种能够真实模拟大量用户访问Web应用系统的性能测试工具进行压力测试,来测试静态HTML页面的响应时间,甚至测试动态网页(包括ASP.PHP.JSP等)的响应时间,为服务器的性能优化和调整提供数据依据. 我推荐各位Web 2.0开发测试人员使用Micr

Gatling:新一代服务器性能测试工具

21世纪是云的世纪, 大规模云网已经出现了,而且在未来几年内会得到高速发展,从而使得基于云的系统也会越来越多.如果要开发一款高性能的云系统,服务器性能测试是一个必不可少的环节.今天,就来介绍一款新一代服务器性能测试工具Gatling. 一,什么是Gatling Gatling是一款基于Scala 开发的高性能服务器性能测试工具,它主要用于对服务器进行负载等测试,并分析和测量服务器的各种性能指标.Gatling主要用于测量基于HTTP的服务器,比如Web应用程序,RESTful服务等,除此之外它拥

高效的 web 性能测试工具OpenSTA使用详解

概述 随着 Web 应用技术的发展和 Web 应用程序的迅速普及,Web 系统的性能和服务质量显得越来 越重要.性能测试在软件的质量保证中起着越来越重要的作用.性能测试是通过自动化的测试工具模拟多种正 常.峰值以及异常负载条件来对系统的各项性能指标进行测试.性能测试是一种信息的收集和分析的过程,测 试过程中通过收集的数据用来预测怎样的负载水平将耗尽系统资源.性能测试保证程序具有良好的性能,它考 察在不同的用户负载下,Web 对用户请求做出的相应情况,以确保将来系统运行的安全性.可靠性和执行效率

性能测试工具SilkPerformer介绍

SilkPerformer是业界最强大,且最易用的企业级负载和强度测试解决方案,用于对关键任务 应用的质量进行优化.SilkPerformer使用可视化脚本生成技术和对存在成千上万的并发用户的多 个应用环境进行测试的能力,使您能够在企业应用部署之前,就对其可靠性.性能和可伸缩性进行彻底 的测试,而无需考虑其规模大小和复杂程度.SilkPerformer强大的诊断工具和管理报告能够帮助您隔离 错误并快速做出决定,从而最大程度缩短测试周期和加快上市速度. 1.单一控制.分布测试 从单一的中央控制点,

性能测试工具curl-loader二---测试分析

本文在第一篇的基础上讲解,如果你还没有安装curl-loader性能测试工具.请先参考<性能测试工具curl-loader(linux)> 这一节具体分析一下curl-loader的使用,以及各项参数的含义. 简单的性能测试与要求环境: ------- --------------------------------------------------------------------------------------------------------------- ----------

性能测试工具curl-loader(linux)

curl-loader介绍 curl-loader(也被称为"omes-NIK"和"davilka")是一个开源的C语言编写的工具,模拟应用负 载和成千上万的几十万人的HTTP / HTTPS和FTP/ FTPS的客户端应用程序的行为,每个有其自己的源IP地址.相反,其他curl- loader使用真正的C编写的客户端协议栈,即libcurl和TLS/ openssl的SSL的HTTP和FTP协议栈,支持登录和验证口味和模拟用户 行为的工具. 所以,体积虽小,但不要

性能测试知多少---性能测试工具原理与架构

在性能测试的学习过程中,坚持思想与工具(分开)并行,当前面世面上的性能测试书籍大多把理论与loadrunner融为一体讲解,这样做是正确的,因为有一些性能名词概念也源于工具.但是,性能测试不是loadrunner,所有的作者也是这么认为的.但他们在讲性能测试的时候讲的就是loadrunner有,只是讲的多少不同罢啦. 你是否觉得我对loadrunner有仇?我之所以将其分开来学,只是希望自己在学习性能测试的时候不要被loadrunner局限了而已.只是觉得在做性能测试时不要带loadrunner

Oracle IO性能测试工具Orion详解

  1Orion概述   1.1 Orion说明   Orion是Oracle提供的IO性能测试工具,运行该工具不需要安装oracle database软件或创建数据库.它可以模拟Oracle数据库的IO负载,也可以用来仿真ASM的条带化的功能.测试随机或顺序访问指定大小块的IO性能,性能指标包括:IOPS,MBPS,Latency(延迟时间). 从Oracle Database 11g开始,Orion工具被集成到GI和Database软件中,所以在$GRID_HOME/bin和$ORACLE_