LR實戰之Discuz開源論壇——登陸腳本

腳本業務流:訪問Discuz論壇首頁——登陸論壇——退出論壇。本次使用LoadRunner11版本。php

1、錄製腳本注意html

    一、確保Discuz論壇能在服務器運行正常。web

    二、錄製前先試訪問Discuz論壇註冊一個測試用戶。ajax

    三、選擇錄製協議,Discuz論壇是一個B/S架構的web論壇,使用經常使用協議「web(HTTP/HTML)」錄製。服務器

    四、錄製選項的設置,特別注意錄製時的HTTP/HTML級別的選擇是「基於HTML的腳本」仍是「基於URL的腳本」,這裏選擇「基於HTML的腳本」。cookie

    五、錄製完腳本後,先保存腳本,再回放一遍。架構

2、優化腳本dom

    使用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;
}

   一、事務設置,開始事務和結束事務的名稱必須一致,事務的設置必須成對出現,即有開始事務也要有結束事務,開始事務應該放在腳本開始的位置,結束事務放在腳本結束的位置,但不要將思考時間(lr_think_time函數)放在事務開始和事務結束之間。其實,設置事務,能夠在「Run_time Settings」裏設置的,能夠設置成「將每一個操做定義爲一個事務」,也能夠設置爲「將每一個步驟定義爲一個事務」,根據須要設置。我這裏是本身手動在腳本設置的。

    使用函數:lr_start_transaction("事務名稱");

                  lr_end_transaction("事務名稱",LR_AUTO);

   二、檢查點設置,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」的值直接取該圖片在網頁源代碼中相應參數的值。

    三、參數化設置,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}"));

     四、關聯設置,因爲個人LR工具在錄製的時設置了關聯規則,在腳本中可使用自動掃描腳本中關聯值快捷鍵Ctrl+F8,掃描結果切換樹形視圖,能夠看到如圖

 點擊「關聯」,返回到腳本頁面,如圖

再次回放腳本,在菜單「視圖--測試結果」中能夠看到關聯函數執行成功。     

     五、集合點設置,集合點的設置在菜單「插入--集合」便可,集合點名稱需顧名思義,看到就能理解。另外須要注意,集合點要放在開始事務的前面,思考時間(lr_think_time函數)的後面。

      使用函數:lr_rendezvous("集合點名稱");

相關文章
相關標籤/搜索