51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1562|回复: 1
打印 上一主题 下一主题

[原创] nRobot进行数据库的并发测试

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2008-8-26 09:48:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

第一步:创建演示程序:打开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 [email=counts=@count+1]counts=@count+1[/email]
         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
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2008-8-26 10:01:33 | 只看该作者
LS 你认错路了 这里是QTP 
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-28 10:49 , Processed in 0.061057 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表