軟件性能測試Ⅳ

LoadRunner腳本語言基礎

在用LoadRunner做性能測試的過程中規(guī),編寫腳本是一項非常重要的工作,一個腳本的好壞關系到性能測試的成敗

vuser_init:是虛擬用戶初始化函數(shù),一般將用戶初始化的操作放在這里,如登錄操作、分配內存等,而且在做vuser_init的時候,Controllerller的Vuser狀態(tài)區(qū)域會顯示Intialize狀態(tài)

Action:是虛擬用戶要做的業(yè)務。用戶的業(yè)務操作,也就是測試內容的主體。在VU里設置迭代循環(huán)選項時,只有Action會生效,被重復運行,而init和end部分,則在腳本的運行過程中,只會運行一次。

vuser_end:與vuser_init相對應,vuser_end做收尾工作。

如果在vuser_init中是登錄,vuser_end里就要做退出登錄

如果在vuser_init中是申請內存(使用malloc函數(shù)),vuser_end中就應該是釋放內存(使用free函數(shù))


VU三個函數(shù)的運行順序

在LoadRunner的腳本中,可以調用三種函數(shù)

(1)VU通用函數(shù),一般以lr開頭,如lr_start_transaction函數(shù)

(2)協(xié)議相關函數(shù),不同類型的Vuser的函數(shù)一般以本協(xié)議類型開頭,如web_url就是一個協(xié)議函數(shù),web前綴說明它是屬于Web HTTP協(xié)議的,HTTP協(xié)議函數(shù)還包括web_list、web_link

(3)語言相關函數(shù),VU腳本是用C語言寫的,那么C語言的標準函數(shù)或dll都可以在這里被加載和使用


LoadRunner API結構圖

通用VU函數(shù)是構建在C語言基礎之上的腳本框架函數(shù),起支持作用,因此學習通過VU函數(shù),有助于我們了解LoadRunner腳本機制

通用VU函數(shù)有一個特征,就是以LR開頭,以標明它們屬于LR,而不專屬于任何協(xié)議,只要是C腳本,就都可以使用

通用VU函數(shù)可以分為事務控制函數(shù)、命令行分析函數(shù)、系統(tǒng)信息函數(shù)、字符串函數(shù)、日志函數(shù)和運行時函數(shù)

事務和事務控制函數(shù)

軟件系統(tǒng)的性能就是靠一個個事務來度量的。LoadRunner中事務的定義就是靠事務函數(shù)來進行的,在執(zhí)行性能測試時,LoadRunner會采集完成其定義的每個事務所花費的時間,并在性能測試后在Analysis中進行統(tǒng)計分析


事務控制函數(shù)

命令行分析函數(shù)

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

lr_get_attrib_double,檢索腳本命令行中使用的double類型變量

lr_get_attrib_long,檢索腳本命令行中使用的long類型變量

lr_get_attrib_string,檢索腳本命令行中使用的字符串

系統(tǒng)信息函數(shù)

用來得到VU的系統(tǒng)信息

lr_user_data_point,記錄用戶定義的數(shù)據采集點

lr_whoami,將有關Vuser的信息返回給Vuser腳本

lr_get_host_name,返回執(zhí)行Vuser腳本的主機名

lr_get_master_host_name,返回運行LoadRunner Controller的計算機名

字符串函數(shù)

主要對參數(shù)進行操作,包括對不同類型參數(shù)的讀取、存儲和移動

lr_eval_string,返回參數(shù)的當前值

lr_save_string,將以NULL結尾的字符串保存到參數(shù)中

lr_save_var,將變長字符串保存到參數(shù)中

lr_save_datetime,將當前日期和時間保存到參數(shù)中

lr_advance_param,前進到下一個可用參數(shù)

lr_decrypt,解密已解碼的字符串

lr_eval_string_ext,lr_eval_string的擴展,為指向包含參數(shù)數(shù)據的緩沖區(qū)的指針

lr_eval_string_ext_free,釋放由 lr_eval_string_ext 分配的指針

lr_save_searched_string,在緩沖區(qū)中搜索字符串實例,并將該字符串實例保存到參數(shù)中

消息函數(shù)

是VU發(fā)送和記錄log的函數(shù)

lr_debug_message,將調試消息發(fā)送到輸出窗口

lr_error_message,將錯誤消息發(fā)送到輸出窗口

lr_get_debug_message,得到當前的消息類

lr_log_message,將輸出消息直接發(fā)送到output.txt文件,此文件位于Vuser腳本目錄中

