(2)LR实战之——登录脚本
https://blog.csdn.net/u013493370/article/details/51788607
腳本業務流:訪問Discuz論壇首頁——登錄論壇——退出論壇。本次使用LoadRunner11版本。
一、錄制腳本注意
??? 1、確保Discuz論壇能在服務器運行正常。
??? 2、錄制前先試訪問Discuz論壇注冊一個測試用戶。
??? 3、選擇錄制協議,Discuz論壇是一個B/S架構的web論壇,使用常用協議“web(HTTP/HTML)”錄制。
??? 4、錄制選項的設置,特別注意錄制時的HTTP/HTML級別的選擇是“基于HTML的腳本”還是“基于URL的腳本”,這里選擇“基于HTML的腳本”。
??? 5、錄制完腳本后,先保存腳本,再回放一遍。
二、優化腳本
??? 使用LoadRunner錄制后的腳本,通常都是需要優化完善腳本。這里只展示action中的登錄部分,優化完善后的腳本如下:
Action_login()
{
?lr_think_time(12);
??? //添加登錄時的集合點Login
?lr_rendezvous("login");
?//設置開始事務
?lr_start_transaction("login");
?
?web_submit_data("member.php",
??"Action=http://127.0.0.1/Discuz/upload/member.php?mod=logging&action=login&loginsubmit=yes&infloat=yes&lssubmit=yes&inajax=1",
??"Method=POST",
??"RecContentType=text/xml",
??"Referer=http://127.0.0.1/Discuz/upload/forum.php",
??"Snapshot=t2.inf",
??"Mode=HTML",
??ITEMDATA,
??"Name=fastloginfield", "Value=username", ENDITEM,
??"Name=username", "Value={username}", ENDITEM,
??"Name=password", "Value={password}", ENDITEM,
??"Name=quickforward", "Value=yes", ENDITEM,
??"Name=handlekey", "Value=ls", ENDITEM,
??LAST);
??? //輸出參數化日志信息
?lr_output_message("登錄用戶名:%s", lr_eval_string("{username}"));
?lr_output_message("登錄密碼:%s", lr_eval_string("{password}"));
?web_add_cookie("mlMh_2132_checkfollow=1; DOMAIN=127.0.0.1");
?web_add_cookie("mlMh_2132_lastact=1399082672%09forum.php%09; DOMAIN=127.0.0.1");
?web_add_cookie("mlMh_2132_checkpm=1; DOMAIN=127.0.0.1");
?
??? //設置關聯 Correlation comment - Do not change!Original value='935343df' Name ='CorrelationParameter_1'
?web_reg_save_param_ex(
??"ParamName=CorrelationParameter_1",
??"LB=formhash=",
??"RB=\">退出",
??SEARCH_FILTERS,
??"Scope=Body",
??"RequestUrl=*/forum.php*",
??LAST);
?//添加文本檢查點,檢查登錄用戶yuxiuquan是否登錄
?web_reg_find("Text=yuxiuquan",
??LAST);
?web_url("forum.php_2",
??"URL=http://127.0.0.1/Discuz/upload/forum.php",
??"Resource=0",
??"RecContentType=text/html",
??"Referer=",
??"Snapshot=t3.inf",
??"Mode=HTML",
??EXTRARES,
??"URL=static/image/common/background.png", ENDITEM,
??"URL=static/image/common/nv.png", ENDITEM,
??"URL=static/image/common/search.png", ENDITEM,
??"URL=static/image/common/arrwd.gif", ENDITEM,
??"URL=static/image/feed/friend_b.png", ENDITEM,
??"URL=static/image/feed/favorite_b.png", ENDITEM,
??"URL=static/image/feed/thread_b.png", ENDITEM,
??"URL=static/image/feed/magic_b.png", ENDITEM,
??"URL=static/image/feed/medal_b.png", ENDITEM,
??"URL=static/image/common/tip_bottom.png", ENDITEM,
??"URL=static/image/common/style_switch.png", ENDITEM,
??"URL=static/image/common/user_online.gif", ENDITEM,
??"URL=static/image/common/qmenu.png", ENDITEM,
??"URL=static/image/common/nv_a.png", ENDITEM,
??"URL=static/image/common/pt_item.png", ENDITEM,
??"URL=static/image/common/chart.png", ENDITEM,
??"URL=static/image/feed/task_b.png", ENDITEM,
??"URL=static/image/common/scrolltop.png", ENDITEM,
??"URL=static/image/common/titlebg.png", ENDITEM,
??"URL=http://cp.discuz.qq.com/tips/get?rand=310&s_id=&product_version=X2.5&product_release=20120413&fix_bug=25000000&is_founder=&s_url=http%3A%2F%2F127.0.0.1%2FDiscuz%2Fupload%2F&last_send_time=&ts=1399082672&sig=&admin_id=0&group_id=10&open_id=&uid=2&callback=discuzTipsCallback", ENDITEM,
??LAST);
?//設置結束事務
?lr_end_transaction("login", LR_AUTO);
?
return 0;
}
?? 1、事務設置,開始事務和結束事務的名稱必須一致,事務的設置必須成對出現,即有開始事務也要有結束事務,開始事務應該放在腳本開始的位置,結束事務放在腳本結束的位置,但不要將思考時間(lr_think_time函數)放在事務開始和事務結束之間。其實,設置事務,可以在“Run_time Settings”里設置的,可以設置成“將每個操作定義為一個事務”,也可以設置為“將每個步驟定義為一個事務”,根據需要設置。我這里是自己手動在腳本設置的。
????使用函數:lr_start_transaction("事務名稱");
??????????????????lr_end_transaction("事務名稱",LR_AUTO);
?? 2、檢查點設置,LR的檢查點分為文本檢查點和圖像檢查點,添加檢查點的方法很簡單,在LR的樹形視圖中,打開視圖登錄頁面,選擇需要檢查的內容(文本或者圖像),鼠標右鍵選擇“添加文本檢查點(web_reg_find())”即可,若要手動添加檢查點,則需要把檢查點設置在返回頁面的之前。最后,在腳本中添加了檢查點,要在Vuser->Run-Tme Settings中更改下設置,勾選Enable Image and text check。
??? 使用函數:web_find() 或 web_reg_find() 或 web_image_check(),下面分別說明
?? (1)web_find()
??? 參數舉例:web_find("web_find","RighOf=a","LeftOf=b","What=name",LAST);
??? 參數解釋:"web_find"定義該查找函數的名稱;“LeftOf”和“RighOf=”用來定義查找字符的左右
邊界;“What=”定義查找內容。
??? (2)web_reg_find()
??? 參數舉例:web_reg_find("Search=Body","SaveCount=ddd","Test=aaa",LAST);
??? 參數解釋: Search用來定義查找范圍,SaveCount定義查找計數變量名稱,該參數可以記錄在緩
存中查找內容出現的次數,可以使用該值,來判斷要查找的內容是否被找到。
??? (3)web_image_check()
??? 參數說明:web_image_check("web_image_check","Alt=","Src=",LAST);;
??? 參數解釋:“Alt”和“Src”的值直接取該圖片在網頁源代碼中相應參數的值。
??? 3、參數化設置,LR錄制登錄的腳本,一般需要參數化腳本中的登錄用戶和對應的密碼,以便更加真實地模仿系統的業務操作。參數化的設置,點擊工具欄圖標打開參數列表,或者點擊菜單“Vuser--參數列表”,或使用快捷方式“Ctrl+L”,點擊新建,定義參數名稱username和password,創建表并輸入內容
后,這里特別需要注意設置的是參數名username和password相對應,通過參數列表中的數據方式和更新值方式來設置,username參數要與password參數對應設
置正確,腳本回放時才能模擬用戶登錄成功,如圖:
?????(1)、username參數名設置
???? (2)password參數名設置
???? (3)、參數化設置中,“Select next row”和“Update value on”這兩個屬性組合,產生九種組合方式,每種方式都不一樣,參數化的結果也不一樣,下面是參數取值方式說明
?????? Select next row:
?????? Sequential:每個VU按照順序讀取。每一個虛擬用戶都會按照相同的順序讀取。
?????? Random:每個VU隨機讀取一個。
????? ?Unique:每個VU順序取唯一的值。注意:使用該類型必須注意數據池中數據充足。
?????? Same Line As 某個參數(比如Name):和前面定義的參數Name 取同行的記錄。通常用在有關聯性的數據上面。
?????? Update value on:
?????? Once 在所有的反復中都使用同一個值? 只取一次
????? ?each iteration 每次反復都要取新值
?????? each occurrence 只要發現該參數就要重新取值,也就是如果一個action中有多個該參數,每遇到一個就要重新取一個值。
???? (4)、在腳本中,選中需要參數化的腳本,鼠標右鍵“使用現有參數”選擇對應要參數化的參數名即可。
?????(5)、在腳本中輸出參數化日志信息???
????? ?//輸出參數化日志信息
????? ?lr_output_message("登錄用戶名:%s", lr_eval_string("{username}"));
?????? lr_output_message("登錄密碼:%s", lr_eval_string("{password}"));
???? 4、關聯設置,由于我的LR工具在錄制的時設置了關聯規則,在腳本中可以使用自動掃描腳本中關聯值快捷鍵Ctrl+F8,掃描結果切換樹形視圖,可以看到如圖
?點擊“關聯”,返回到腳本頁面,如圖
再次回放腳本,在菜單“視圖--測試結果”中可以看到關聯函數執行成功。?????
???? 5、集合點設置,集合點的設置在菜單“插入--集合”即可,集合點名稱需顧名思義,看到就能理解。另外需要注意,集合點要放在開始事務的前面,思考時間(lr_think_time函數)的后面。
????? 使用函數:lr_rendezvous("集合點名稱");
總結
以上是生活随笔為你收集整理的(2)LR实战之——登录脚本的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql curd_mysql 基础之
- 下一篇: 计算机二级过级情况是1,计算机一级和二级