版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、LoadRunner 下 DLL 的調(diào)用點擊數(shù):21 更新時間:2007 年 03 月 18 日作者:本站編輯來源:互聯(lián)網(wǎng)場景介紹最近在做類似于的通信工具的性能測試時發(fā)現(xiàn)了一些問題,現(xiàn)總結(jié)出來與大家一下。希望大家在使用LoadRunner 時不僅僅停在只是錄制/,而全面的編程技術(shù),解決復(fù)雜場景。本次測試中碰到是這樣的,在消息的傳送過程中遇到了 DEC 加密的過程,LoadRunner 錄制到的全是加密的消息,比如我錄制了某一個用戶的登陸,發(fā)送消息,退出,但由于是加密的,只能單個用戶使用但如果并發(fā)多少個用戶就存在很多問題,最直接的一個問題就是用戶名是加密的,是加密的,當然你可以說讓程序那里注掉加
2、密的代碼進行明碼的測試,當然也是一種辦法。但程序組提出了要使用更真實的方法來模擬,這時就必需使用下面介紹的方法。一開始是直接把 API 移植到 LoadRunner 中來,不過由于加密算法異常復(fù)雜,有幾層循環(huán),而是解釋執(zhí)行的,進行一次加密運算可能需要好幾分鐘,當然在里可以把本身運行的時間去掉,但這樣做顯然沒有直接調(diào)用 DLL 來的效率高。由于程序組比較忙,所以無法提供 DLL 給測試,所以測試組完成了 DLL的編寫,并在LoadRunner 中調(diào)用成功,高效的完成了用戶信息加密,參數(shù)關(guān)聯(lián),成功的完成了測試。動態(tài)庫的編寫在 Visual C+6.0 開發(fā)環(huán)境下,打開 FileNewProject
3、 選項,可以選擇 Win32 Dynamic-Link Library 建立一個空的 DLL 工程。Win32 Dynamic-Link Library 方式創(chuàng)建-MFC DLL 動態(tài)庫每一個 DLL 必須有一個用C 編寫的應(yīng)用程序一樣,必須有一個WAIN 函數(shù)一樣點,這就象在-MFC DLL 中DllMain 是一個缺省的函數(shù),你不需要編寫自己的 DLL函數(shù),用這個缺省的外的內(nèi)存或資源函數(shù)就能使動態(tài)庫被調(diào)用時得到正確的初始化。如果應(yīng)用程序的 DLL 需要分時,或者說需要對每個進程或線程初始化和清除操作時,需要在相應(yīng)的 DLL 工程的.CPP 文件中對 DllMain()函數(shù)按照下面的格式書寫
4、。BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpswitch( ul_reason_for_call )case DLL_PRObreak;S_ATTACH:case DLL_THREAD_ATTACH:break;case DLL_THREAD_DETACH:break;case DLL_PRO break;default: break;return TRUE;S_DETACH:參數(shù)中,hMoudle 是動態(tài)庫被調(diào)用時所傳遞來的一個指向自己的句柄(實際上,它是指向_DGROUP 段的一個選擇符);
5、ul_reason_for_call 是一個說明動態(tài)庫被調(diào)原因的標志,當進程或線程裝入或卸載動態(tài)庫的時候,操作系統(tǒng)調(diào)用函數(shù),并說明動態(tài) 庫被調(diào)用的原因,它所有的可能值為: DLL_PRODLL_PROS_ATTACH:進 程 被 調(diào) 用 、 DLL_THREAD_ATTACH:線 程 被 調(diào) 用 、S_DETACH: 進程被停止、DLL_THREAD_DETACH: 線程被停止;lp為保留參數(shù)到此為止,DLL 的函數(shù)或變量了。函數(shù)已經(jīng)寫了,剩下部分的實現(xiàn)也不難,你可以在 DLL 工程中加入你所想要輸出的已經(jīng)知道 DLL 是包含若干個函數(shù)的庫文件,應(yīng)用程序使用 DLL 中的函數(shù)之前,應(yīng)該先導出這
6、些函數(shù)以便供給應(yīng)用程序使用。要導出這些函數(shù)有兩種方法,一是在定義函數(shù)時使用導出關(guān)鍵字_declspec(dllexport),另外法是在創(chuàng)建 DLL 文件時使用模塊定義文件.Def。需要讀者注意的是在使用第法的時候,不能使用 DEF 文件。下面通過兩個例子來說明如何使用這兩種方法創(chuàng)建 DLL 文件。1)使用導出函數(shù)關(guān)鍵字_declspec(dllexport)創(chuàng)建 MyDll.dll,該動態(tài)庫中有兩個函數(shù),分別用來實現(xiàn)得到兩個數(shù)的最大和最小數(shù)。在MyDll.h 和MyDLL.cpp 文件中分別輸入如下原代碼:/MyDLL hextern C _declspec(dllexport)desini
7、t(mode);extern C _declspec(dllexport) void desdone(void);extern C _declspec(dllexport) void des_setkey(char *subkey, char *key); extern C _declspec(dllexport) void endes(char *block, char *subkey); extern C _declspec(dllexport) void dedes(char *block, char *subkey);/MyDll.cpp #includeMyDll h/這里我用了比較
8、大小的函數(shù)代替了我要實現(xiàn)的函數(shù)desinit(a,b)if(a=b)return a; elsereturn b;desdone(a,b)if(a=b)return b; elsereturn a;該動態(tài)庫編譯成功后,打開 MyDll 工程中的 debug 目錄,可以看到 MyDll.dll、MyDll.lib 兩個文件。LIB 文件中包含 DLL 文件名和 DLL 文件中的函數(shù)名等,該LIB 文件只是對應(yīng)該 DLL 文件的映像文件,與 DLL 文件中,LIB 文件的長度要小的多,在進行隱式DLL 時要用到它。讀者可能已經(jīng)注意到在MyDll h 中有關(guān)鍵字extern C,它可以使其他編程語言
9、你編寫的 DLL 中的函數(shù)。LoadRunner 調(diào)用動態(tài)庫上面完成動態(tài)庫開發(fā)后,下面就介紹動態(tài)庫如何被LoadRunner 進行調(diào)用,其實也是很簡單的。在LoadRunner 中的 DLL 調(diào)用有局部調(diào)用與全局調(diào)用,下面介紹局部調(diào)用。首先 編譯的 DLL 放在路徑下面,這里是 MyDll.dll,MyDll.lib. 然后在 Action 中使用lr_load_dll(MYDll.dll),此函數(shù)可以把 DLL 加載進來,讓你調(diào)用 DLL 里面的函數(shù),而 DLL 中的運算是編譯級的,所以效率極高,代碼樣例如下:#include lrs h Action()/nRet = 6; char sr
10、ckey129;memset(srckey, a, 128); lr_message(lr_eval_string(srckey); lr_load_dll(MyDLL.dll);nRet = desinit(5,8);lr_message(比較的結(jié)果為%d,nRet); return 0;運行結(jié)果比較的結(jié)果為 8全局的動態(tài)庫的調(diào)用則需要修改 mdrv.dat,路徑在 LoadRunner 的安裝目錄下面(LoadRunner/datdirectory);在里面修改如例: WinSock ExtPriorityType=protocol WINNT_EXT_LIBS=wsrun32.dll W
11、IN95_EXT_LIBS=wsrun32.dll LINUX_EXT_LIBS=liblrs.soSOLARIS_EXT_LIBS=liblrs.soHPUX_EXT_LIBS=liblrs.sl AIX_EXT_LIBS=liblrs.so LibCfgFunc=winsock_exten_conf UtilityExt=lrun_api ExtMessageQueue=0 ExtCmdLineOverwrite=-WinInet No ExtCmdLineConc=-UsingWinInet NoWINNT_DLLS=user_dll1.dll, user_dll2.dll, ./最后一
12、行是加載你需要的DLL這樣你就可以在 LR 中隨意的調(diào)用程序員寫的 API 函數(shù),進行一些復(fù)雜的數(shù)據(jù)加密,準備的一些操作,進行復(fù)雜的測試。同時如果你覺的有大量高復(fù)雜的運算也可以放在 DLL 中進行封裝,以提高效率LoadRunner 下 DLL 的調(diào)用點擊數(shù):21 更新時間:2007 年 03 月 18 日作者:本站編輯來源:互聯(lián)網(wǎng)場景介紹最近在做類似于的通信工具的性能測試時發(fā)現(xiàn)了一些問題,現(xiàn)總結(jié)出來與大家一下。希望大家在使用LoadRunner 時不僅僅停在只是錄制/,而全面的編程技術(shù),解決復(fù)雜場景。本次測試中碰到是這樣的,在消息的傳送過程中遇到了 DEC 加密的過程,LoadRunner
13、錄制到的全是加密的消息,比如我錄制了某一個用戶的登陸,發(fā)送消息,退出,但由于是加密的,只能單個用戶使用但如果并發(fā)多少個用戶就存在很多問題,最直接的一個問題就是用戶名是加密的,是加密的,當然你可以說讓程序那里注掉加密的代碼進行明碼的測試,當然也是一種辦法。但程序組提出了要使用更真實的方法來模擬,這時就必需使用下面介紹的方法。一開始是直接把 API 移植到 LoadRunner 中來,不過由于加密算法異常復(fù)雜,有幾層循環(huán),而是解釋執(zhí)行的,進行一次加密運算可能需要好幾分鐘,當然在里可以把本身運行的時間去掉,但這樣做顯然沒有直接調(diào)用 DLL 來的效率高。由于程序組比較忙,所以無法提供 DLL 給測試,
14、所以測試組完成了 DLL的編寫,并在LoadRunner 中調(diào)用成功,高效的完成了用戶信息加密,參數(shù)關(guān)聯(lián),成功的完成了測試。動態(tài)庫的編寫在 Visual C+6.0 開發(fā)環(huán)境下,打開 FileNewProject 選項,可以選擇 Win32 Dynamic-Link Library 建立一個空的 DLL 工程。Win32 Dynamic-Link Library 方式創(chuàng)建-MFC DLL 動態(tài)庫每一個 DLL 必須有一個點,這就象用C 編寫的應(yīng)用程序一樣,必須有一個WAIN 函數(shù)一樣在-MFC DLL 中DllMain 是一個缺省的函數(shù),你不需要編寫自己的 DLL函數(shù),用這個缺省的函數(shù)就能使動
15、態(tài)庫被調(diào)用時得到正確的初始化。如果應(yīng)用程序的 DLL 需要分外的內(nèi)存或資源時,或者說需要對每個進程或線程初始化和清除操作時,需要在相應(yīng)的 DLL 工程的.CPP 文件中對 DllMain()函數(shù)按照下面的格式書寫。BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpswitch( ul_reason_for_call )case DLL_PRObreak;S_ATTACH:case DLL_THREAD_ATTACH:break;case DLL_THREAD_DETACH:break;case DLL_
16、PRO break;default: break;return TRUE;S_DETACH:參數(shù)中,hMoudle 是動態(tài)庫被調(diào)用時所傳遞來的一個指向自己的句柄(實際上,它是指向_DGROUP 段的一個選擇符);ul_reason_for_call 是一個說明動態(tài)庫被調(diào)原因的標志,當進程或線程裝入或卸載動態(tài)庫的時候,操作系統(tǒng)調(diào)用函數(shù),并說明動態(tài) 庫被調(diào)用的原因,它所有的可能值為: DLL_PRODLL_PROS_ATTACH:進 程 被 調(diào) 用 、 DLL_THREAD_ATTACH:線 程 被 調(diào) 用 、S_DETACH: 進程被停止、DLL_THREAD_DETACH: 線程被停止;lp為
17、保留參數(shù)到此為止,DLL 的函數(shù)或變量了。函數(shù)已經(jīng)寫了,剩下部分的實現(xiàn)也不難,你可以在 DLL 工程中加入你所想要輸出的已經(jīng)知道 DLL 是包含若干個函數(shù)的庫文件,應(yīng)用程序使用 DLL 中的函數(shù)之前,應(yīng)該先導出這些函數(shù)以便供給應(yīng)用程序使用。要導出這些函數(shù)有兩種方法,一是在定義函數(shù)時使用導出關(guān)鍵字_declspec(dllexport),另外法是在創(chuàng)建 DLL 文件時使用模塊定義文件.Def。需要讀者注意的是在使用第法的時候,不能使用 DEF 文件。下面通過兩個例子來說明如何使用這兩種方法創(chuàng)建 DLL 文件。1)使用導出函數(shù)關(guān)鍵字_declspec(dllexport)創(chuàng)建 MyDll.dll,
18、該動態(tài)庫中有兩個函數(shù),分別用來實現(xiàn)得到兩個數(shù)的最大和最小數(shù)。在MyDll.h 和MyDLL.cpp 文件中分別輸入如下原代碼:/MyDLL hextern C _declspec(dllexport)desinit(mode);extern C _declspec(dllexport) void desdone(void);extern C _declspec(dllexport) void des_setkey(char *subkey, char *key);extern C _declspec(dllexport) void endes(char *block, char *subkey
19、); extern C _declspec(dllexport) void dedes(char *block, char *subkey);/MyDll.cpp #includeMyDll h/這里我用了比較大小的函數(shù)代替了我要實現(xiàn)的函數(shù)desinit(a,b)if(a=b)return a; elsereturn b;desdone(a,b)if(a=b)return b; elsereturn a;該動態(tài)庫編譯成功后,打開 MyDll 工程中的 debug 目錄,可以看到 MyDll.dll、MyDll.lib 兩個文件。LIB 文件中包含 DLL 文件名和 DLL 文件中的函數(shù)名等,該
20、LIB 文件只是對應(yīng)該 DLL 文件的映像文件,與 DLL 文件中,LIB 文件的長度要小的多,在進行隱式DLL 時要用到它。讀者可能已經(jīng)注意到在MyDll h 中有關(guān)鍵字extern C,它可以使其他編程語言你編寫的 DLL 中的函數(shù)。LoadRunner 調(diào)用動態(tài)庫上面完成動態(tài)庫開發(fā)后,下面就介紹動態(tài)庫如何被LoadRunner 進行調(diào)用,其實也是很簡單的。在LoadRunner 中的 DLL 調(diào)用有局部調(diào)用與全局調(diào)用,下面介紹局部調(diào)用。首先 編譯的 DLL 放在路徑下面,這里是 MyDll.dll,MyDll.lib. 然后在 Action 中使用lr_load_dll(MYDll.dll),此函數(shù)可以把 DLL 加載進來,讓你調(diào)用 DLL 里面的函數(shù),而 DLL 中的運算是編譯級的,所以效率極高,代碼樣例如下:#include lrs h Action()/nRet = 6; char srckey129;memset(srckey, a,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年大學工學(建筑材料)試題及答案
- 2025年中職生態(tài)環(huán)境數(shù)智化監(jiān)測技術(shù)(數(shù)據(jù)處理基礎(chǔ))試題及答案
- 2025年大學心理健康(職業(yè)規(guī)劃)試題及答案
- 2025年高職(農(nóng)業(yè)水利工程)節(jié)水灌溉技術(shù)試題及答案
- 2025年大學軌道交通信號與控制(系統(tǒng)設(shè)計)期末試題
- 2025年大學大四(水利水電工程)水利水電綜合試題及答案
- 2025年中職應(yīng)用黑山語(日常黑語交流)試題及答案
- 2025年大學水利水電工程(水利工程監(jiān)理)試題及答案
- 2025年高職攝影攝像技術(shù)(商業(yè)攝影)試題及答案
- 2025年中職服裝工藝(工藝優(yōu)化)試題及答案
- 腦缺血-急性腦梗死的影像學表現(xiàn)教案
- 第八單元《詞語積累與詞語解釋》公開課一等獎創(chuàng)新教學設(shè)計統(tǒng)編版高中語文必修上冊-1
- 2025黨史軍史知識試題及答案
- 醫(yī)保DIP付費知識培訓課件
- 私立醫(yī)院的營銷方案與管理
- 【語文】上海市楊浦區(qū)打虎山路第一小學小學二年級上冊期末試卷(含答案)
- 集水井施工方案
- 大學美育課件 第十二章 生態(tài)美育
- 美國技術(shù)貿(mào)易壁壘對我國電子產(chǎn)品出口的影響研究-以F企業(yè)為例
- 2025至2030中國電站汽輪機行業(yè)項目調(diào)研及市場前景預(yù)測評估報告
- MK6油霧檢測器(中文)1
評論
0/150
提交評論