lr_output_message,將消息發(fā)送到輸出窗口

lr_set_debug_message,為輸出消息設置消息類

lr_vuser_status_message,生成格式化輸出并將其打印到Controller Vuser狀態(tài)區(qū)域

lr_message,將消息發(fā)送到Vuser日志和輸出窗口

運行時(run-time)函數(shù)

多數(shù)是通過VU的runtime來設置的,有以下函數(shù)放在腳本中來實現(xiàn),使LoadRunner的控制更加細致,對外更加靈敏

lr_load_dll,加載外部DLL

lr_think_time,暫停腳本的執(zhí)行,以模擬思考時間(實際用戶在操作之間暫停以進行思考的時間)

lr_continue_on_error,指定腳本如何處理錯誤場景,是繼續(xù)還是退出

lr_rendezvous,在Vuser腳本中設置集合點

協(xié)議相關函數(shù)

除了通用的Vuser函數(shù)外,Vugen還會在錄制時生成特定于協(xié)議的函數(shù),并將它們插入到Vuser腳本中

特定于協(xié)議的函數(shù)是專門針對要錄制的Vuser的類型而生成的。如:Vugen會將LRD函數(shù)插入到數(shù)據庫腳本中,將LRT函數(shù)插入到Tuxedo腳本中,將LRS函數(shù)插入到Windows套接字腳本中

在通用VU函數(shù)的基礎上,不同協(xié)議類型的Vuser有自己一套協(xié)議相關的函數(shù)。一般協(xié)議相關的函數(shù)以本協(xié)議名字開頭。如HTTP協(xié)議以web開頭,MMS協(xié)議以mms開頭,Database協(xié)議以lrd開頭。

HTTP協(xié)議原理

HTTP協(xié)議的Vuser是模擬瀏覽器和Web Server的交互過程

瀏覽器與Web Server的一個簡單的交互過程如圖

HTTP協(xié)議交互原理

當瀏覽器想要得到一個網頁時,用戶在瀏覽器的地址欄里輸入網頁的URL,然后回車,瀏覽器首先就會發(fā)送一個HTTP的命令到Server,Server就會把頁面的數(shù)據傳送給瀏覽器,瀏覽器把數(shù)據解析成我們看到的HTML頁面。但是HTTP協(xié)議有一個特點,它是無狀態(tài)的,也就是說,瀏覽器和Server的每個交互都是獨立無關的,Server不知道來自Browser的任何兩個請求是否出自同一頁面,或者是否有次序的規(guī)定。Web系統(tǒng)在HTTP協(xié)議上層進行了控制,通過Cookie、Session等機制來保證請求的狀態(tài)

HTTP在LoadRunner的實現(xiàn)

以上過程,完全可以由LoadRunner的HTTP Vuser的函數(shù)來實現(xiàn)。以下圖例是所有要用到的LoadRunner函數(shù)

LoadRunner HTTP函數(shù)

可見LoadRunner提供的HTTP協(xié)議API是比較細致的,不僅覆蓋了瀏覽器與Server的交互,而且還有設置

HTTP Vuser錄制生成的腳本

Web_add_cookie 的作用是保存 Server 傳過來的 cookie,以后的訪問都會基于此cookie,直到腳本的結束

Web_url 顯示用戶在IE地址欄中輸入www.test.com 然后回車,IE發(fā)起一個訪問的請求

用戶進入www.test.com頁面后,點擊一個alt屬性為library的圖片,此操作被LoadRunner記錄為Web_image函數(shù)

最后用戶做了一個搜索的操作,退出

如果想生成功能強大一些的腳本,就需要了解VU的機制和原理

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • VU——用戶行為的模擬器2 LoadRunner之所以強大,很大原因是VU的功能強大。VU幾乎支持模擬當今所有主流...
    WinterM9閱讀 1,111評論 0 1
  • 一:LoadRunner常見問題整理1.LR 腳本為空的解決方法:1.去掉ie設置中的第三方支持取消掉2.在系統(tǒng)屬...
    0100閱讀 4,624評論 0 11
  • 性能測試用戶的設計策略—“普遍撒網,重點查看”原則 性能測試是一個復雜的過程,因為它的對象是一個由多個模塊甚至多個...
    WinterM9閱讀 381評論 0 0
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,502評論 19 139
  • 性能測試基礎知識 1、性能測試的含義 通過自動化測試工具模擬生產運行的業(yè)務壓力或用戶使用場景來測試系統(tǒng)的性能是否滿...
    WinterM9閱讀 463評論 0 0

友情鏈接更多精彩內容