LoadRunner 9 關聯
1)關聯的定義
很多時候,當時錄完之後,沒有問題。過一段時間再跑腳本,就不會成功。比如session,過期了,再一次使用,就會出錯。這個時候,需要在每次訪問的時候動態的拿到session,這種情況就需要用到關聯。
2)參數化和關聯的區別的闡述
參數化變的是提交的東西。關聯的值是從服務器響應中拿到
3)什麽時候需要關聯?
服務器返回的動態變化且對業務有影響的
關聯小例子
演示WebTours登錄時,如果總是用同一個session,可能登錄不成功,需要對session關聯。
Action()
{
web_url("WebTours",
"URL=http://127.0.0.1:1080/WebTours/",
"TargetFrame=",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t8.inf",
"Mode=HTML",
EXTRARES,
"URL=http://www.bing.com/favicon.ico", ENDITEM,
LAST);
web_submit_data("login.pl",
"Action=http://127.0.0.1:1080/WebTours/login.pl",
"Method=POST",
"TargetFrame=body",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home",
"Snapshot=t9.inf",
"Mode=HTML",
ITEMDATA,
"Name=userSession", "Value=121391.541595788zcttAHHptcAiDDDDDHtztptztfcf", ENDITEM,
"Name=username", "Value=jojo", ENDITEM,
"Name=password", "Value=bean", ENDITEM,
"Name=JSFormSubmit", "Value=off", ENDITEM,
"Name=login.x", "Value=54", ENDITEM,
"Name=login.y", "Value=16", ENDITEM,
LAST);
web_url("SignOff Button",
"URL=http://127.0.0.1:1080/WebTours/welcome.pl?signOff=1",
"TargetFrame=body",
"Resource=0",
"RecContentType=text/html",
"Referer=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=home",
"Snapshot=t10.inf",
"Mode=HTML",
LAST);
return 0;
}
找到usersession是從哪個頁面返回的。
右鍵value的值添加關聯。
關聯後代碼變化:
Action() { web_reg_save_param_ex( "ParamName=CorrelationParameter_1", "LB=userSession value=", "RB=>\n<table border", SEARCH_FILTERS, "Scope=All", "IgnoreRedirections=Yes", "RequestUrl=*/nav.pl*", LAST); web_url("WebTours", "URL=http://127.0.0.1:1080/WebTours/", "TargetFrame=", "Resource=0", "RecContentType=text/html", "Referer=", "Snapshot=t8.inf", "Mode=HTML", EXTRARES, "URL=http://www.bing.com/favicon.ico", ENDITEM, LAST); web_submit_data("login.pl", "Action=http://127.0.0.1:1080/WebTours/login.pl", "Method=POST", "TargetFrame=body", "RecContentType=text/html", "Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home", "Snapshot=t9.inf", "Mode=HTML", ITEMDATA, "Name=userSession", "Value={CorrelationParameter_1}", ENDITEM, "Name=username", "Value=jojo", ENDITEM, "Name=password", "Value=bean", ENDITEM, "Name=JSFormSubmit", "Value=off", ENDITEM, "Name=login.x", "Value=54", ENDITEM, "Name=login.y", "Value=16", ENDITEM, LAST); web_url("SignOff Button", "URL=http://127.0.0.1:1080/WebTours/welcome.pl?signOff=1", "TargetFrame=body", "Resource=0", "RecContentType=text/html", "Referer=http://127.0.0.1:1080/WebTours/nav.pl?page=menu&in=home", "Snapshot=t10.inf", "Mode=HTML", LAST); return 0; }
可運行成功。
關聯位置,在請求之前。只要是web_reg開頭的函數,是註冊函數,都放在請求之前。
web_reg_save_param_ex(
"ParamName=參數名",
"LB=左邊界",
"RB=右邊界",
SEARCH_FILTERS,
"Scope=All", //搜索區域
All - Search the entire buffer
Headers - Search only the headers
Body - Search only body data
Cookies - Search only in cookies
"IgnoreRedirections=Yes", //忽略重定向。
"RequestUrl=*/nav.pl*",
LAST);
關聯的其他方法:
自動關聯(不推薦使用)
在運行時掃描腳本中的關聯。(不建議使用)
集合點
1、集合點的概念:需要在某一點多個user同時執行。
2、解析集合點函數:
lr_rendezvous("test"); 只有在control裏面起作用。
3、只能在action中添加集合點。不能添加到init和end
4、事務中添加集合點呢。如果不滿足條件,會在集合點處停止,拉長事物響應時間。所以盡量不要添加到事務裏面。
LoadRunner 9 關聯