LoadRunner-Vuser之引數化、關聯、事務、檢查點、集合點的使用
引數化目的:模擬真實使用者操作和建立現實的結果。如果每次輸入相同的查詢內容,伺服器會有相應的快取,查詢速度就會很快,與實際使用者使用場景不一致。
(一)引數化步驟:
1. 確定需要引數化的資料(a.業務系統要求某些資料唯一 b.某些資料不改變,會對效能產生影響)
2. 選擇資料,滑鼠右鍵選擇“Replace with a parameter”
3. Param List中設定引數值和引數更新方式
(Select next row: Sequential 順序取值、Random隨機取值、Same lineas Param1 與引數1取的行數相同)
(Update Value on 引數值的變更條件:Each Iteration一次迭代中間無論呼叫幾次都取同一個值、Each Occurrence每呼叫一次引數就變更一次 Once 只取一次)
4. 在 Run-Time Settings 中 修改迭代次數和開啟日誌(Run-Time Settings-> Log -> Extended Log-> Parameter substitution)
引數的除錯:
在VuGen驗證引數是否正確
使用lr_eval_string()讀取引數
通過日誌檢查引數取值
Controller中多使用者併發情況下,引數是否正確
(二)建立場景Create Scenario
1. 在Design Tab頁下 雙擊 Start Vusers 、Duration、去設定場景引數
2. 執行場景
3.在Run Tab頁下點選Vusers...->Show Vuser Log 檢視各個使用者的取值情況
變數及引數的使用技巧:
關聯目的:捕獲動態資料,進行動態提交Action() { char temp[10]="51testing"; lr_output_message(temp); //變數的使用 lr_output_message(lr_eval_string("{param}")); //引數的使用 //1.值存在於變數中,但需要使用的地方必須在雙引號中間 //2.值存在於引數中,但需要使用的地方不允許用雙引號 lr_save_string(temp,"param1"); //將變數temp的值存入一個新的引數param1中 lr_output_message(lr_eval_string("{param1}")); return 0; }
(三)關聯
手工關聯
確定要捕獲的資料(可以通過回放指令碼後 使用 Scan Script for Correlations 輔助關聯)
發現要捕獲的資料的文字左右邊界
指令碼新增函式(web_reg_save_param)
驗證正確的執行
特點:關聯的資料是從伺服器返回的,後續請求中發回給伺服器,該資料是動態變化的
手動關聯的具體步驟:
1. 指令碼出錯時需要關聯
2. 過濾可疑資料(在Generation Log中找該資料,看該資料是否是伺服器返回的資料)
3. 重點關心post請求
(四)事務、檢查點
引入事務是為了度量響應時間
事務時間: 函式自身+ Think time + Wasted Time + 響應時間
響應時間:網路(網路延遲+ Web Page BreadDown) + 伺服器處理(WWW Server+ App Server + DB Server)
對於自動結束狀態的事務(LR_AUTO),只要伺服器給使用者返回了資訊,就會認為事務是通過的。因此需要手工事務來進行判斷
可以用web_reg_find()函式來對登陸失敗或成功後頁面進行文字的查詢,對事務進行判斷
web_reg_find("Search=Body","SaveCount=success","Text=Welcome",LAST);
if(atoi(lr_eval_string("{success}"))>=1)
lr_end_transaction("Login Time", LR_PASS);
else
lr_end_transaction("Login Time", LR_FAIL);
事務相關函式:
lr_start_transaction
lr_end_transaction
lr_start_time() 與lr_end_time()聯合使用得到程式執行時間
(五)集合點:用於模擬多使用者併發操作的一種技術手段
步驟:
1. 確定併發操作步驟
2. 在併發操作之前,插入集合點
3. 修改集合策略(場景 Scenario-> Rendezvous -> Policy)
集合點不能放在事務的中間
(六)思考時間 lr_think_time(10);