Loadrunner關聯原理及方法


 

Loadrunner關聯原理及方法

 

建議先通讀一遍文檔再根據文檔進行實際操作選擇你認為最喜歡的方法進行關聯

關聯原理

 

(圖一)

如上圖所示

腳本錄制時我們通過登錄獲取的session ID①會被存儲在我們客戶端(瀏覽器)本地,下次請求時,我們就會使用session ID①進行訪問。

 

 

圖二

但是如圖二所示在我們回放腳本時由於是二次登錄所以我們的服務器又會產生新的session ID返回給我們這個時候我們把它標作session ID②。

但是由於腳本里面的sessionID依然是存儲的上次保存的session ID①(但是由於生成了第二次session ID②,所以服務器要的是②,不是①),所以發送給服務器的時候會提示錯誤的session ID,這樣就造成了我們登錄不上去后續的業務也就不能進行下去了

因此為了解決這些類似session ID的動態值的問題我們需要在腳本有這種動態值的時候進行相應的關聯原理就是當我們發現關聯的參數有新值產生(動態變化時),會將新值賦給參數,在如上圖就是把session ID②的值給到之前的session ID①這樣就能讓我們在回放時成功登錄

 

錄制時userSession=3.4164576868789

回放時userSession=3.4232456789322

 

怎么設置關聯

設置關聯通常有兩種方式分別為自動關聯和手動關聯

a) 自動關聯loadrunner11):

第一步、自動關聯,需要在錄制選項Recording Options里將Enable correlation during recording(啟用錄制時關聯)給勾上

 

 

第二步、錄制腳本,腳本錄制完以后回放,如果有session值的變化第一次回放會是失敗的類似下面兩圖

注意:不管是自動還是手動關聯,需要做關聯都需要先回放

 

 

 

第三步這個時候點擊快捷鍵ctrl+F8彈出如下頁面

 

 

然后,如果兩次相應的值有變化,系統會自動用黃色的標記給標識出來,同時,在下方的correlated欄也會顯示出來,然后我們只需要選中相應的值,且點擊右下角的Correlate按鈕就能夠進行關聯了

 

 

然后關聯以后可以看到value里面保存的是這個sessionID原本的值在腳本里面產生了這樣一個函數web_reg_save_param_ex(),其中ParamName是這個參數的名字,LB=后面的是sessionID的左邊界RB對應的是右邊界。至此,自動關聯就完成啦。

但是自動關聯有很大的弊端,loadrunner11的自動關聯非常不完善,比如找不到或者說所以很多情況下都需要我們自己來做手動關聯(Loadrunner12的自動關聯使用起來體驗不錯可以適當減少工作量)。

 

b) 手動關聯:

手動關聯有好多種方法這里只講一種就是通過兩次錄取腳本來查找其中變化的值然后根據找到的值進行函數編寫手動輸入左右邊界值的過程

步驟:

第一步:錄制測試腳本,錄制兩遍;

第二步:使用WinDiff工具找出兩次腳本的不同,判斷是否需要進行關聯;

第三步:使用web_reg_save_param函數手動建立關聯;

第四步:將腳本中有用到關聯的數據,以參數代替;

第一步、錄制測試腳本,錄制兩遍:

先錄制一份腳本存檔,取名為loginA,再依照相同的操作步驟與數據錄制第二份腳本並保存,取名為loginB並關閉loginB;(兩次錄制的操作步驟及使用數據最好保持一模一樣)。

 

第二步:使用WinDiff工具找出兩次腳本的不同,判斷是否需要進行關聯;

在腳本loginA中,單擊VuGen的菜單toolcompare with vuser...,並選擇loginB,如下圖所示:

 

 

 

 

然后就會看到黃色的部分都是兩個腳本不同的地方(所以盡量要保持腳本一致)。可以看到紅色部分,就是我們兩次的userSession發生了變化

然后根據選項選擇options->view->Line NumbersShow Inline Differences,如下圖

 

 

結果顯而易見,會把字符變化的部分使用紅色的標記出來,這樣就更方便觀察了。所以最終對比的結果如下所示:

 

 

第三步:使用web_reg_save_param函數手動建立關聯;

逐一檢查差異部分,每個地方都可能是需要關聯的地方但是在上圖所示的例子里我們只需要關聯的是userSession。

接着打開Recording Log(單一協議)或是Generation Log(多重協議)中找到這個值。可以在Generation Log的開頭部分使用ctrl+f快捷鍵查找發生變化的值

 

 

