轉帖|使用教程|編輯:蔣永|2016-12-21 14:01:29.000|閱讀 497 次
概述:DLL最重要的一個特點就擴展應用程序的特性。 再強大的工具也有不是萬能的,通過調用動態庫的方法極大地增強loadrunner的功能。當你在用loadrunner對于某些需求的測試感鞭長莫及時,這也是一種思路或方式。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
動態庫一般又叫動態鏈接庫英文為DLL,是Dynamic Link Library 的縮寫形式,DLL是一個包含可由多個程序同時使用的代碼和數據的庫,DLL不是可執行文件。動態鏈接提供了一種方法,使進程可以調用不屬于其可執行代碼的函數。函數的可執行代碼位于一個 DLL 中,該 DLL 包含一個或多個已被編譯、鏈接并與使用它們的進程分開存儲的函數。DLL 還有助于共享數據和資源。多個應用程序可同時訪問內存中單個DLL 副本的內容。DLL 是一個包含可由多個程序同時使用的代碼和數據的庫。
我們都知道,我們在編程時會調外部庫函數,因為程序的中許多代碼都是可以復用的,調用外部函數就大大的簡化了我們的工作量。代碼編寫完成后,需要編譯才能運行,在編譯的過程中,會把程序中調用的函數庫加載到內存里。這就是靜態鏈接方式。
假如有一個函數庫,A程序要使用它,然后把函數庫的內容全部加載自己的程序中。B程序也要使用這個函數庫,B程序也把函數庫的內容也全都加載到自己的程序中;這樣同樣一個東西重復出現在多個程序中,就會造成是種內存的浪費。所以,我們把被多個程序調用的函數放在一個公其的地方,就這一份。誰需要誰調用。這就是動態鏈接方式。
DLL最重要的一個特點就擴展應用程序的特性。 再強大的工具也有不是萬能的,通過調用動態庫的方法極大地增強loadrunner的功能。當你在用loadrunner對于某些需求的測試感鞭長莫及時,這也是一種思路或方式。
動態連接庫支持所有windows下的編程。 VB、Dephi、C#、C/C++等。我們這里用VC++進行演示。
下面通過VC++ 6.0中文版來創建一個動態函數。
打開VC++ 6.0,新建一個工程,這里先擇工程類型為“Win32 Dynamic-link Library”,起一個工程名稱,并選擇好存方位置。
點擊“確定”按鈕,會詢問你希望創建什么類型的DLL?
我們選擇第三項“一個可以導出某些符號的DLL工程(D)”
點擊確定,系統會給我們創建兩個文件MyDLL.h和MyDLL.cpp
分別對兩個文件進行編寫代碼
MyDLL.h
extern "C" MYDLL_API int lr_demo(int,int);
因為我們的loadrunner 的VuGen是一個C語言的解釋器與編譯器,只支持純的C語言,不支持C++ ,所以,我們要在前面加“extern "C"”將函數轉義成純的C語言。
MyDLL.cpp
MYDLL_API int lr_demo(int x ,int y) { int sum; sum = x + y; return sum; }
選擇“工具”菜單---組建[MyDLL.dll] 或直接按F7程序進行編譯。
編譯完成后,提示沒有錯誤與警告,說明我們成功了!
--------------------Configuration: MyDLL - Win32 Debug-------------------- Compiling... MyDLL.cpp Linking... Creating library Debug/MyDLL.lib and object Debug/MyDLL.exp MyDLL.dll - 0 error(s), 0 warning(s)
在loadrunnre中調用動態庫
下面打開我們的loadrunner 的VuGen ,寫入下面代碼。
Vuser_init 部分
vuser_init() { int ret; ret=lr_load_dll("C:\\Users\\Administrator\\Desktop\\loadrunner\\MyDLL\\Debug\\MyDLL.dll"); //調用我們本地的函數文件,因為單斜杠(\)會被C語言轉義,所以要用兩個斜杠(\\)來表示路徑。 if(ret!=0) return -1; return 0; }
Action部分
Action() { int sum; sum=lr_demo(1,2); //lr_demo 與我們vc++中的函數名一致 lr_output_message("this sume is :%d\n",sum); //輸出運算結果 return 0; }
運行結果:
Starting iteration 1. Starting action Action. Action.c(8): this sume is :3 Ending action Action. Ending iteration 1.
從上面的代碼看出。我們的loadrunner中并沒有對數據進行計算,真正計算的代碼是調用DLL函數庫的代碼。這樣就大大增強了loadrunner的能力,而這種方式也使我們測試結果更加準確。雖然上面代碼簡單。但這無疑是一種擴展思路。
本文轉自()
活動時間:12月1日-12月31日
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn