Robot進行數據庫的并發測試

發表于:2008-10-23來源:作者:點擊數: 標簽:數據庫robotRobot
第一步:創建演示程序:打開 SQL SERVER查詢分析器,在SQL SERVER 測試 數據庫 中執行下列腳本(腳本執行操作:創建表testtable,并插入一條記錄;創建存儲過程test): if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[Test]') and

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

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97