国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
LoadRunner測試過程中調(diào)用dll文件的制作與使用
在Windows操作系統(tǒng)中使用DLL有很多優(yōu)點(diǎn),最主要的一點(diǎn)是多個(gè)應(yīng)用程序、甚至是不同語言編寫的應(yīng)用程序可以共享一個(gè)DLL文件,真正實(shí)現(xiàn)了資源"共享",大大縮小了應(yīng)用程序的執(zhí)行代碼,更加有效的利用了內(nèi)存;使用DLL的另一個(gè)優(yōu)點(diǎn)是DLL文件作為一個(gè)單獨(dú)的程序模塊,封裝性、獨(dú)立性好,在軟件需要升級(jí)的時(shí)候,開發(fā)人員只需要修改相應(yīng)的DLL文件就可以了,而且,當(dāng)DLL中的函數(shù)改變后,只要不是參數(shù)的改變,程序代碼并不需要重新編譯。這在編程時(shí)十分有用,大大提高了軟件開發(fā)和維護(hù)的效率。

       在LR下也可以直接調(diào)用動(dòng)態(tài)鏈接庫文件,針對(duì)一些使用LR腳本編寫比較煩瑣的方法可以考慮此方法(比如各種加解密算法的實(shí)現(xiàn),數(shù)據(jù)庫的操作等),并能夠使測試腳本簡單明了。鑒于此,本人初次嘗試了如何制作DLL文件并在LR中使用。

       1、dll文件的制作

       在Visual C++6.0開發(fā)環(huán)境下,打開File-New-Project選項(xiàng),可以選擇Win32 Dynamic-Link Library來創(chuàng)建一個(gè)名為dllfortest的空的dll工程(這只是方法之一)。

       在該項(xiàng)目中新建一個(gè)dllfortest.h和dllfortest.cpp文件,文件的內(nèi)容如下:

//dllfortest.h

extern "C" _declspec(dllexport) int Max(int a, int b, int c);

extern "C" _declspec(dllexport) int Min(int a, int b, int c);

 

//dllfortest.cpp  包含一個(gè)計(jì)算三個(gè)整數(shù)中最大值和最小值的方法

#include"dllfortest.h"

int Max(int a, int b, int c)

{

       int Res;

       Res = (a>b? a:b)>c? (a>b? a:b):c;

       return Res;

}

int Min(int a, int b, int c)

{

       int Res;

       Res = (a>b? b:a)>c? c:(a>b? b:a);

       return Res;

}

該動(dòng)態(tài)鏈接庫編譯成功后,打開dllfortest工程目錄下的debug目錄下,可以看到生成了一個(gè)dllfortest.dll文件,這就是我們想要的文件。

       2、dll文件在LR中的調(diào)用

       打開LR VU Generator,選擇C Vuser協(xié)議(或其他支持C的協(xié)議),進(jìn)入編輯界面。Action部分如下所示:

Action()

{

       lr_load_dll("dllfortest.dll");

       lr_message("Max Result is %d",Max(100,200,67));

       lr_message("Min Result is %d",Min(55,97,63));

       return 0;

}

將dllfortest.dll文件復(fù)制到腳本所在的目錄(如果不復(fù)制的話,lr_load_dll的參數(shù)應(yīng)該寫成dll文件的絕對(duì)路徑),如果編譯沒有報(bào)錯(cuò)的話,就可以直接運(yùn)行了。

運(yùn)行結(jié)果如下:

Virtual User scrīpt started

Starting action vuser_init.

Ending action vuser_init.

Running Vuser...

Starting iteration 1.

Starting action Action.

Max Result is 200

Min Result is 55

Ending action Action.

Ending iteration 1.

Ending Vuser...

Starting action vuser_end.

Ending action vuser_end.

Vuser Terminated.

 

如果在腳本中用到了DLL文件中并不存在的方法名時(shí),編譯也能通過,但是運(yùn)行時(shí)LR會(huì)報(bào)錯(cuò),提示不存在該方法

