loadrunner關聯及web_reg_save_param方法淺析

1、什麼是關聯web

關聯(correlation):腳本回放過程當中,客戶端發出請求,經過關聯函數所定義的左右邊界值(也就是關聯規則),在服務器所響應的內容中查找,獲得相應的值,已變量的形式替換錄製時的靜態值,從而向服務器發出正確的請求,這種動態得到服務器響應內容的方法被稱做關聯。也是把腳本中某些寫死的數據,轉變成動態的數據。
什麼內容須要關聯:當腳本中的數據每次回放都發生變化時,而且這個動態數據在後面的請求中須要發送給服務器,那麼這個內容須要經過關聯來詢問服務器,得到該數據的變化結果。例如:
1.登陸字符串。帶有會話 ID 或時間戳等動態數據的登陸字符串。
2.日期/時間戳。使用日期或時間戳或者其餘用戶憑據的任意字符串。
3.常見前綴。後跟字符串的常見前綴,如 SessionID 或 CustomerID數組

2、web_reg_save_param函數說明服務器

語法:函數

int web_reg_save_param(const char *ParamName, <list of Attributes>, LAST);日誌

參數說明:blog

· ParamName: 存放獲得的動態內容的參數名稱字符串

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

o Notfound: 當在返回信息中找不到要找的內容時應該怎麼處理it

o Notfound=error: 當在返回信息中找不到要找的內容時,發出一個錯誤訊息。這是缺省值。io

o Notfound=warning: 當在返回信息中找不到要找的內容時,只發出警告,腳本也會繼續執行下去不會中斷。

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

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

o RelFrameID: 相對於URL而言,欲查找的網頁的Frame。此屬性質能夠是All或是數字,該屬性無關緊要。

o Search : 返回信息的查找範圍。能夠是Headers,Body,Noresource,All(缺省)。該屬性質無關緊要。

o ORD : 說明第幾回出現的左邊界子串的匹配項纔是須要的內容。該屬性無關緊要,缺省值是1。如爲All,則將全部找到的內容儲存起來。

o SaveOffset : 當找到匹配項後,從第幾個字元開始存儲到參數中。該屬性不能爲負數,缺省值爲0。

o SaveLen :當找到匹配項後,偏移量以後的幾個字元存儲到參數中。缺省值是-1,表示一直到結尾的整個字串都存入參數。

3、實例解析

例1:

1

如圖所示,不輸入查詢條件,直接點擊【查詢】按鈕。生成的數據提交腳本以下:

2

該value值爲請求的數據總數,該值是動態變化的。爲了正確的發送請求並獲得正確的結果,須要對該值進行關聯。

Generation Log中搜索「totalItem」,如圖所示,從而能夠肯定該value值的左右邊界。

3

在腳本的請求前插入web_reg_save_param方法,並在提交數據請求的時候使用{count}來替代錄制時實際的值。以下圖:

4

打開擴展日誌,運行腳本,能夠看到正確的關聯出告終果。

5

例2:

上面實例是使用web_reg_save_param的ORD=1,只是取第1次出現的左邊界子串的匹配項爲須要的內容,下面例子使用web_reg_save_param的ORD=ALL,將匹配到的內容保存到數組中。

根據消息列表中的記錄數來進行關聯(只是爲了演示,分頁不考慮),跟蹤Generation Log能夠看到,一條記錄的內容會包含5列內容。以下圖:

6

從上圖中能夠肯定其左右邊界,在腳本的請求前插入web_reg_save_param方法,並在提交數據請求的時候使用arrSize/5來替代錄制時實際的值。以下圖:

7

其中lr_paramarr_len方法用於取出數字長度,lr_paramarr_idx方法用於取數組指定下標的值。打開擴展日誌,運行腳本,能夠看到正確的關聯出告終果。

8

相關文章
相關標籤/搜索