關聯的定義及使用場景
關聯:將服務器提供動態變化的值存放在變量中,當需要使用該變量時,自動從服務器響應的信息中獲取該值,並在后面使用的過程中進行替換。(也可能是前端頁面動態生成的值)
當客戶端的某個請求參數是隨着服務器端的響應而動態變化的時候,我們就需要用到關聯。
當然我們在錄制腳本時應該對測試的項目進行適當的了解,知道哪些請求需要用到服務器響應的動態值,如果我們不明確那些值需要做關聯的話,我們也可以將腳本錄制兩遍,通過對比腳本的方法來查找需要關聯的部分,但並不是說兩次錄制的所有不同點都需要關聯,這個要具體情況具體分析。
關聯和參數化的區別是:
參數化:客戶端控制,定義參數值
關聯:客戶端不能控制,將服務器動態返回的值(也可能是前端頁面動態生成的值)作為下一次請求的入參
關聯函數
關聯函數主要使用web_reg_save_param和web_reg_save_param_ex,二者的區別就是后者在左右邊界中可以使用正則表達式,但我主要還是使用前者偏多。
web_reg_save_param("參數名","LB=左邊界","RB=右邊界",LAST); // 注冊函數,在參數值出現的前面使用,注冊成功時返回值為0,注冊失敗時返回值為1。左右邊界需根據TreeView里相關步驟的SeverResponse代碼來確定。用這個函數能獲取第一個符合條件的數值。
web_reg_save_param("參數名”,"LB=左邊界”,"RB=右邊界","Ord=All",LAST); // 當參數有多個值時,加上"Ord=All”后可獲取所有的數值。注冊成功后,{參數名_count}表示取得的數值個數,{參數名_1}為第一個數值,{參數名_2}為第二個數值。
查看官網幫助文檔

注冊函數要放在獲取關聯值的請求前面

關聯方式一:回放關聯(自動關聯)
還是以loadrunner自帶的訂票網站來實操,
先進入首頁做一下配置,啟用session功能
點擊【administrator】

按如下方式勾選,然后點擊【Update】

先錄制腳本,結果是

然后回放腳本(再次運行腳本),登錄失敗,說明用錄制的入參去登錄沒有成功

回放日志


點擊下面

顯示出差異的地方,就是可能需要關聯的地方,點擊“Correlate”就自動關聯生成關聯函數,但是這種方式不一定准確,所以不推薦

我們可以查看頁面源碼

找到變化的值的左右邊界

Action()
{
web_reg_save_param("loginSession","LB=userSession value=","RB=>",LAST);
web_url("WebTours",
"URL=http://127.0.0.1:1080/WebTours",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
LAST);
lr_think_time(1);
web_submit_data("login.pl",
"Action=http://127.0.0.1:1080/WebTours/login.pl",
"Method=POST",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home",
"Snapshot=t2.inf",
"Mode=HTML",
ITEMDATA,
//"Name=userSession", "Value=108380.1963548ffHtiAzpDfDDttipiDiV", ENDITEM,
"Name=userSession", "Value={loginSession}", ENDITEM,
"Name=username", "Value=jojo", ENDITEM,
"Name=password", "Value=bean", ENDITEM,
"Name=JSFormSubmit", "Value=on", ENDITEM,
"Name=login.x", "Value=42", ENDITEM,
"Name=login.y", "Value=5", ENDITEM,
LAST);
return 0;
}

回放成功,說明關聯成功

關聯方式二:手動關聯
1.錄制兩份相同的腳本,必須保證操作一致且action的划分一致。
2.保存腳本,需要注意三個方面:1.保存路徑不要太深;2.保存的名稱中不能有空格;3.保存的名稱中不能有中文。
3.關閉一個腳本,選擇tools下的“compare with script”
4.在彈出的界面中選擇“options”—view—show inline diffeences目的是讓wdiff工具顯示腳本中真正有差異的地方,以紅色標注真正不同點
5.找出真正不同的點,選擇后,使用edit下的copy功能,並將拷貝的內容存到某文件中。
6.分析不同點,並在業務系統中找到該不同點,確定左右邊界,對於B/S結構系統,可以選擇對應的頁面,右鍵查看資源文件。

7.使用alt+insert快捷鍵,選擇web_reg_save_param函數,在出現的界面上輸入變量名,左右邊界,確定即可,需要注意的是關聯函數的位置。


web_reg_save_param("loginSession",
"LB=userSession value=",
"RB=>",
LAST);
8.回放腳本,進行檢查,如有問題,首先應該考慮的是關聯函數放的位置,接下來要考慮左右邊界是否正確。

