Rational Robot壓力測試實例

發表于:2007-04-22來源:作者:點擊數: 標簽:測試rationalnbsprobot壓力
看到很多人在要這個,找到一篇,轉過來給大家看看 文章的出處沒有看到作者的名字,非常抱歉 腳本與被測程序有關,直接運行這個腳本是不能回放成功的(因為你沒有腳本運行的環境) 文章如下 第一步:設置 Robot Robot――Tools――SessionRecordoptions,Method選擇
看到很多人在要這個,找到一篇,轉過來給大家看看
文章的出處沒有看到作者的名字,非常抱歉
腳本與被測程序有關,直接運行這個腳本是不能回放成功的(因為你沒有腳本運行的環境)
文章如下

第一步:設置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
    "`45645651300000000001clearcase/" target="_blank" >cc00f701000002000000c3330100000000000000000001000000"    "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進行并發測試。

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97