關于Loadrunner關聯

發表于:2009-11-13來源:作者:點擊數: 標簽:loadrunnerLoadRunnerLoadrunnerloadRunner
關于Loadrunner關聯 軟件測試 一、什么時候需要關聯 1.關聯的含義 關聯(correlation):在腳本回放過程中,客戶端發出請求,通過關聯函數所定義的左右邊界值(也就是關聯規則),在 服務器 所響應的內容中查找,得到相應的值,已變量的形式替換錄制時的靜態

關于Loadrunner關聯     軟件測試

 

一、什么時候需要關聯

1.關聯的含義

        關聯(correlation):在腳本回放過程中,客戶端發出請求,通過關聯函數所定義的左右邊界值(也就是關聯規則),在服務器所響應的內容中查找,得到相應的值,已變量的形式替換錄制時的靜態值,從而向服務器發出正確的請求,這種動態獲得服務器響應內容的方法被稱作關聯。

        其實關聯也屬于一同特殊的參數化,只是與一般的參數化有些不同

        一般的參數化的參數來源于一個文件、一個定義的table、通過sql寫的一個結果集等,但關聯所獲得的參數是服務器響應請求所返回的一個符合條件的、動態的值

        2.什么時候需要做關聯

        要想弄清這個問題,我們首先要知道客戶端與服務器端的請求與響應的過程

        過程說明:

        客戶端發出獲得登錄頁面的請求

        服務器端得到該請求后,返回登錄頁面,同時動態生成一個Session Id

        當用戶輸入用戶名密碼,請求登錄時,該Session Id同時被發送到服務器端

        如果該Session Id在當前會話中有效,那么返回登錄成功的頁面,如果不正確則登錄失敗

        在第一次錄制過程中loadrunner把這個值記錄了下來,寫到了腳本中,但再次回放時,客戶端發出同樣的請求,而服務器端再一次動態的生成了Session Id,此時客戶端發出的請求就是錯誤的,為了獲得這個動態的Session Id我們這里用到了關聯。

        所以我們得出結論:

        當客戶端的某個請求是隨著服務器端的相應而動態變化的時候,我們就需要用到關聯

        當然我們在錄制腳本時應該對測試的項目進行適當的了解,知道哪些請求需要用到服務器響應的動態值,如果我們不明確那些值需要做關聯的話,我們也可以將腳本錄制兩遍,通過對比腳本的方法來查找需要關聯的部分,但并不是說兩次錄制的所有不同點都需要關聯,這個要具體情況具體分析

 

二、自動關聯 loadrunner參數化

自動關聯包含兩種機制:

        一種是loadrunner通過對比錄制和回放時服務器響應的不同,而提示用戶是否進行關聯,用戶可自己創建關聯規則,這個功能可以方便的使我們獲得需要關聯的部分,但同時也存在一定的問題,如:自動關聯所檢測到的關聯點不一定真的需要進行關聯,這要我們更具實際情況進行判斷;有些需要關聯的動態數據自動關聯無法找到,這是就需要做手動關聯

        另一種是loadrunner自帶的自動關聯規則,在錄制腳本時,會根據這些規則自動創建關聯

        自動關聯的步驟如下:

        1.開啟自動關聯選項

        剛才提到的兩種關聯機制,如果用戶想使用loadrunner自帶的關聯規則創建關聯,那么需要在【Recording Options】>【Internet Protocol】>【Correlation】中啟用關聯規則,選中“Enable correlation during recording”,當錄制這些應用系統的腳本時,VuGen會在腳本中自動建立關聯。也可以在【Recording Options】>【Internet Protocol】>【Correlation】中添加關聯規則,達到自動關聯的目的。

        如果需要在回放腳本時,loadrunner自動檢測需要關聯的部分,那么需要在【Tools】>【general options】>【Correlation】中選中“save correlation information during replay”和“show scan for correlations popup after replay of vuser”,當回放玩腳本后,會彈出Scan action for correlation窗口,進行關聯點的搜索

        2.錄制腳本

        錄制腳本的過程在這里就不多說了

        3.回放腳本

        如果錄制的腳本存在需要做關聯的部分,那么在回放腳本時會出現錯誤

        4.系統自動彈出檢測關聯對話框,或手動啟動關聯檢測對話框

        如果選擇了【Tools】>【general options】>【Correlation】中的“save correlation information during replay”和“show scan for correlations popup after replay of vuser”,那么在回放腳本后會自動彈出“Scan action for correlation”窗口,點擊“yes”進行自動查找

        如果沒有選擇上述設置,那么也可以按CTRL+F8啟動關聯自動搜索

        5.查看系統檢測出的關聯點進行關聯設置

        如果在錄制和回放中存在差異,loadrunner會在“Correlation Results”中列出需要做關聯的內容,用鼠標點擊一條需要做關聯的內容,點擊“Create Rule”,系統會顯示獲得當前數據的規則,點擊“yes”,完成規則的創建,同時查看腳本中增加了一個web_reg_save_param函數

        也可以點擊【Correlate】按鈕創建關聯,一筆一筆做,或是按下【Correlate All】讓VuGen一次就對所有的數據建立關聯。

        注意:由于Correlation Studio會找出所有有變動的數據,但是并不是所有的數據都需要做關聯,所以不建議您直接用【Correlate All】。

        6.回放腳本檢查關聯的正確性

        創建好關聯后,回放腳本檢查關聯的正確性

 

