man16181 发表于 2008-8-26 09:48:13

nRobot进行数据库的并发测试


第一步:创建演示程序:打开SQL SERVER查询分析器,在SQL SERVER测试数据库中执行下列脚本(脚本执行操作:创建表testtable,并插入一条记录;创建存储过程test):
      if exists (select * from dbo.sysobjects where id = object_id(N'.') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
       drop procedure .
       GO
       if exists (select * from dbo.sysobjects where id = object_id(N'.') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
       drop table .
       GO
       CREATE TABLE . (
             NULL ,
             NULL
       ) ON
       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
       {
       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

lingxin5013 发表于 2008-8-26 10:01:33

LS 你认错路了 这里是QTP 
页: [1]
查看完整版本: nRobot进行数据库的并发测试