本篇來說一下LR之關聯
這篇關於關聯闡述的很好,很全面:http://blog.163.com/pengjintaogz@126/blog/static/1622990682014630105026532/
下面我來寫下自己的理解
一、什么是關聯?
在腳本回放過程中,客戶端發出請求,通過關聯函數定義左右邊界(也就是關聯規則),在服務器所響應的內容中查找,得到相應的值,以變量的形式替換錄制時的靜態值,從而向服務器發出正確的請求,這種動態獲得服務器響應內容的方法稱作關聯。
拿登錄來說,錄制登陸腳本,會話會產生一個唯一的session ID,但是如果回放腳本的話,服務器會重新返回一個該次會話的session ID,我們session ID如果不更新成新的session ID的話就沒辦法登錄成功。就像1年前你拿了A鑰匙開了A門,1年后所更新了,鑰匙還是原來的,即使這個人還不是你,也打不開。
二、關聯函數
web_reg_save_param("session_name", //參數名
"LB=name=userSession value=", //動態數據的左邊界
"RB=>", //動態數據的右邊界
"Ord=1", //動態數據的個數,1、2、3、4、5……all等,此處代表獲取第一個Session
LAST);
三、如何關聯?
1.自動關聯(錄制過程中關聯)
步驟一:定位uesrSession左右邊界。
(1)首先我們現在錄制一個腳本,保證錄制選項滿足以下要求:常規——錄制——基於HTML的腳本——僅包含明確的URL腳本——確定;
(2)更改日志顯示:Vuser——運行時設置——擴展日志,勾選服務器返回數據——確定
(3)此時我們來回放腳本就可以在日志中看到服務器返回的userSession了(搜索userSession方法,鼠標定位在日志輸出欄,ctrl+F輸入關鍵字即可)
<input type=hidden name=userSession value=122171.620494127zcitcAcpHcQVzzzHDHHAfpcVzDHf>\n
(4)此時我們就里就定位了userSession的位置了。
步驟二:在錄制選項中添加關聯規則
(1)重新錄制一個新腳本,保證“錄制選項”中選擇“基於html腳本——僅包含明確的URL腳本”
(2)“錄制選項”中選擇關聯——勾選啟用關聯——新建應用程序——新建規則
(3)添加文本檢查點(web_find)
(4)“運行時設置”中啟用擴展日志——勾選服務器返回值
(5)點擊確定,就可以錄制腳本了,此時,我們來看看使用關聯的前后對比,優勢由此可見
2.自動關聯(錄制結束后關聯)
此種筆者不常用,用的比較多的是錄制過程中關聯
(1)重新錄制一個新腳本,保證“錄制選項”中選擇“基於html腳本——僅包含明確的URL腳本”。
(2)回放腳本
(3)選擇Vuser——掃描腳本中的管理——輸出框會有關聯提示,點擊“關聯即可”
3.手動關聯
步驟一:錄制兩遍腳本(保證“錄制選項”中選擇“基於html腳本——僅包含明確的URL腳本”;取消啟用關聯;
“運行時設置”中啟用擴展日志——勾選服務器返回值)
步驟二:使用WinDiff工具找出兩次腳本的不同,判斷是否需要進行關聯(工具——與腳本比較),忽略思考時間(lr_think_time())
步驟三:通過比較uesrSession不一致,添加關聯函數,關聯函數是注冊型函數,一般插在所有函數的最前面。
步驟四:插入——添加步驟——選擇web_reg_save_param函數,填寫左右邊界即可(此項可生成函數,亦可直接在代碼中手動編寫代碼)
web_reg_save_param("ChangeSession",
"LB=name=userSession value=",
"RB=>",
LAST);
步驟五:將腳本中變動的userSession替換為關聯函數的參數
步驟六:回放腳本,添加並啟用檢查點,查看回放結果。
到此,關於關聯的應用就講完了,平時使用的話手動關聯還是比較多的。有疑問歡迎留言!