比如我們在腳本中添加一句:

       lr_message("Min Result is %d",Sum(55,97,63));  //Sum方法并不存在

運(yùn)行時(shí)錯(cuò)誤信息如下:

Action.c(7): Error: C interpreter run time error: Action.c (7):  Error -- Unresolved symbol : Sum.

Action.c(7): Notify: CCI trace: Compiled_code(0): Action()

.

這個(gè)例子并沒有體現(xiàn)出DLL文件調(diào)用的優(yōu)點(diǎn),因?yàn)檎{(diào)用的方法在LR中用C直接就可以完成,但涉及到LR中完不成的任務(wù)時(shí),或許dll文件的作用就體現(xiàn)出來了

example:
LoadRunner提供了功能強(qiáng)大的API集合,足夠應(yīng)付大多數(shù)性能測試的需求。但在某些情況下,這些API仍然有覆蓋不到的地方。例如,我們有一個(gè)WEB應(yīng)用,該應(yīng)用有一個(gè)頁面輸入用戶的信息,為了安全起見,用戶輸入的信息在提交之前都要先進(jìn)行加密處理,加密處理通過本地的COM組件實(shí)現(xiàn)。

對(duì)這個(gè)要求而言,LoadRunner的現(xiàn)有API不能提供直接支持,因?yàn)長oadRunner在錄制腳本時(shí)只錄制數(shù)據(jù)交互,因此,COM的加密處理過程是不能錄制下來的。在LoadRunner的腳本中,可能只有類似以下的語句描述了這個(gè)過程:

…………
web_url("userinfo",
    "URL=http://testweb/userinfo.aspx",
    "TargetFrame=",
    "Resource=0",
     "Referer=",
     LAST);

web_submit_form("login ",
"Snapshot=t4.inf",
ITEMDATA,
"Name=username", "Value=4e92Sh6d394g", ENDITEM,
"Name=password", "Value=932A2hf34U18", ENDITEM,
LAST);
…………

從腳本可以看到,輸入的數(shù)據(jù)是加密后的數(shù)據(jù),但LR沒有錄制到加密過程。

假設(shè)加密函數(shù)所在的DLL名為security.dll,用于加密的函數(shù)名為encode,則一種可能的對(duì)腳本的修改方法如下代碼所示。
…………
char *encode_username, *encode_password, *orgin_username, *orgin_password;
char* uservalue, passvalue;
int ret;
……
web_url("userinfo",
     "URL=http://testweb/userinfo.aspx",
     "TargetFrame=",
     "Resource=0",
      "Referer=",
      LAST);

orgin_username = lr_eval_string(“{ username }”); //獲取參數(shù)的值
orgin_password = lr_eval_string(“{ password }”);

ret = lr_load_dll(“security.dll”);   //加載DLL庫

encode(origin_username, encode_username);  //調(diào)用encode函數(shù)
encode(origin_password, encode_password);


sprintf(uservalue, “Value=%s”, encode_username);
sprintf(passvalue, “value=%s”, encode_password);

web_submit_form("login ",
  "Snapshot=t4.inf",
  ITEMDATA,
  "Name=username", uservalue, ENDITEM,
  "Name=password", passvalue, ENDITEM,
  LAST);


注意:有些腳本錄制需要相應(yīng)的patch的支持,如錄制DotNet編寫的應(yīng)用程序你需要把lr78安裝盤\ Patches\Trap_for_.net_patch文件夾中trpfnc32.32dll拷貝到loadrunner\bin路徑下,才能正常工作。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
LoadRunner11 中Java虛擬用戶性能測試
LoadRunner訪問Mysql數(shù)據(jù)庫
LoadRunner 性能測試腳本
360doc個(gè)人圖書館
LoadRunner常見問題整理
性能測試筆試大接觸(上
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服