Rational Robot压力测试实例

发表于:2011-12-12来源:未知作者:娃娃点击数: 标签:rational
看到很多人在要这个,找到一篇,转过来给大家看看 第一贴内容是关于CS结构的基于socked协议的脚本录制,修改,设置,回放的 第二贴内容是关于自写SQL SERVER数据库压力脚本的 文章的出处没有看到作者的名字,非常抱歉

  看到很多人在要这个,找到一篇,转过来给大家看看

  第一贴内容是关于CS结构的基于socked协议的脚本录制,修改,设置,回放的

  第二贴内容是关于自写SQL SERVER数据库压力脚本的

  文章的出处没有看到作者的名字,非常抱歉

  脚本与被测程序有关,直接运行这个脚本是不能回放成功的(因为你没有脚本运行的环境)

  文章如下

  第一步:设置Robot

  Robot――Tools――Session Record options,Method选择API Recorder,Generater Filtering中Filtering选择Auto filtering,Select protocols只选择Socket;

  第二步:录制VU脚本

  在启动的Start Application窗口中,Executable输入被测程序的客户端程序的路径和文件名,Working Directory中输入被测程序的工作路径,Program Arguments如果没有就空着。被测程序程序启动后,执行需要的操作然后关闭程序,停止录制脚本,Robot会自动生成脚本。

  脚本示例:

#include <VU.h>

{

push Timeout_scale = 200; /* Set timeouts to 200% of maximum response time */

push Think_def = "LR";

Min_tmout = 120000; /* Set minimum Timeout_val to 2 minutes */

push Timeout_val = Min_tmout;

SERVER = sock_connect("123001", "SERVER:2000");

{ INFO SERVER "SERVER"="192.168.1.12"; } /*1*/

set Server_connection = SERVER;

push Think_avg = 0;

sock_send

"`45645651300000000001cc00f701000002000000c3330100000000000000000001000000" "00000000000sdgsdfgfhjghjjdfhjhkjgfhjgfjjk000000000000hh0000000000000000000000" "000000000000000000000000000000000000000000000100`g2222`0012313546545465431" "`45641313000000000000000000000000000000000000`";

sock_nrecv ["123002"] 200;

sock_send "`1321321656548745215599154654456546122132112313210000000000000001000000" "00000000021321215665654548879654654655562000000000000000000000000000000" "00000000000000000000000000000000000000000000012131132321213212111323213" "`123110000000`Z2";

sock_recv ["123003"] "$"; /* 50 bytes */

sock_disconnect(SERVER);

pop [Think_def, Think_avg, Timeout_val, Timeout_scale];

}

  这个脚本如果不能正确回放,可以将将sock_recv ["123003"] "$"; /* 50 bytes */改为

  sock_nrecv ["123003"] 50; /* 50 bytes */

  第三步:设置Suite,回放脚本

  回放录制的脚本,Testmanager会自动创建Suite,如下所示:[attachment=1786]

  默认脚本运行一次,为了长时间运行,修改增加脚本的运行次数(最大32767),在Run properties中Iterations中设置。然后运行Suite,在Run Suite窗口中的“Number of users”上输入虚拟用户数,如200。

  第四步:观察被测服务程序的运行情况,查看有无异常。

  压力测试需要连续、高负载运行不少于72小时,运行完成服务程序需要无资源泄漏、无报错、无异常退出以及其他不正常情况。

  ilovejolly 2006-05-20 16:43

  数据库并发测试

  数据库并发测试的必要性:

  1、 与数据库连接的服务程序采用多线程同时开启多个数据库连接;

  2、 与数据库连接的服务程序单线程,但是同时开启多套服务程序;

  以上两种情况均会产生对数据库的并发访问操作。数据库并发访问会导致数据库数据错误、数据库死锁等故障,需要在测试阶段进行充分测试。

  数据库并发测试测试方法

  1、 利用测试工具模拟多个最终用户进行并发测试;

  这种测试方法的缺点:最终用户往往并不是直接连接到数据库上,而是要经过一个和多个中间服务程序,所以并不能保证访问数据库时还是并发。其次,这种测试方法需要等到客户端程序、服务端程序全部完成才能进行;

  2、 利用测试工具编写脚本,直接连接数据库进行并发测试;

  这种方法可以有效的保证并发操作,而且在数据库访问程序完成即可测试,可以大大缩短测试时间,而且测试效果更好。

  下面通过一个演示程序,演示使用Robot使用第二种测试方法进行数据库的并发测试:

  第一步:创建演示程序:打开SQL SERVER查询分析器,在SQL SERVER测试数据库中执行下列脚本(脚本执行操作:创建表testtable,并插入一条记录;创建存储过程test):

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Test]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)

drop procedure [dbo].[Test]

GO

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[testtable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [dbo].[testtable]

GO

CREATE TABLE [dbo].[testtable] (

[testid] [int] NULL ,

[counts] [int] NULL

) ON [PRIMARY]

GO

insert into testtable (testid,counts) values (1,0)

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_NULLS ON

GO

CREATE Procedure dbo.Test

as

declare @count int

begin tran TEST

select @count=counts from testtable where testid=1

update testtable set counts=@count+1

if (@@error >0) begin

rollback tran TEST

end else begin

commit tran TEST

end

GO

SET QUOTED_IDENTIFIER OFF

GO

SET ANSI_NULLS ON

GO

原文转自:http://www.ltesting.net