經過查找我們發現userSession是在Response Body For Transcation With Id 25ID25的回執報文身體部分)這里回執給客戶端的;然后,我們需要找到Id 25所對應的發送請求的路徑

 

如下圖所示,最終找到發送請求的 Request Header For Transaction With Id 25(ID25的請求報頭),它的請求地址是 “/webTours/nav.pl?in=home”;

 

 

接下來去腳本里面進行搜索最終定位在腳本的下圖部分進行的請求

 

 

所以,最終,我們只需要在web_submit_data前面編寫關聯函數就可以了如果怕有問題,可以寫在腳本最前面)。

第四步:插入關聯函數函數可以如下所示,也可以使用web_reg_save_param()函數區別在於web_reg_save_param_ex()函數可以使用正則表達式來過濾左右邊界。

web_reg_save_param_ex(

"ParamName=CorrelationParameter_1",

"LB=userSession value=",

"RB=>\n<table border",

SEARCH_FILTERS,

"Scope=All",

"RequestUrl=*/nav.pl*",

LAST);

然后在腳本里面使用ParamNmae后面的值 CorrelationParameter_1這個參數把腳本里面的變化值value=122860.759740786zDVQzfApDcQVzzzHDHQVHpQAVQHf替換掉就會變成

value={ CorrelationParameter_1}。

最后運行腳本,體驗一下關聯成功以后,腳本是否能夠運行成功!

 

注意還有兩種手動關聯的方式會比手動寫函數更簡單一點就是在確認變化的參數之后Response body里面找到變化的值以后直接采用右鍵關聯的方式進行關聯設置

其中需要做的設置有其中要進行的設置包括啟用Tree模式,點擊HTTP View,設置為Display Recorded Snapshot,然后點擊到Response Body部分

 

 

接着,找到變化的值,選中它,點擊右鍵->Create Correlation創建聯接

 

 

VGun里面選擇insert->New Step->Services->web_reg_save_param_ex,然后會出現以下的界面,分別填寫左右邊界和參數名字等關鍵參數,就能夠將關聯做好而不需要手動寫函數了。

 

 

Prameter name: 此處設置存放參數的名稱。

Left boundary: 此處設置左邊界,這里是用來填寫關聯對於數據處理的左匹配內容規則。

Match case :  默認情況下邊界是檢查Match case ,也就是檢查大小寫的。

Binary data : 如果要關聯的內容是非ASCII 字符的,需要選擇此項

Regular expression  LR11 中關聯提供了使用正則表達式的功能,但是LR11 Patch3 中取消web_reg_save_param_ex 函數對此功能的設置。

Reight boundary: 此處設置右邊界。

DFEs : 在錄制選項和回放中我們提供了DFE的功能,在關聯這里也支持DFE的數據處理。 (DFE等后面再解釋,或你自行查資料)

Ordinal :  這個關鍵字在很多函數里面都有應用,在這里可以填寫任意一個整數,也可以填All 。如果填寫數字,那么說明從返回的記錄中取出對應順序的值,而填寫All 的話將會返回所有內容。

Save Offset : 設置關聯的內容偏移量,從第幾位開始進行關聯操作。

Save Length : 關聯出來的內容所需要保存的長度。

Warm if text was not found (Default is Error) : 對於關聯的對象不存在的處理。

 

Filters : 下面的選項都是幫助關聯返回限定的,通過這些設置可以進一步減少返回的范圍。

 

 

最后介紹幾個解決亂碼問題的方法

1. 錄制完以后腳本里面有亂碼

解決方案:在VuGen里面選擇Tools->Recording Options(或者直接CTRL+F7->Advanced,更改Suppert Charset->UTF-8

注意:該方法只有改了以后再錄才會生效,錄完再改沒有任何效果!

 

 

但是如果設置為UTF-8,頁面反而是GB2312或者其他編碼,這個時候反而會產生亂碼,所以最好是確認頁面是什么編碼然后進行更改最穩妥

如何查看頁面編碼呢

  1. 查看頁面源代碼查看charset(編碼在http response header中的Content-Type)是什么格式。

 

 

bIE打開頁面后,右鍵->編碼查看瀏覽器自動選擇的編碼是什么

 

 

2.腳本回訪時出現亂碼

a. 更改運行時設置:

點擊菜單欄中的Vuser,選擇Run-time Settings(或者直接按F4鍵):

 

 

在彈出的窗口左側點擊Internet Protocol->Preferences->Advanced然后在右側窗口中點擊Options按鈕,在彈出的窗體中找到General->Convert from/to UTF-8,將其設為Yes

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM