1. 程式人生 > >loadrunner之常用函式()

loadrunner之常用函式()

 一.事務函式
lr_end_sub_transaction/標記子事務的結束以便進行效能分析
lr_end_transaction/標記LoadRunner事務的結束
lr_end_transaction_instance/標記事務例項的結束以便進行效能分析
lr_fail_trans_with_error/將開啟事務的狀態設定為LR_FAIL併發送錯誤訊息
lr_get_trans_instance_duration/獲取事務例項的持續時間(由它的控制代碼指定)
lr_get_trans_instance_wasted_time/獲取事務例項浪費的時間(由它的控制代碼指定)
lr_get_transaction_duration/獲取事務的持續時間(按事務的名稱)
lr_get_transaction_think_time/獲取事務的思考時間(按事務的名稱)
lr_get_transaction_wasted_time/獲取事務浪費的時間(按事務的名稱)
lr_resume_transaction/繼續收集事務資料以便進行效能分析
lr_resume_transaction_instance/繼續收集事務例項資料以便進行效能分析
lr_set_transaction_instance_status/設定事務例項的狀態
lr_set_transaction_status/設定開啟事務的狀態
lr_set_transaction_status_by_name/設定事務的狀態
lr_start_sub_transaction/
標記子事務的開始
lr_start_transaction/標記事務的開始
lr_start_transaction_instance/啟動巢狀事務(由它的父事務的控制代碼指定)
lr_stop_transaction/停止事務資料的收集
lr_stop_transaction_instance/停止事務(由它的控制代碼指定)資料的收集
lr_wasted_time/消除所有開啟事務浪費的時間
lr_end_sub_transaction/標記子事務的結束以便進行效能分析
r_end_transaction/標記LoadRunner事務的結束
lr_end_transaction_instance/標記事務例項的結束以便進行效能分析
lr_fail_trans_with_error/將開啟事務的狀態設定為LR_FAIL並
二.日誌函式
1、lr_log_message()    // 僅將輸出資訊記錄到 output.txt 中,不在輸出視窗展示
2、lr_output_message()    // 僅將輸出資訊展示在輸出視窗中,不記錄到日誌檔案中
3、lr_message()    // 將訊息傳送到Vuser日誌和輸出視窗
4、lr_error_message()    // 輸出錯誤資訊,不記錄到日誌檔案中
5、lr_debug_message()  //傳送除錯資訊到日誌檔案,這個函式將返回設定的字元,不包括終止null字元,錯誤的時候返回一個負值。
6、lr_get_debug_message() //返回當前除錯資訊,其返回值是根據不同日誌設定返回不同的值。
7、lr_vuser_status_message() //傳送虛擬使用者的狀態到LR的Controller,如果成功,返回0,如果事務的名字是非法的或如果和lr_set_transaction事務開始名稱不同時,返回1。
LoadRunner中lr_output_message和lr_log_message
(1)在vgen中,我們必須寫輸出函式輸出資訊,將我們所想要了解的資訊用函式輸出,主要有這麼幾個函式輸出資訊: lr_output_message,lr_error_message,lr_log_message。這些函式請參閱help-->function reference.
其次,我們要在runtime settings中設定,勾選always send messages,具體的做法是:runtime settings--->log-->always send messages,這樣我們才能寫出Log,在我們的指令碼所在的資料夾中,有兩個檔案很重要, mdrv.log.txt和output.txt檔案,lr_log_message只會把資訊輸到mdrv.log檔案中,而lr_output_message則會寫進以上兩個檔案。
(2)在controller中,很多朋友都會想知道多次迭代,引數是否正確的匯入了呢,我們依舊檢視log,我們在執行結束後,檢視結果目錄的Log資料夾,如果是負載生成器執行的話,則在tmp目錄。不過,還想提醒朋友們,在controller 我們也要設定runtime settings才行,而且每個使用者組的runtime settings,設定的方法是:在controller的design標籤頁中,右下角的部分有runtime settings按鈕,我們點選它,設定的方法與在vgen中一樣的。
對lr_log_message、lr_output_message與lr_message這三個函式的使用一直都有點模糊,查了相關資料,較為詳細的說法如下:
lr_log_message  只是記會寫到本地vuser的log裡面。
lr_message和lr_output_message基本相同,它們會同時寫到vuser的log和傳送到controller裡面,也就是說如果你在有很多壓力客戶機,它們會把資訊除了記錄在本地的vuser之外,還要傳送到遠端的controller中,這會浪費大量的網路頻寬和controller的資源,lr_output_message多了一個輸出資訊語句在指令碼中的位置。
當然要上面的函式有效果,你必須在run-time裡面設定相應的log級別。
要看到controller中的輸出,你可以在output的資訊視窗中選擇"All Messages".
(1)在vgen中,我們必須寫輸出函式輸出資訊,將我們所想要了解的資訊用函式輸出,主要有這麼幾個函式輸出資訊: lr_output_message,lr_error_message,lr_log_message。這些函式請參閱help-->function reference.
其次,我們要在runtime settings中設定,勾選always send messages,具體的做法是:runtime settings--->log-->always send messages,這樣我們才能寫出Log,在我們的指令碼所在的資料夾中,有兩個檔案很重要, mdrv.log.txt和output.txt檔案,lr_log_message只會把資訊輸到mdrv.log檔案中,而lr_output_message則會寫進以上兩個檔案。
(2)在controller中,很多朋友都會想知道多次迭代,引數是否正確的匯入了呢,我們依舊檢視log,我們在執行結束後,檢視結果目錄的Log資料夾,如果是負載生成器執行的話,則在tmp目錄。不過,還想提醒朋友們,在controller 我們也要設定runtime settings才行,而且每個使用者組的runtime settings,設定的方法是:在controller的design標籤頁中,右下角的部分有runtime settings按鈕,我們點選它,設定的方法與在vgen中一樣的。
 三.執行時函式
