效能測試手冊:一分鐘掌握LoadRunner關聯函式應該放在那

測者陳磊發表於2018-11-08

為什麼要有關聯函式

如果客戶端的某個請求是隨著伺服器端的響應而動態變化,我們就需要用到關聯,通過關聯函式獲取動態的返回值,傳給後面的函式使用,完成測試上下文的流程串聯。

定義:在指令碼回放過程中,客戶端發出請求,通過關聯函式所定義的左右邊界值(也就是關聯規則),在伺服器返回的響應內容中查詢,得到相應的值,將其儲存的變數中,後續請求再通過對應變數指向的記憶體取出資料發給伺服器發,已完成正確的業務流程的效能測試,這種動態獲得伺服器響應內容的方法被稱作關聯。

關聯函式的位置(經驗結果屢試不爽)

關聯函式簡述

1、 web_reg_save_param("usersession","LB=<input type=hidden name=userSession value=","RB=>",LAST);
2、 web_reg_save_param("usersession","LB=<input type=hidden name=userSession value=","RB=>",“ORD=ALL”,”Savelen=18“,LAST);


其中:
    usersession是loadrunner的引數名或者引數陣列名。
    LB是動態返回值的左邊界
    RB是動態返回值的右邊界
    ORD=ALL是選擇所有相同左右邊界的字串都存入引數或者引數陣列中
    Savelen=18是要儲存的字串的長度
    LAST表述函式結束位置

一般關聯函式都是放到出現動態返回引數的錄製響應函式之上,第一個非資源和指令碼的響應之前,就可可以了

舉例

web_url("home.html", 
"URL=http://127.0.0.1:1080/WebTours/home.html", 
"Resource=0", 
"RecContentType=text/html", 
"Referer=http://127.0.0.1:1080/WebTours/welcome.pl?signOff=true", 
"Snapshot=t6.inf", 
"Mode=HTTP", 
LAST);
web_reg_save_param("usersession","LB=<input type=hidden name=userSession value=","RB=>",LAST);
//這個位置就是出現動態引數之前,第一個非資源和指令碼響應的位置
//web_url("nav.pl"))之下有一個js指令碼和若干個圖片類資源
web_url("nav.pl", 
"URL=http://127.0.0.1:1080/WebTours/nav.pl?in=home", 
"Resource=0", 
"RecContentType=text/html", 
"Referer=http://127.0.0.1:1080/WebTours/welcome.pl?signOff=true", 
"Snapshot=t7.inf", 
"Mode=HTTP", 
LAST);
web_concurrent_end(NULL);
web_concurrent_start(NULL);
web_url("JSFormSubmit.js", 
"URL=http://127.0.0.1:1080/WebTours/JSFormSubmit.js", 
"Resource=1", 
"RecContentType=application/x-javascript", 
"Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home", 
"Snapshot=t8.inf", 
LAST);
web_url("mer_login.gif", 
"URL=http://127.0.0.1:1080/WebTours/images/mer_login.gif", 
"Resource=1", 
"RecContentType=image/gif", 
"Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home", 
"Snapshot=t9.inf", 
LAST);
web_concurrent_end(NULL);
lr_start_transaction("login-0");
lr_think_time(17);
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=t10.inf", 
"Mode=HTTP", 
ITEMDATA, 
"Name=userSession", "Value={usersession}", ENDITEM, 
"Name=username", "Value=test001", ENDITEM, 
"Name=password", "Value=123456", ENDITEM, 
"Name=JSFormSubmit", "Value=on", ENDITEM, 
"Name=login.x", "Value=53", ENDITEM, 
"Name=login.y", "Value=12", ENDITEM, 
LAST);

其他一些注意事項

  • web_set_max_html_param_len()函式可以自定義關聯返回值存放的引數的最大長度,記得一定要寫在關聯函式前面。
  • Loadrunner是類C語言,因此很多注意獲取邊界的時候的轉義字元
轉義 含義
\b Backspace 鍵
\f 換頁
\n 換行
\r 回車
\t 水平製表符
\v 垂直製表符
單引號
" 雙引號
\\ 反斜槓
? 文字問號

相關文章