LoadRunner腳本 《第二篇》


一、基礎函數簡介

  在VU左邊導航欄中,有三個LoadRunner框架函數,分別是vuser_init()、Action()、vuser_end()。這三個函數存在於任何Vuser類型的腳本中。

  

  • vuser_init:虛擬用戶的初始化函數,一般將用戶初始化的操作放在這里,如登錄操作、分配內存等。在做uvser_init的時候,Controller的Vuser狀態區域會顯示initialize狀態(只運行一次)。
  • Action:虛擬用戶要做的業務,用戶的業務操作,也就是測試內容的主體。在VU里設置迭代循環選項時,只針對Action有效,Action會被重復運行,而init和end部分則在腳本的運行過程中只會運行一次。
  • vuser_end:與vuser_init相對應,uvser_end做收尾工作。在vuser_init中如果是登錄,vuser_end里面就是退出登錄;在vuser_init中如果是申請內存,比如使用了malloc函數,在vuser_end中應該就是釋放內存,使用free函數。

  在VU右側腳本編輯框中,我們看到的是Action的實現主體,在運行時,Action內的web_url函數會被調用執行。

  在LoadRunner的腳本中,我們可以調用三種函數:

  1. VU通用函數,一般以lr開頭,就如上面的lr_start_transaction函數。
  2. 協議相關函數,不通類型的Vuser的函數一般以本協議類型開頭。如果上面的腳本時Web(HTTP/HTML)類型的,web_url就是一個協議函數,web前綴說明它是屬於Web HTTP協議的,HTTP協議函數還包括web_list、web_link。
  3. 語言相關函數。上面的VU腳本時用C語言寫的,那么C語言的標准函數或dll都可以在這里被加載和使用。

二、通用VU函數

  通用VU函數是構建在C語言基礎之上的腳本框架函數,起支持作用。通用VU函數有一個特征,就是以LR開頭,以標明它們屬於LR,而不專屬於任何協議,只要是C腳本,都可以使用。

  通用VU函數可分為:

  • 事務控制函數;
  • 命令行分析函數;
  • 系統信息函數;
  • 字符串函數;
  • 日志函數;
  • 運行時函數;

  1、事務與事務控制函數

  軟件系統的性能就是開一個個事務來度量的。LoadRunner中事務的定義就是靠事務函數來進行的,在執行性能測試時,LoadRunner會采集完成其定義的每個事務所花費的時間,並在性能測試后再Ayslysis中進行統計分析。

  • 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_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:消除所有打開事務浪費的時間。

  2、命令行分析函數

  當LoadRunner用命令行方式啟動和運行時,以下函數用來分析命令行,以得到命令行中的參數信息。

  • lr_get_attrib_double:檢索腳本命令行中使用的double類型變量。
  • lr_get_attrib_long:檢索腳本命令行中使用的long類型變量。
  • lr_get_attrib_string:檢索腳本命令行中使用的字符串。

  3、系統信息函數

  用來得到VU系統信息:

  • lr_user_data_point:記錄用戶定義的數據采集點。
  • lr_whoami:將有關Vuser的信息返回給Vuser腳本。
  • lr_get_host_name:返回執行Vuser腳本的主機名。
  • lr_get_master_host_name:返回運行LoadRunner Controller的計算機名。

  4、字符串函數

  主要是對參數進行操作,包括對不通類型參數的讀取、存儲和移動。

  • lr_eval_string:返回參數的當前值。
  • lr_save_string:將以NULL結尾的字符串保存到參數中。
  • lr_save_var:將變長字符串保存到參數中。
  • lr_save_datetime:將當前日期和時間保存到參數中。
  • lr_advance_param:前進到下一個可用參數。
  • lr_decrypt:解密已編碼的字符串。
  • lr_eval_string_ext:lr_eval_string的擴展,為指向包含參數數據的緩沖區的指針。
  • lr_eval_string_ext_free:釋放由lr_eval_string_ext分配的指針。
  • lv_save_searched_string:在緩沖區中搜索字符串實例,並將改字符串實例保存到參數中。

  5、消息函數

  是VU發送和記錄log的函數

  • lr_debug_message:將調試消息發送到輸出窗口。
  • lr_error_message:將錯誤消息發送到輸出窗口。
  • lr_get_debug_message:得到當前的消息類。
  • lr_log_message:將輸出消息直接發送到output.txt文件,此文件位於Vuser腳本目錄中。
  • lr_output_message:將消息發送到輸出窗口。
  • lr_set_debug_message:為輸出消息設置消息類。
  • lr_vuser_status_message:生成格式化輸出並將其打印到Controller Vuser狀態區域。
  • lr_message:將消息發送到Vuser日志和輸出窗口。

  6、運行時函數

  運行時(run-time)多數是通過VU的runtime來設置的。

  • lr_load_dll,加載外部dll。
  • lr_think_time:暫停腳本的執行,以模擬思考時間。
  • lr_continue_on_error,指定腳本如何處理錯誤場景,是繼續還是退出。
  • lr_rendezvous:在Vuser腳本中設置集合點。

三、協議相關函數

  除了通用Vuser函數以外,Vugen還會在錄制時生成特定於協議的函數,並將它們插入到Vuser腳本中。

  1、Http協議

  Header設置函數:

  • Web_add_header
  • Web_clean_header

  點擊鏈接:

  • Web_link
  • Web_image

  提交表單:

  • Web_submit_data
  • Web_submit_form

  2、Web系統設置

  Cache設置:

  • Web_cache_leanup
  • Web_load_cache

  Cookie設置:

  • Web_add_cookie
  • Web_cleanup_cookies

  Proxy設置:

  • Web_set_proxy
  • Web_set_secure_proxy

  3、LoadRunner框架支持

  檢查點:

  • Web_find
  • Web_image_check

  關聯:

  • Web_create_html_param
  • Web_create_html_param_ex
  • Web_reg_save_param
  • Web_set_max_html_param_len

  控制:

  • Lr_start_transaction
  • Lr_rendzvous
  • Lr_think_time
Action()
{
    Web_add_cookie("nav = 140, Domain = Dogbert");
    lr_think_time(7);
    Web_url("Login", 
        "URL=http://127.0.0.1:9090/Account/Login", 
        "Resource=0", 
        "RecContentType=text/html", 
        "Referer=", 
        "Snapshot=t1.inf", 
        "Mode=HTTP", 
        LAST);
}
  • 第一條語句Web_add_cookie的作用是保存Server傳過來的cookie,以后的訪問都會基於此cookie,直到腳本的結束。
  • 第二條語句lr_think_time,模擬用戶思考時間,暫停7秒。
  • 第三條語句Web_url顯示用戶在IE地址欄輸入http://127.0.0.1:9090/Account/Login,然后回車,IE發起一個訪問的請求。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM