看到很多人在要這個,找到一篇,轉過來給大家看看
第一貼內容是關于CS結構的基于socked協議的腳本錄制,修改,設置,回放的
文章的出處沒有看到作者的名字,非常抱歉
腳本與被測程序有關,直接運行這個腳本是不能回放成功的(因為你沒有腳本運行的環境)
文章如下
第一步:設置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,如下所示:[attachment=1786]
默認腳本運行一次,為了長時間運行,修改增加腳本的運行次數(最大32767),在Run properties中Iterations中設置。然后運行Suite,在Run Suite窗口中的“Number of users”上輸入虛擬用戶數,如200。
第四步:觀察被測服務程序的運行情況,查看有無異常。
壓力測試需要連續、高負載運行不少于72小時,運行完成服務程序需要無資源泄漏、無報錯、無異常退出以及其他不正常情況。
ilovejolly 2006-05-20 16:43
數據庫并發測試的必要性:
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 |