Loadrunner是一款負載測試工具,它有三個核心組件分別是Virtual User Generator、Controller、Analysis。Virtual User Generator 可以通過錄制腳本準確的記錄下來用戶的每一步操作并且可以進行集合點設置、事務設置、參數化等操作從而為在Controller中執行特定的場景做準備。Controller顧名思義,它可以控制腳本的執行,通過把腳本放置在一個特定的場景中,模擬一批真實用戶的操作過程,這些模擬的真實用戶就叫做虛擬用戶。通過這些虛擬用戶可以對系統進行負載測試。Analysis應該是測試人員極為關注的一個組件,通過Controller執行完某一個場景之后,Analysis可以自動生成測試結果并通過圖形的形式顯示出來,測試人員只有借助這些圖表才能準確分析出系統的瓶頸并且確定性能是否達到要求。
下面介紹一下如何進行集合點、檢查點以及參數化的設置:
對于集合點、檢查點的設置有兩種方法,一種是在錄制完腳本以后,手工在腳本中添加相關的關鍵字例如lr_start_transaction等,這種方法對腳本語言的理解能力要求較高。另一種是直接在錄制的過程中添加集合點、檢查點,這樣lr就會自動把集合點、檢查點的關鍵字添加到腳本中。
事務:就是用戶某一步或者某幾步操作的集合。當我們需要通過某一步或是某幾步操作從而衡量服務器的性能的時候,這時我們就把這些操作設置成一個事務,當事務開始執行的時候lr就開始計時當事務運行結束計時停止,執行事務的時間會在在最后的結果中顯示出來。
實例:登錄sina網站,把點擊“天氣”設置成一個事務,衡量服務器處理處理該事務的性能。
1,點擊紅色的錄制按鈕,輸入URL開始錄制。彈出sina的首頁,點擊
點擊OK完成事務的開始點設置。
2,在sina頁面上點擊“天氣”的連接,出現天氣頁面
3,點擊設置事務的結束點,這時彈出事務結束對話框
lr根據匹配原則已經自動把事務名字一欄填入“天氣”,我們只需要選擇事務的狀態。狀態有三種LR_AUTO、 LR_PASS、 LR_FAIL、 LR_STOP,
LR_AUTO:事物的狀態被自動設置,如果事務執行成功,狀態設置為PASS,如果執行失敗,狀態設置為FAIL,如果由于異常中斷,狀態被設置成STOP.
LR_PASS:事務如果執行成功,代碼的返回狀態就是PASS。
LR_FAIL:事務如果執行失敗,代碼的返回狀態就是FAIL。
一般我們選擇LR_AUTO。 那么我們會有疑問什么時候我們選擇PASS或者是FAIL呢?
Lr的幫助文檔中有一條例子,可以很好的幫助我們理解
lr.start_transaction("GetStocks");
try {
String stocks[];
stocks = orStockServer1.getStockList();
if (stocks.length == 0)
throw new Exception("No stocks returned/available");
lr.end_transaction("GetStocks", lr.PASS);
}
catch (Exception e1) {
lr.end_transaction("GetStocks", lr.FAIL);
lr.message(" An exception oclearcase/" target="_blank" >ccurred : " e1.toString() );
}
代碼說明:這時一個得到stock list的例子,程序中設置了異常檢查來確保getStockList()方法返回非零的長度。
同時我也進行了如下的腳本修改
………………
lr_start_transaction("天氣");
lr_think_time( 3 );
web_add_cookie("mysinal=ai_erica; DOMAIN=weather.news.sina.com.cn");
web_add_cookie("SINAGLOBAL=221.219.31.58.924471172571904604; DOMAIN=weather.news.sina.com.cn");
………………
lr_end_transaction("天氣", LR_FAIL);
在最后我把該事物的結束狀態設置為FAIL,然后運行該腳本,其實該事物的運行是沒有任何錯誤的,完全可以運行成功,只是在最后我把事務的狀態手工設置為FAIL。當腳本執行完后,查看Ececution Log看到這樣一條log語句:
Action.c(297): Notify: Transaction "天氣" ended with "Fail" status (Duration: 5.1436).
那么這樣做的意義是什么呢?為什么要設置事務結束狀態呢?原因就是在Analysis中生成結果圖表的時候我們就能看到這個名為“天氣”的事務執行是失敗的。如果語句是這樣:
Action.c(297): Notify: Transaction "天氣" ended with "Pass" status (Duration: 5.1436).
Analysis中生成結果圖表的時候我們就能看到這個名為“天氣”的事務執行是成功的。
設置事務結束狀態的用途就在這里。試想Lr為什么能自動生成結果圖表?無非就是Analysis通過一些定義好的API獲取執行腳本過程中的返回值,從而顯示出事務執行的正確還是錯誤,或是顯示出響應時間等信息,然后調用GUI使我們很直觀的看到測試結果。
原文轉自:http://www.anti-gravitydesign.com