標籤:
分類: 4.軟體設計/架構/測試 2010-01-08 17:48 5635人閱讀 評論(3) 收藏 舉報 loadrunnermysql指令碼資料庫sqlserver測試
最近做了幾周的LoadRunner測試,有一些心得,記錄下來,以便以後尋找。
LoadRunner測試資料庫是類比用戶端去串連資料庫伺服器,因此,需要協議(或者說驅動的支援)。LoadRunner本身直接支援Oracle、SqlServer資料庫,這兩個資料庫直接選擇相應的協議就可以錄製指令碼。而MySql資料庫只能利用ODBC協議來錄製(編寫)指令碼,所以必須要MySql的ODBC驅動,和支援ODBC的查詢分析器(錄指令碼需要,自己編寫就不需要)。
1、首先要安裝MySql的ODBC驅動,MyODBC 3.51.11 WIN。
2、從“控制台”開啟“資料來源ODBC”,如果沒有找到(我的電腦上就沒有找到)。到案頭,建立一個捷徑,目標位置:%SystemRoot%/system32/odbcad32.exe。
3、開啟ODBC管理程式,添加的驅動為“MySQL ODBC 3.51 Driver”,然後填寫一些ip、使用者名稱、密碼之類的,測試一下就可以了。(這一步其實是非必須的,如果寫串連串,就不需要,如果要用DNS資料庫名,就需要)
4、安裝一個查詢分析器,這個查詢分析器必須是支援ODBC 的(這是必須的,否則錄不上),這很不好找。我找了一個,還不好用,叫“通用資料庫查詢分析器”。http://www.onlinedown.net/soft/31366.htm 。
5、啟動LoadRunner,Create Scripts;Application type選擇Win32 Applications;Program record選擇第4步的查詢分析器位置,記得查詢分析器選擇“ODBC”,才能錄得上;錄完了,運行一下是否正常。
6、Run Load Tests的時候,如果失敗,看看License是否支援,用global-100的License就可以了。
錄製的指令碼是慘不忍睹(又臭又長),所以,我試著手工編寫了一個簡單的,每行都有注釋,如果要進階的,請參考LoadRunner的協助文檔。
[cpp] view plaincopy
- #include "lrd.h"
- Action()
- {
- static LRD_INIT_INFO InitInfo = {LRD_INIT_INFO_EYECAT};
- static LRD_DEFAULT_DB_VERSION DBTypeVersion[] =
- {
- {LRD_DBTYPE_ODBC, LRD_DBVERSION_ODBC_30},
- {LRD_DBTYPE_NONE, LRD_DBVERSION_NONE}
- };
- static LRD_CONTEXT FAR * Ctx1;
- static LRD_CONNECTION FAR * Con1;
- static LRD_CURSOR FAR * Csr1;
- //上面的定義的代碼如果錄製指令碼,在vdf.h中就有定義,同時還有一些其他檔案
- //如果手寫指令碼,則需要手工添加,主要是定義各種變數
- //查詢行數
- unsigned long count=0;
- //初始
- lrd_init(&InitInfo, DBTypeVersion);
- //開啟上下文
- lrd_open_context(&Ctx1, LRD_DBTYPE_ODBC, 0, 0, 0);
- //申請串連的記憶體
- lrd_alloc_connection(&Con1, LRD_DBTYPE_ODBC, Ctx1, 0 /*Unused*/, 0);
- //開啟串連,注意DRIVER就是上面安裝的
- lrd_open_connection(&Con1, LRD_DBTYPE_ODBC, "", "","", "DRIVER=MySQL ODBC 3.51 Driver;UID=root;PWD=123456;SERVER=192.168.1.99;DATABASE=TestDB", Ctx1, 1, 0);
- //開啟遊標
- lrd_open_cursor(&Csr1, Con1, 0);
- //Sql語句,注意1代表的意思是,立馬執行
- lrd_stmt(Csr1, "select column1 from table1 where colum1 = 1", -1, 1, 0 /*None*/, 0);
- //統計行數到count變數中
- lrd_row_count(Csr1, &count, 0);
- //列印訊息
- lr_message("count= %d",count);
- //先關閉遊標
- lrd_close_cursor(&Csr1, 0);
- //再關閉串連
- lrd_close_connection(&Con1, 0, 0);
- //釋放串連,和alloc相呼應,否則有記憶體泄露
- lrd_free_connection(&Con1, 0 /*Unused*/, 0);
- //再關閉上下文
- lrd_close_context(&Ctx1, 0, 0);
- //完畢,返回0
- return 0;
- }
寫完了,自己運行一下可以查看日誌如下:
------------------------------------------------------------------------------
Starting iteration 1.
Starting action Action.
Action.c(8): lrd_open_connection: User="", Server=""
Action.c(11): lrd_stmt: select column1 from table1 where colum1 = 1;
count= 1
Action.c(16): lrd_close_connection: User="", Server=""
Ending action Action.
------------------------------------------------------------------------------
count = 1表示查詢成功了
==========================================================================
LoadRunner利用ODBC編寫MySql指令碼