關聯的定義及使用場景
關聯:將服務器提供動態變化的值存放在變量中,當需要使用該變量時,自動從服務器響應的信息中獲取該值,並在后面使用的過程中進行替換。(也可能是前端頁面動態生成的值)
當客戶端的某個請求參數是隨着服務器端的響應而動態變化的時候,我們就需要用到關聯。
當然我們在錄制腳本時應該對測試的項目進行適當的了解,知道哪些請求需要用到服務器響應的動態值,如果我們不明確那些值需要做關聯的話,我們也可以將腳本錄制兩遍,通過對比腳本的方法來查找需要關聯的部分,但並不是說兩次錄制的所有不同點都需要關聯,這個要具體情況具體分析。
關聯和參數化的區別是:
參數化:客戶端控制,定義參數值
關聯:客戶端不能控制,將服務器動態返回的值(也可能是前端頁面動態生成的值)作為下一次請求的入參
關聯函數
關聯函數主要使用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.回放腳本,進行檢查,如有問題,首先應該考慮的是關聯函數放的位置,接下來要考慮左右邊界是否正確。