使用软件测试工具Robot对数据库进行并发测试

发表于:2009-09-27来源:作者:点击数: 标签:软件测试数据库工具robotRobot
使用软件 测试 工具 Robot 对 数据库 进行并发测试 第一步:创建演示程序:打开 SQL SERVER查询分析器,在SQL SERVER测试数据库中执行下列脚本(脚本执行操作:创建表testtable ,并插入一条记录;创建存储过程test): if exists (select * from dbo.sysobj

使用软件测试工具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
 
第二步:创建测试脚本:在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.ltesting.net