LoadRunner集合點、事務、引數化
1、集合點:插入集合點是為了衡量在加重負載的情況下的效能情況。在計劃中,可能會要求系統能夠承受1000 人同時提交資料,在LoadRunner 中可以通過在提交資料操作前面加入集合點,這樣當虛擬使用者執行到提交資料的集合點時,LoadRunner 就會檢查同時有多少使用者執行到集合點,如果不到1000 人,LoadRunner 就會命令已經到集合點的使用者在此等待,當在集合點等待的使用者達到1000 人時,LoadRunner 命令1000 人同時去提交資料,從而達到計劃中的需求。
2、事務(Transaction):為了衡量的效能,我們需要定義事務。比如:我們在指令碼中有一個數據查詢操作,為了衡量伺服器執行查詢操作的效能,我們把這個操作定義為一個事務,這樣在執行測試指令碼時,LoadRunner 執行到該事務的開始點時,LoadRunner 就會開始計時,直到執行到該事務的結束點,計時結束。這個事務的執行時間在結果中會有反映。插入事務操作可以在錄製過程中進行,也可以在錄製結束後進行。LoadRunner 執行在指令碼中插入不限數量的事務。問題:事務的start_transaction與end_transaction是否可以巢狀?
3、引數化輸入如果使用者在錄製指令碼過程中,填寫提交了一些資料,比如要增加資料庫記錄。這些操作都被記錄到了指令碼中。當多個虛擬使用者執行指令碼時,都會提交相同的記錄,這樣不符合實際的執行情況,而且有可能引起衝突。為了更加真實的模擬實際環境,需要各種各樣的輸入。引數化輸入是一種不錯的方法。
4、引數化包含以下兩項任務: 資源來自"歲月聯盟"
① 在指令碼中用引數取代常量值。
資訊來自"歲月聯盟" ② 設定引數的屬性以及資料來源。(注:不是所有的函式都可以引數化的。)
5/引數的型別。 ["歲月聯盟"]
DateTime:很簡單,在需要輸入日期/時間的地方,可以用DateTime 型別來替代。其屬性設定也很簡單,選擇一種格式即可。當然也可以定製格式。 "歲月聯盟"提供
Group Name:暫時不知道何處能用到,但設定比較簡單。在實際執行中,LoadRunner使用該虛擬使用者所在的Vuser Group 來代替。但是在VuGen 中執行時,Group Name將會是None. "歲月聯盟"
Load Generator Name:在實際執行中,LoadRunner 使用該虛擬使用者所在Load Generator 的機器名來代替。
Syue.com Iteration Number:在實際執行中,LoadRunner 使用該測試腳本當前迴圈的次數來替。
Random Number:隨機數。很簡單。在屬性設定中可以設定產生隨機數的範圍
Unique Number:唯一的數。在屬性設定中可以設定第一個數以及遞增的數的大小。 資訊來源"歲月聯盟"
(注意:使用該引數型別必須注意可以接受的最大數。例如:某個文字框能接受的最大數為99.當使用該引數型別時,設定第一個數為1,遞增的數為1,但100 個虛擬使用者同時執行時,第100 個虛擬使用者輸入的將是100,這樣指令碼執行將會出錯。注意:這裡說的遞增意思是各個使用者取第一個值的遞增數,每個使用者相鄰的兩次迴圈之間的差值為1.舉例說明:假如起始數為1,遞增為5,那麼第一個使用者第一次迴圈取值1,第二次迴圈取值2;第二個使用者第一次迴圈取值為6,第二次為7;依次類推。) [來源"歲月聯盟"]
Vuser ID:設定比較簡單。在實際執行中,LoadRunner 使用該虛擬使用者的ID 來代替,該ID 是由Controller 來控制的。但是在VuGen 中執行時,Vuser ID 將會是 –1. [資訊來自"歲月聯盟"]
File:需要在屬性設定中編輯檔案,新增內容,也可以從現成的資料庫中取資料 內容來自"歲月聯盟"
User Defined Function:從使用者開發的dll 檔案提取資料。就目前我認為,這種方式沒有必要。VuGen 支援C 語言的語法,在VuGen 中重新編寫類似的函式應該不難。問題:是否可以對引數化File型別時,只建一個連線,就是說用select * from tableName 後得到一個表,而這個表中的許多列都可能在引數化過程中用到,如使用者名稱/密碼兩列,是否可先用select * from userTabel 得到資料庫中的全部資料,然後將不同的引數進行引數化就方便多了,而且可用相同的設定。
(注意:在引數資料顯示區,最多隻能看到100 行,如果資料超過100 行,只能點“Edit”按鈕,進入記事本看。)
Sequential:按照順序一行行的讀取。每一個虛擬使用者都會按照相同的順序讀取 [來源"歲月聯盟"]
Random:在每次迴圈裡隨機的讀取一個,但是在迴圈中一直保持不變 [本文來自"歲月聯盟"]
Unique :唯一的數。 內容來自"歲月聯盟"
(注意:使用該型別必須注意資料表有足夠多的數。比如Controller 中設定20 個虛擬使用者進行5 次迴圈,那麼編號為1 的虛擬使用者取前5個數,編號為2 的虛擬使用者取6-10 的數,依次類推,這樣資料表中至少要有100個數據,否則Controller 執行過程中會返回一個錯誤。) 資訊來源"歲月聯盟"
Same Line As 某個引數(比如Name):和前面定義的引數Name 取同行的記錄。通常用在有關聯性的資料上面。
6、檢查點為了檢查Web 伺服器返回的網頁是否正確,VuGen 允許我們插入Text/Imag 檢查點,這些檢查點驗證網頁上是否存在指定的Text 或者Imag,還可以測試在比較大的壓力測試環境中,被測的網站功能是否保持正確。推薦最好能在錄製過程中新增Text/Imag 檢查點。(注意:這裡要搜尋的字串可以使用正則表示式。)
7、可以除錯指令碼,比如在指令碼中加斷點等,操作和在VC 中完全一樣 資訊來源"歲月聯盟"
8、執行場景描述在測試活動中發生的各種事件。一個執行場景包括一個執行虛擬使用者活動的Load Generator 機器列表,一個測試指令碼的列表以及大量的虛擬使用者和虛擬使用者組。建立執行場景使用Controller.
"歲月聯盟"
9、優化Controller 和Load Generators 計算機如果控制機(Controller machine)和Load Generators 計算機執行的都是2000,那麼下面兩個簡單的技巧可以提高效能1)在Load Generators 計算機上,依次進入“控制面板”——“系統”——選擇“高階”標籤頁,點“效能選項”按鈕,選擇優化“後臺服務”選項,這樣可以提高效能,從而可以在每個Load Generators 上執行更多的虛擬使用者2)在Controller 計算機上,按照以上的步驟,進入“效能選項”視窗,不過這裡選擇優化“應用程式”
10、用於執行 Vuser 指令碼的 C 直譯器僅支援 ANSI C 語言。它不支援 Microsoft對 ANSI C 的任何擴充套件。
11、常用方法lr_set_transaction_status 設定開啟事務的狀態lr_set_transaction_status_by_name 設定事務的狀態
lr_stop_transaction 停止事務資料的收集lr_stop_transaction_instance 停止事務(由它的控制代碼指定)資料的收集
lr_get_host_name 返回執行 Vuser 指令碼的主機名lr_get_master_host_name 返回執行 LoadRunner Controller 的計算機名
lr_save_datetime 將當前日期和時間儲存到引數中
lr_eval_string_ext 檢索指向包含引數資料的緩衝區的指標lr_eval_string_ext_free 釋放由 lr_eval_string_ext 分配的指標 資源來自"歲月聯盟"
lr_debug_message 將除錯資訊傳送到輸出視窗lr_error_message 將錯誤訊息傳送到輸出視窗 www.Syue.com
lr_get_debug_message 檢索當前訊息類lr_log_message 將訊息傳送到日誌檔案lr_output_message 將訊息傳送到輸出視窗lr_set_debug_message 設定除錯訊息類lr_vuser_status_message 生成帶格式的輸出,並將其寫到 ControllerVuser 狀態區域lr_message 將訊息傳送到 Vuser 日誌和輸出視窗
lr_peek_events 指明可以暫停 Vuser 指令碼執行的位置lr_think_time 暫停指令碼的執行,以模擬思考時間(實際使用者在操作之間暫停以進行思考的時間)lr_continue_on_error 指定處理錯誤的方法lr_rendezvous 在 Vuser 指令碼中設定集合點