1.lr_abort();  //終止執行的指令碼,他將停止執行action部分,vuser_end部分,以及結束指令碼執行。
在9.5的幫助文件中是這樣描述的:
如果終止了action裡指令碼的執行,將會直接執行vuser_end中的指令碼。
當你用這個函式結束指令碼的執行,它的狀態將會是stop,這裡應該指的是在controller中執行後在analysis中的狀態
我們使用該函式可以手動來終止指令碼的執行,試了一下該函式得到以下結論:
如果在vuser_init中執行此函式,將會直接終止,不在執行之後的函式,包括aciton和vuser_end;
如果有新建的action,在action中或新建的action中使用該函式,都將直接終止執行,直接執行vuser_end裡的指令碼。
幫助中的示例:
int status;
status = web_url("Login",
          "URL=https://secure.computing.com//login.asp?user=(username)&session={ssid}",
          "RecContentType=text/html", LAST);
if (status == LR_FAIL) {
lr_error_message("Error: %s", "Unable to login to secure computing");
     lr_abort();
}
2.lr_continue_on_error(); //發生錯誤後執行的事件,引數為1表示發生錯誤繼續執行指令碼,引數為0表示取消出錯繼續執行指令碼。
3.lr_exit(); //該函式允許你執行中退出指令碼。在宣告該函式的事務退出後不會出現controller的事務狀態集合中,也不會被計入到通過和失敗的事務數中。
4.lr_think_time(); //設定思考時間。
5.lr_rendezous(); // 集合點,可以設定虛擬使用者相同操作之前進行集合,通過集合點可以增加被測試應用的壓力。一般像某些購物網站整點秒殺運用比較多。
6.lr_load_dll(); //呼叫DLL檔案,這個函式執行成功將返回0,如果導致記憶體溢位條件返回10,如果檔案不存在,返回11.