1 摘要介紹
LoadRunner 是一種預(yù)測系統(tǒng)行為和性能的工業(yè)標(biāo)準(zhǔn)級(jí)負(fù)載測試工具。通過以模擬上千萬用戶實(shí)施并發(fā)負(fù)載及實(shí)時(shí)性能監(jiān)測的方式來確認(rèn)和查找問題,LoadRunner 能夠?qū)φ麄€(gè)企業(yè)架構(gòu)進(jìn)行測試。通過使用LoadRunner , 企業(yè)能最大限度地縮短測試時(shí)間,優(yōu)化性能和加速應(yīng)用系統(tǒng)的發(fā)布周期。企業(yè)的網(wǎng)絡(luò)應(yīng)用環(huán)境都必須支持大量用戶,網(wǎng)絡(luò)體系架構(gòu)中含各類應(yīng)用環(huán)境且由不同供應(yīng)商提供軟件和硬件產(chǎn)品。難以預(yù)知的用戶負(fù)載和愈來愈復(fù)雜的應(yīng)用環(huán)境使公司時(shí)時(shí)擔(dān)心會(huì)發(fā)生用戶響應(yīng)速度過慢,系統(tǒng)崩潰等問題。這些都不可避免地導(dǎo)致公司收益的損失。Mercury Interactive 的 LoadRunner 能讓企業(yè)保護(hù)自己的收入來源,無需購置額外硬件而最大限度地利用現(xiàn)有的IT 資源,并確保終端用戶在應(yīng)用系統(tǒng)的各個(gè)環(huán)節(jié)中對(duì)其測試應(yīng)用的質(zhì)量,可靠性和可擴(kuò)展性都有良好的評(píng)價(jià)。LoadRunner 是一種適用于各種體系架構(gòu)的自動(dòng)負(fù)載測試工具,它能預(yù)測系統(tǒng)行為并優(yōu)化系統(tǒng)性能。LoadRunner 的測試對(duì)象是整個(gè)企業(yè)的系統(tǒng),它通過模擬實(shí)際用戶的操作行為和實(shí)行實(shí)時(shí)性能監(jiān)測,來幫助您更快的查找和發(fā)現(xiàn)問題。此外,LoadRunner 能支持廣范的協(xié)議和技術(shù),為您的特殊環(huán)境提供特殊的解決方案。
2 對(duì)象
LoadRunner的測試對(duì)象是整個(gè)企業(yè)的系統(tǒng),它通過模擬實(shí)際用戶的操作行為和實(shí)行實(shí)時(shí)性能監(jiān)測,來幫助您更快地查找和發(fā)現(xiàn)問題。此外,LoadRunner能支持廣泛的協(xié)議和技術(shù),為您的特殊環(huán)境提供特殊的解決方案。
3 主要功能
虛擬用戶
使用LoadRunner的Virtual User Generator,您能很簡便地創(chuàng)立起系統(tǒng)負(fù)載。該引擎能夠生成虛擬用戶,以虛擬用戶的方式模擬真實(shí)用戶的業(yè)務(wù)操作行為。它先記錄下業(yè)務(wù)流程(如下訂單或機(jī)票預(yù)定),然后將其轉(zhuǎn)化為測試腳本。利用虛擬用戶,您可以在Windows ,UNⅨ 或Linux 機(jī)器上同時(shí)產(chǎn)生成千上萬個(gè)用戶訪問。所以LoadRunner能極大的減少負(fù)載測試所需的硬件和人力資源。
用Virtual User Generator 建立測試腳本后,您可以對(duì)其進(jìn)行參數(shù)化操作,這一操作能讓您利用幾套不同的實(shí)際發(fā)生數(shù)據(jù)來測試您的應(yīng)用程序,從而反映出本系統(tǒng)的負(fù)載能力。以一個(gè)訂單輸入過程為例,參數(shù)化操作可將記錄中的固定數(shù)據(jù),如訂單號(hào)和客戶名稱,由可變值來代替。在這些變量內(nèi)隨意輸入可能的訂單號(hào)和客戶名,來匹配多個(gè)實(shí)際用戶的操作行為。
真實(shí)負(fù)載
Virtual users 建立起后,您需要設(shè)定您的負(fù)載方案,業(yè)務(wù)流程組合和虛擬用戶數(shù)量。用LoadRunner的Controller,您能很快組織起多用戶的測試方案。Controller 的Rendezvous 功能提供一個(gè)互動(dòng)的環(huán)境,在其中您既能建立起持續(xù)且循環(huán)的負(fù)載,又能管理和驅(qū)動(dòng)負(fù)載測試方案。
而且,您可以利用它的日程計(jì)劃服務(wù)來定義用戶在什么時(shí)候訪問系統(tǒng)以產(chǎn)生負(fù)載。這樣,您就能將測試過程自動(dòng)化。同樣您還可以用Controller 來限定您的負(fù)載方案,在這個(gè)方案中所有的用戶同時(shí)執(zhí)行一個(gè)動(dòng)作---如登陸到一個(gè)庫存應(yīng)用程序----來模擬峰值負(fù)載的情況。另外,您還能監(jiān)測系統(tǒng)架構(gòu)中各個(gè)組件的性能---- 包括服務(wù)器,數(shù)據(jù)庫,網(wǎng)絡(luò)設(shè)備等----來幫助客戶決定系統(tǒng)的配置。
定位性能
LoadRunner內(nèi)含集成的實(shí)時(shí)監(jiān)測器,在負(fù)載測試過程的任何時(shí)候,您都可以觀察到應(yīng)用系統(tǒng)的運(yùn)行性能。這些性能監(jiān)測器為您實(shí)時(shí)顯示交易性能數(shù)據(jù)(如響應(yīng)時(shí)間)和其它系統(tǒng)組件包括application server,web server,網(wǎng)路設(shè)備和數(shù)據(jù)庫等的實(shí)時(shí)性能。這樣,您就可以在測試過程中從客戶和服務(wù)器的雙方面評(píng)估這些系統(tǒng)組件的運(yùn)行性能,從而更快地發(fā)現(xiàn)問題。
利用LoadRunner的ContentCheck TM ,您可以判斷負(fù)載下的應(yīng)用程序功能正常與否。ContentCheck 在Virtual users 運(yùn)行時(shí),檢測應(yīng)用程序的網(wǎng)絡(luò)數(shù)據(jù)包內(nèi)容,從中確定是否有錯(cuò)誤內(nèi)容傳送出去。它的實(shí)時(shí)瀏覽器幫助您從終端用戶角度觀察程序性能狀況。
分析結(jié)果
一旦測試完畢后,LoadRunner收集匯總所有的測試數(shù)據(jù),并提供高級(jí)的分析和報(bào)告工具,以便迅速查找到性能問題并追溯原由。使用LoadRunner的Web 交易細(xì)節(jié)監(jiān)測器,您可以了解到將所有的圖象、框架和文本下載到每一網(wǎng)頁上所需的時(shí)間。例如,這個(gè)交易細(xì)節(jié)分析機(jī)制能夠分析是否因?yàn)橐粋€(gè)大尺寸的圖形文件或是第三方的數(shù)據(jù)組件造成應(yīng)用系統(tǒng)運(yùn)行速度減慢。另外,Web 交易細(xì)節(jié)監(jiān)測器分解用于客戶端、網(wǎng)絡(luò)和服務(wù)器上端到端的反應(yīng)時(shí)間,便于確認(rèn)問題,定位查找真正出錯(cuò)的組件。例如,您可以將網(wǎng)絡(luò)延時(shí)進(jìn)行分解,以判斷DNS 解析時(shí)間,連接服務(wù)器或SSL 認(rèn)證所花費(fèi)的時(shí)間。通過使用LoadRunner的分析工具,您能很快地查找到出錯(cuò)的位置和原因并作出相應(yīng)的調(diào)整。
重復(fù)測試
負(fù)載測試是一個(gè)重復(fù)過程。每次處理完一個(gè)出錯(cuò)情況,您都需要對(duì)您的應(yīng)用程序在相同的方案下,再進(jìn)行一次負(fù)載測試。以此檢驗(yàn)?zāi)龅男拚欠窀纳屏诉\(yùn)行性能。
LoadRunner完全支持EJB 的負(fù)載測試。這些基于Java 的組件運(yùn)行在應(yīng)用服務(wù)器上,提供廣泛的應(yīng)用服務(wù)。通過測試這些組件,您可以在應(yīng)用程序開發(fā)的早期就確認(rèn)并解決可能產(chǎn)生的問題。
利用LoadRunner,您可以很方便地了解系統(tǒng)的性能。它的Controller 允許您重復(fù)執(zhí)行與出錯(cuò)修改前相同的測試方案。它的基于HTML 的報(bào)告為您提供一個(gè)比較性能結(jié)果所需的基準(zhǔn),以此衡量在一段時(shí)間內(nèi),有多大程度的改進(jìn)并確保應(yīng)用成功。由于這些報(bào)告是基于HTML 的文本,您可以將其公布于您公司的內(nèi)部網(wǎng)上,便于隨時(shí)查閱。
接下來的文章編者就將輯錄一篇網(wǎng)上的使用LoadRunner®來測試BEA中間件產(chǎn)品文章來與大家分享如何使用LoadRunner進(jìn)行實(shí)際的性能測試。
4 性能測試
LoadRunner的虛擬用戶
LoadRunner使用虛擬用戶(Virtual users)來模擬實(shí)際用戶對(duì)業(yè)務(wù)系統(tǒng)施加壓力。虛擬用戶在一個(gè)中央控制器(controller station)的監(jiān)視下工作。
在做一個(gè)測試方案時(shí),要做的第一件事就是創(chuàng)建虛擬用戶執(zhí)行腳本。LoadRunner提供了Virtual User Generator來錄制或編輯虛擬用戶腳本。
使用Vugen創(chuàng)建虛擬用戶執(zhí)行腳本
A.從菜單中選擇運(yùn)行Virtual User Generator:
B.創(chuàng)建一個(gè)單協(xié)議腳本,選擇協(xié)議類型為"Tuxedo 7"
C.在彈出的窗口中輸入Tuxedo客戶機(jī)程序的可執(zhí)行文件名(SimpApp.exe),并選擇"Record into Action"為Action。
點(diǎn)擊"OK"開始錄制腳本,這時(shí)Vugen就會(huì)啟動(dòng)Simpapp.exe,如下圖所示,輸入WSNADDR,輸入字符串(Tuxedo is powerful?。┲?,點(diǎn)擊TOUPPER,TUXEDO服務(wù)器完成請(qǐng)求后把輸出字符串(TUXEDO IS POWERFUL?。懙?quot;Output string"中,點(diǎn)擊停止錄制按鈕。
D.編輯Vuser腳本。
E.點(diǎn)擊工具欄中的"執(zhí)行"按鈕來執(zhí)行我們剛才錄制的腳本,確保執(zhí)行無誤。
使用控制器來調(diào)度虛擬用戶
A.從菜單中選擇運(yùn)行Controller:
B.創(chuàng)建一個(gè)新的Scenario,選擇剛才錄制的腳本):
點(diǎn)擊"OK",彈出Scenario調(diào)度界面。在"Quantity"中輸入100,表示使用100個(gè)虛擬用戶。(虛擬用戶與購買的LICENSE有關(guān)聯(lián))
C.點(diǎn)擊"Edit Schedule"來編輯壓力調(diào)度。
D.選擇"Runtime settings"來作運(yùn)行時(shí)設(shè)置。
在Pacing的設(shè)置中,"Number of Iterations"用于設(shè)置Vusers的Actions被執(zhí)行的次數(shù);"Start new iteration"用于設(shè)置調(diào)度器在什么時(shí)機(jī)迭代執(zhí)行Vusers的Actions。
"Think Time"用于設(shè)置Vusers的反應(yīng)和思考時(shí)間,以盡量做到和正常人一樣來施壓。"Ignore think time"表示忽略思考時(shí)間,這是理想狀態(tài),一般不使用。"As recorded"表示按照錄制時(shí)的實(shí)際操作時(shí)間。"Multiply recorded think time by"表示Vusers的思考時(shí)間是實(shí)際錄制時(shí)間的若干倍。
在"Miscellaneous"中設(shè)置一些雜項(xiàng),如使用進(jìn)程還是使用線程等。對(duì)于TUXEDO,好象只能選進(jìn)程模式。
E.選擇"Start scenario"來開始本次壓力測試調(diào)度。
執(zhí)行結(jié)果分析如下:
施壓時(shí)間為5分41秒,Vusers數(shù)量為100,一共完成的Actions交易數(shù)量為5625筆,平均響應(yīng)時(shí)間為5.561秒,TPS為17.8。
組件
1.VuGen Load Generator(虛擬用戶生成器)用于捕獲最終用戶業(yè)務(wù)流程和創(chuàng)建自動(dòng)性能測試腳本 (也稱為虛擬用戶腳本)。
2.Controller (控制器)用于組織、驅(qū)動(dòng)、管理和監(jiān)控負(fù)載測試。
3.Analysis (分析器)有助于您查看、分析和比較性能結(jié)果。
5 實(shí)例應(yīng)用
隨機(jī)函數(shù)
在軟件測試工具中如何巧用LoadRunner的隨機(jī)函數(shù)
LoadRunner有自帶的隨機(jī)函數(shù),如果巧妙的加以采用,能解決一些看似很困難的實(shí)際問題。
一個(gè)項(xiàng)目的性能測試。與數(shù)據(jù)庫直連,根據(jù)外部傳入的SQL ID和SQL參數(shù),從指定數(shù)據(jù)庫中讀取SQL模版,拼裝成真實(shí)的SQL語句、執(zhí)行,并將得到的結(jié)果放入緩存中。目的是減少數(shù)據(jù)庫的壓力。
該系統(tǒng)將支撐大量的SQL操作,性能自然成為備受關(guān)注的焦點(diǎn)之一。
由于它跟SQL語句相關(guān),在真實(shí)環(huán)境下,同一時(shí)間可能執(zhí)行著不同類型的SQL,即便是同一類型,其參數(shù)也各式各樣。那么,怎樣才能模擬出最符合實(shí)際情況的性能測試場景呢?
首先設(shè)計(jì)場景,即,在LoadRunner中按照比例隨機(jī)取到某一類型的SQL,再隨機(jī)傳入?yún)?shù)給它,讓最終的每條SQL都是隨機(jī)生成,各不相同。
從場景中,可以看到,此處涉及雙重隨機(jī)。只采用loadruner的參數(shù)設(shè)置是無法實(shí)現(xiàn)的。此時(shí)需要想辦法先按設(shè)定好的比例隨機(jī)取到SQL,然后在每條SQL上隨機(jī)取參數(shù)列表中的參數(shù)。
于是想到了loadrunner的隨機(jī)函數(shù)。先實(shí)現(xiàn)隨機(jī)取SQL ID,之后再在特定的SQL中隨機(jī)取參數(shù)列表中的參數(shù)。
LoadRunner中,隨機(jī)函數(shù)是rand(),它用來產(chǎn)生0到rand_max之間的隨機(jī)整數(shù)。函數(shù)原型是
int rand (void);
然而調(diào)用rand之前,必須給隨機(jī)數(shù)產(chǎn)生一個(gè)隨機(jī)種子。這個(gè)種子由srand()函數(shù)產(chǎn)生。其原型是
int srand (seedTime);
舉例
采用上述兩個(gè)函數(shù),就能實(shí)現(xiàn)第一重隨機(jī)了。具體腳本代碼如下:
通過上面的腳本,實(shí)現(xiàn)了性能測試設(shè)計(jì)的場景。調(diào)試通過后,放入Controller中執(zhí)行。實(shí)際執(zhí)行過程中,Vuser將會(huì)按比例隨機(jī)取到不同類型的SQL,并隨機(jī)取到SQL中的參數(shù),執(zhí)行特定的SQL語句。注:sqlid_name是SQL ID名稱;random_para是通過file方式實(shí)現(xiàn)的隨機(jī)參數(shù);tn是web_url函數(shù)的快照名稱。
巧用LoadRunner的隨機(jī)函數(shù),能解決不少實(shí)際問題。
6 版本要求
LoadRunner 分為Windows 版本和Unix 版本。如果所有測試環(huán)境基于Windows平臺(tái),那么只要安裝Windows 版本即可。
LoadRunner的Unix版本僅提供Load Generator組件的安裝(即LoadRunner中的負(fù)載生成器)。也就是說,這個(gè)負(fù)載生成器可以在Unix環(huán)境下安裝和運(yùn)行,并提供給Controller進(jìn)行遠(yuǎn)程管理。但是,腳本的錄制和場景的設(shè)計(jì)必須在Windows平臺(tái)完成。
系統(tǒng)要求
運(yùn)行LoadRunner,內(nèi)存最好在128M 以上,LoadRunner7.8 的最低要求。內(nèi)存最好在512M 以上,安裝LoadRunner 的磁盤空間至少剩余500M。操作系統(tǒng)最好為Windows 2000。
最新版本
目前(2014年)可用的最新版本為:HP LoadRunner 12.00
內(nèi)容來自百科網(wǎng)