• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

Robot压力测试实例

发布: 2009-4-27 17:41 | 作者: 不详 | 来源: 测试时代采编 | 查看: 139次 | 进入软件测试论坛讨论

领测软件测试网

2、  利用测试工具编写脚本,直接连接数据库进行并发测试;

    这种方法可以有效的保证并发操作,而且在数据库访问程序完成即可测试,可以大大缩短测试时间,而且测试效果更好。

 

下面通过一个演示程序,演示使用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 setcounts=@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 testtable with (UPDLOCK) where testid=1。再次进行并发测试,每次的结果应该都是20。

 

    以上演示程序,仅仅演示了测试的方法。在实际的数据库并发测试中,首先要确定存在哪些并发情况、哪些数据受到并发影响,然后编写脚本,设置suite进行并发测试。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/

22/2<12

关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网