软件测试


网站首页 | 软件测试论坛 | 软件测试培训 | 软件测试博客 | 软件测试杂志 | 软件测试沙龙 | 软件测试下载 | 软件测试顾问
业界新闻 | 软件测试人才 | 软件测试技术 | 软件测试工具 | 行业软件测试 | 软件测试管理 | 软件质量专栏 | 软件开发专栏
当前位置:首页>>软件测试工具>>Rational>>正文
Robot压力测试实例
文章出处:转载 作者: 发布时间:2006-05-18

看到很多人在要这个,找到一篇,转过来给大家看看

文章的出处没有看到作者的名字,非常抱歉

脚本与被测程序有关,直接运行这个脚本是不能回放成功的(因为你没有脚本运行的环境)

文章如下

 

第一步:设置Robot

    Robot――Tools――Session Record options,Method选择API Recorder,Generater Filtering中Filtering选择Auto filtering,Select protocols只选择Socket;

第二步:录制VU脚本

    在启动的Start Application窗口中,Executable输入被测程序的客户端程序的路径和文件名,Working Directory中输入被测程序的工作路径,Program Arguments如果没有就空着。被测程序程序启动后,执行需要的操作然后关闭程序,停止录制脚本,Robot会自动生成脚本。

脚本示例:

#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;

 

SERVER = sock_connect("123001", "SERVER:2000");

 

{ INFO SERVER "SERVER"="192.168.1.12"; } /*1*/

 

set Server_connection = SERVER;

 

push Think_avg = 0;

 

sock_send

    "`45645651300000000001cc00f701000002000000c3330100000000000000000001000000"    "00000000000sdgsdfgfhjghjjdfhjhkjgfhjgfjjk000000000000hh0000000000000000000000"    "000000000000000000000000000000000000000000000100`g2222`0012313546545465431"    "`45641313000000000000000000000000000000000000`";

 

sock_nrecv ["123002"] 200;

 

sock_send    "`1321321656548745215599154654456546122132112313210000000000000001000000"    "00000000021321215665654548879654654655562000000000000000000000000000000"    "00000000000000000000000000000000000000000000012131132321213212111323213"    "`123110000000`Z2";

 

sock_recv ["123003"] "$"; /* 50 bytes */

 

sock_disconnect(SERVER);

 

pop [Think_def, Think_avg, Timeout_val, Timeout_scale];

 

}

 

这个脚本如果不能正确回放,可以将将sock_recv ["123003"] "$"; /* 50 bytes */改为

sock_nrecv ["123003"] 50; /* 50 bytes */

 

第三步:设置Suite,回放脚本

回放录制的脚本,Testmanager会自动创建Suite,如下所示:

 


    默认脚本运行一次,为了长时间运行,修改增加脚本的运行次数(最大32767),在Run properties中Iterations中设置。然后运行Suite,在Run Suite窗口中的“Number of users”上输入虚拟用户数,如200。

    第四步:观察被测服务程序的运行情况,查看有无异常。压力测试需要连续、高负载运行不少于72小时,运行完成服务程序需要无资源泄漏、无报错、无异常退出以及其他不正常情况。

数据库并发测试

数据库并发测试的必要性:

1、  与数据库连接的服务程序采用多线程同时开启多个数据库连接;

2、  与数据库连接的服务程序单线程,但是同时开启多套服务程序;

    以上两种情况均会产生对数据库的并发访问操作。数据库并发访问会导致数据库数据错误、数据库死锁等故障,需要在测试阶段进行充分测试。

 

数据库并发测试测试方法:

1、  利用测试工具模拟多个最终用户进行并发测试;

    这种测试方法的缺点:最终用户往往并不是直接连接到数据库上,而是要经过一个和多个中间服务程序,所以并不能保证访问数据库时还是并发。其次,这种测试方法需要等到客户端程序、服务端程序全部完成才能进行;

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 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 testtable with (UPDLOCK) where testid=1。再次进行并发测试,每次的结果应该都是20。

 

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


