LoadRunner利用ODBC編寫MySql指令碼

2021-09-08 11:18:48 字數 2701 閱讀 1877

分類: 4.軟體設計/架構/測試舉報

loadrunner

mysql

指令碼資料庫

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的(這是必須的,否則錄不上),這很不好找。我找了乙個,還不好用,叫「通用資料庫查詢分析器」。 。

6、run load tests的時候,如果失敗,看看license是否支援,用global-100的license就可以了。

錄製的指令碼是慘不忍睹(又臭又長),所以,我試著手工編寫了乙個簡單的,每行都有注釋,如果要高階的,請參考loadrunner的幫助文件。

[cpp]view plain

copy

#include "lrd.h"  

action()  

;  static lrd_default_db_version dbtypeversion =  

,    

};  

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表示查詢成功了

交叉編譯odb

libodb 2.4.0 odb原始碼 libodb sqlite 2.4.0 sqlite 支援外掛程式原始碼 cd到原始碼根目錄 configure host arm linux gnueabihf 指定平台 cxx arm linux gnueabihf g 指定g cc arm linux ...

odb訪問mysql資料庫(odb的簡單用法2)

1.odb事務 odb事務有如下介面 namespace odb 事務脫離作用域的時候會被自動回滾。如果我們試圖提交或者回滾乙個已經結束的事務會丟擲異常,odb transaction already finalized。我們要盡量在事務內部宣告變數,以避免事務回滾時應用程式和資料庫中物件不一致的問...

ODB庫安裝使用簡介

編譯libodb vc10.sln 編譯libodb sqlite vc10.sln 注意 編譯example專案的access sqlite vc10工程 ifndef person hxx define person hxx include include pragma db object cl...