三、手動關聯

 手動關聯的過程大致如下:

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

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

  第三步:確定插入關聯的位置

  第四步:在VIEW TREE中使用web_reg_save_param函數手動建立關聯

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

  第六步:驗證關聯的正確性

  下面詳細介紹:

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

  這一步就不用多說了,相同的操作,錄制兩份,分別保存

  第二步:使用WinDiff工具協助找出需要關聯的數據

  1. 在第二份腳本中,點選VuGen的【Tools】>【Compare with Vuser…】,并選擇第一份腳本。

  2. 接著WinDiff會開啟,同時顯示二份腳本,并顯示有差異的地方。WinDiff會以一整行黃色標示有差異的腳本,并且以紅色的字體顯示真正差異的文字。(假如沒看到紅色字體,請點選【Options】>【View】>【Show Inline Differences】)。

  查看二份腳本中差異的部份,每一個差異都可能是需要做關聯的地方。

  注意:lr_thik_time部分的差異可以忽略

  找到不同的部分后,復制,然后打開Recording Log或是Generation Log,按Ctrl+F,在查找窗口中粘貼差異部分的內容,點擊查找找到后,查看該部分的信息,確認是客戶端的請求信息還是服務器回應的信息

  如果出現在$$$$$$ Request Header For Transaction With Id 3 Ended $$$$$$這個部分,那證明是客戶端發出的請求,這里是不需要做關聯的

  一般做的關聯都是出現在****** Response Header For Transaction With Id 7 ******和****** Response Body For Transaction With Id 7 ******中的部分。

  在找到這個信息后,需要記錄如下信息:

  a、記錄這個不同數據之前的內容和之后的內容

b、記錄這個不同數據出現的位置,是Header還是Body

第三步:確認插入關聯的位置

  我們在日志中找到了兩次腳本的不同點的位置,根據這個位置,我們再確定是在哪個請求之后產生的,也就是說要定位發生不同點的response是由哪個request產生的,找到了這個請求的函數位置,我們就知道要往哪里做關聯了。

  一般情況下關聯函數寫到發出請求的函數之前就可以了。

  第四步:插入關聯函數

  在插入關聯函數前,我們先介紹關聯函數web_reg_save_param

  一個web_reg_save_param函數的例子:

web_reg_save_param ("sessionid",

  "LB=Session_id:",

  "RB=;",

  "Search=Body",

  LAST);

  在這里我們只介紹幾個常用參數的含義

  語法:int web_reg_save_param(const char *ParamName, <list of Attributes>, LAST);

  參數說明:

  ParamName: 存放得到的動態內容的參數名稱

  list of Attributes: 其它屬性,包括:Notfound, LB, RB, RelFrameID, Search, ORD, SaveOffset, Convert, SaveLen。屬性值不分大小寫

  LB( Left Boundary ) : 返回信息的左邊界字串。該屬性必須有,并且區分大小寫。

  RB( Right Boundary ): 返回信息的右邊界字串。該屬性必須有,并且區分大小寫。

  Search : 返回信息的查找范圍??梢允荋eaders,Body,Noresource,All(缺省)。該屬性質可有可無。

  那么如何插入該關聯函數呢?

  1.將vugun切換到 view tree 模式下

  2.在左邊的列表中,找到在上一步發出請求的函數,點擊“右鍵”

  選擇“insert before”

  3.在彈出的“add step”對話框的“find function”中輸入“web_reg_save_param”,點擊“ok”

  在“parameter name”中輸入,關聯函數的名稱,這里最好有含義,“sessionid”

  在“left boundary”中輸入,剛才記錄下的不同點字符串的左面的幾個字符,定義左邊界,Session_id:

  在“right boundary”中輸入,剛才記錄下的不同點字符串的右面的幾個字符,定義右邊界,;

  在“search in ”中,選擇“body”

  點擊“ok”

  4.回到腳本編輯模式下,查看該函數插入是否正確

  在發出請求的函數前應該看到:

web_reg_save_param ("sessionid",

  "LB=Session_id:",

  "RB=;",

  "Search=Body",

  LAST);

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

  如發出請求的參數如下,那么將原來服務器返回的動態值使用{ sessionid } 來替換:

web_submit_form("login.php_2",

  "Snapshot=t2.inf",

  ITEMDATA,

  "Name=login", "Value=wangjin", ENDITEM,

  "Name=password", "Value=wangjin", ENDITEM,

  "Name=Session_id","Value={ sessionid } ", ENDITEM,

  "Name=Submit", "Value=Login", ENDITEM,

  EXTRARES,

  "URL=/media/images/border_bg_l.gif", ENDITEM,

  "URL=/media/images/header_bg.gif", ENDITEM,

  "URL=/media/images/th.gif", ENDITEM,

  LAST);

  第六步:驗證關聯的正確性

  回放腳本,驗證關聯的正確性。

  OK?。?!

  大功告成。

 

 

 

 

 

 

 

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97