LoadRunner利用ODBC編寫MySql指令碼

來源:互聯網
上載者:User

標籤:

  分類: 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
  1. #include "lrd.h"  
  2. Action()  
  3. {  
  4. static LRD_INIT_INFO InitInfo = {LRD_INIT_INFO_EYECAT};  
  5. static LRD_DEFAULT_DB_VERSION DBTypeVersion[] =  
  6. {  
  7.   {LRD_DBTYPE_ODBC, LRD_DBVERSION_ODBC_30},  
  8.   {LRD_DBTYPE_NONE, LRD_DBVERSION_NONE}  
  9. };  
  10. static LRD_CONTEXT FAR * Ctx1;  
  11. static LRD_CONNECTION FAR * Con1;  
  12. static LRD_CURSOR FAR *     Csr1;  
  13. //上面的定義的代碼如果錄製指令碼,在vdf.h中就有定義,同時還有一些其他檔案  
  14. //如果手寫指令碼,則需要手工添加,主要是定義各種變數  
  15. //查詢行數  
  16. unsigned long count=0;  
  17. //初始  
  18. lrd_init(&InitInfo, DBTypeVersion);  
  19. //開啟上下文  
  20. lrd_open_context(&Ctx1, LRD_DBTYPE_ODBC, 0, 0, 0);  
  21. //申請串連的記憶體  
  22. lrd_alloc_connection(&Con1, LRD_DBTYPE_ODBC, Ctx1, 0 /*Unused*/, 0);  
  23. //開啟串連,注意DRIVER就是上面安裝的  
  24. 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);  
  25. //開啟遊標  
  26. lrd_open_cursor(&Csr1, Con1, 0);      
  27. //Sql語句,注意1代表的意思是,立馬執行  
  28. lrd_stmt(Csr1, "select column1 from table1 where colum1 = 1", -1, 1, 0 /*None*/, 0);  
  29. //統計行數到count變數中  
  30. lrd_row_count(Csr1, &count, 0);   
  31. //列印訊息  
  32. lr_message("count= %d",count);  
  33. //先關閉遊標  
  34. lrd_close_cursor(&Csr1, 0);  
  35. //再關閉串連  
  36. lrd_close_connection(&Con1, 0, 0);  
  37. //釋放串連,和alloc相呼應,否則有記憶體泄露  
  38. lrd_free_connection(&Con1, 0 /*Unused*/, 0);  
  39. //再關閉上下文  
  40. lrd_close_context(&Ctx1, 0, 0);  
  41. //完畢,返回0  
  42. return 0;  
  43. }  

 

寫完了,自己運行一下可以查看日誌如下:

------------------------------------------------------------------------------

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指令碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.