www.testtimes.net  
 
 软件测试 -> 资讯中心 -> Rational系列
Robot进行数据库的并发测试
[ 录入者:admin | 时间:2006-12-13 15:50:21 | 作者:Spark.lee |   来源:51testing博客 ]

第一步:创建演示程序:打开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


第二步:创建测试脚本:在Robot中新建VU脚本,输入以下内容:


#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;


ser=sqlconnect("server","sa","888","192.168.0.99","sqlserver");


set Server_connection = ser;


push Think_avg = 0;


sync_point "logon";


sqlexec ["sql_1000"] "testdb..test";


sqldisconnect (ser);


}


说明:


ser=sqlconnect("server","sa","888","192.168.0.99","sqlserver")


sa为数据库用户名,888为sa密码,192.168.0.99数据库IP地址


以上三项按实际的测试数据库设置更改,其他两项不用修改


sqlexec ["sql_1000"] "testdb..test"


testdb为新建存储过程test所在的数据库,按实际的数据库修改


第三步:执行测试:运行上一步创建的脚本(运行时自动创建Suite),在Run Suite窗口中的“Number of users”上输入20。运行完脚本,打开数据库查看counts的数值。把counts值改为零多次运行脚本,观察每次运行后counts的结果。


测试说明


(1)、测试示例程序的目的是,存储过程test每执行一次,表testtable中的counts字段增加一;


(2)、第三步的测试可以发现每次执行后counts结果并不相同,而且不等于20,这说明这个程序是在并发时是问题的。


(3)、将存储过程中的select @count=counts from testtable where testid=1修改为select @count=counts from test


此文除此51testing博客,转载请注明出处
原始链接:http://blog.51testing.com/html/26/84226_itemid_1180.html

】【打印发表】【续发】【/】【关闭】【评论】 
 
  本文相关评论
  欢迎发表你的观点:
你的称呼:
评论内容:
 
 
  首 页 - 软件测试论坛 - 软件测试博客 - Testtimes软件测试 - 联系我们
  版权所有(C)2005-2008 北京Testtimes软件测试培训中心
北京市学院路30号科群大厦西楼607室 京ICP证06066759号
        在线咨询

  点击关闭浮窗