Loadrunner關聯(三)手動關聯
手動關聯的過程大致如下:
第一步:錄制測試腳本,錄制二遍
第二步:使用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); |
第六步:
驗證關聯的正確性
回放腳本,驗證關聯的正確性
原文轉自:http://www.anti-gravitydesign.com