站内搜索
相关文章
◎理解Rational分析三层结构观点
◎robot函数实例讲解(二)
◎robot函数实例讲解(一)
◎IBM Rational XDE tester使用指南
◎详解 Rational ClearCase中的lost+found目录
◎关于Rational与软件质量保证
◎Robot手工编写GUI脚本如何获取对象识别方法和属性
◎rational对象脚本命令
◎Robot GUI脚本操作SQL SERVER数据库
◎GUI录制回放测试方法缺点
◎Rational中DataPool的介绍与实际应用-续(2)
◎Rational中DataPool的介绍与实际应用-续(1)
◎Rational中DataPool的介绍与实际应用
◎ClearCase迁移中的一些经验
◎IBM Rational ClearCase 视图全攻略
◎浅谈ClearQuest 2002.05 建库指南
◎Rational ClearQuest介绍
◎数据池(DATAPOOL)专题
◎使用IBM Rational PurifyPlus测试J2EE应用程序
◎使用Rational Robot测试含有数据关联的Web应用
◎IBM Rational Robot
◎用Rational Functional Tester创建随需应变的自动测试脚本
◎解决Grid自动化测试的思路
◎Base ClearCase与ClearQuest的集成
◎IBM Rational助您轻松完成基于J2EE的Web应用系统的性能测试和性能优化
◎IBM Rational 助您轻松完成自动化功能测试
◎使用 Rational PureCoverage 诊断 C/C++ 程序覆盖信息和用户环境的集成
◎Rational XDE tester使用指南
◎Rational 完成自动化功能测试
◎定制ClearQuest以通过所有者、角色或组来分隔记录
热门文章
◎IBM Rational Robot
◎Rational 完成自动化功能测试
◎Rational系列产品大概的介绍
◎Rational ClearQuest介绍
◎用Rational Functional Tester创建随需应变的自动测试脚本
◎robot函数实例讲解(一)
◎Robot手工编写GUI脚本如何获取对象识别方法和属性
◎关于Rational与软件质量保证
◎IBM Rational 助您轻松完成自动化功能测试
◎IBM Rational XDE tester使用指南
◎robot函数实例讲解(二)
◎使用 Rational PureCoverage 诊断 C/C++ 程序覆盖信息和用户环境的集成
◎rational对象脚本命令
◎GUI录制回放测试方法缺点
◎IBM Rational ClearCase 视图全攻略
◎使用IBM Rational的测试理念成功打造测试团队
◎数据池(DATAPOOL)专题
◎详解 Rational ClearCase中的lost+found目录
◎IBM Rational助您轻松完成基于J2EE的Web应用系统的性能测试和性能优化
◎Base ClearCase与ClearQuest的集成
◎理解Rational分析三层结构观点
◎浅谈ClearQuest 2002.05 建库指南
◎使用IBM Rational PurifyPlus测试J2EE应用程序
◎Rational中DataPool的介绍与实际应用
◎使用Rational的测试理念
◎Robot GUI脚本操作SQL SERVER数据库
◎ClearCase迁移中的一些经验
◎Rational中DataPool的介绍与实际应用-续(2)
◎Rational Robot 常用语句
◎Rational robot 识别对象的方法
◎使用Rational Robot测试含有数据关联的Web应用
◎Rational中DataPool的介绍与实际应用-续(1)
◎定制ClearQuest以通过所有者、角色或组来分隔记录
◎Rational XDE tester使用指南
◎浅谈RFT
◎解决Grid自动化测试的思路
◎Robot如何测试帮助c++程序员识别自定义或第三方控件
◎Rational Robot项目移植
◎用Robot写Java代理(一)
◎Rational 识别 Delphi TDBGrid的解决方法
◎如何在Robot脚本中使用Object Data
◎用Robot写Java代理(二)
◎在VU脚本中使用HTTP连接
◎使用Robot连接SQL的例子
◎使用Robot输入清单
◎Robot进行数据库的并发测试
◎使用自定义代码对数据池进行随机访问

Google提供的广告