




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
第6章負載測試實例6.1負載測試的目標6.2LoadRunner工具簡介6.3負載測試的設計6.4對JForum論壇進行負載測試6.1負載測試的目標
負載測試(LoadTesting)是指在確切、可預知的負載環(huán)境中,通過不斷提升被測系統(tǒng)的負載(如逐漸增加模擬用戶的數(shù)量),來觀察不同負載下系統(tǒng)的響應時間、數(shù)據(jù)吞吐量、系統(tǒng)占用的資源(如CPU、內(nèi)存使用情況)等,以檢驗系統(tǒng)的行為和特性,進而發(fā)現(xiàn)系統(tǒng)可能存在的性能瓶頸、內(nèi)存泄漏、不能實時同步等問題;或者探尋構成系統(tǒng)的不同組件,如數(shù)據(jù)庫、硬件、網(wǎng)絡等的上限性能,以備未來使用。
性能測試(PerformanceTesting)是指在給定基準條件的前提下能達到的運行程度,測試目標軟件在給定環(huán)境下的運行性能,度量其性能與預定義目標的差距。通常,性能測試用實際投產(chǎn)環(huán)境進行測試,來求出最大的吞吐量與最佳響應時間,以保證上線后系統(tǒng)可以平穩(wěn)、安全地運行。通常情況下,負載測試、壓力測試/強度測試、容量測試等被統(tǒng)稱為性能測試。很多時候,測試人員和用戶容易將這幾種測試混為一談,下面分別對其進行說明。其中,壓力測試/強度測試(StressTesting)是在極限負載(大數(shù)據(jù)量、大量并發(fā)用戶等)情況下的測試,查看應用系統(tǒng)在峰值使用情況下的操作行為,以及當負載降低后系統(tǒng)的狀態(tài),從而有效地發(fā)現(xiàn)系統(tǒng)的某項功能隱患及系統(tǒng)是否具有良好的容錯能力和可恢復能力。進一步,壓力測試分為高負載下的長時間(如24小時以上)的穩(wěn)定性壓力測試和極限負載情況下導致系統(tǒng)崩潰的破壞性壓力測試。容量測試(VolumeTesting)是測試預先得出能夠反映被測軟件系統(tǒng)應用特征的某項指標的極限值(如支持的最大并發(fā)用戶數(shù)、可訪問的數(shù)據(jù)庫記錄數(shù)等),該極限值被確定的前提是被測系統(tǒng)在其狀態(tài)下沒有出現(xiàn)任何軟件故障或還能保持主要功能正常運行,具體可以在測試需求中對其進行約束。容量測試是面向數(shù)據(jù)的,并且它的目的是顯示系統(tǒng)可以處理目標內(nèi)確定的數(shù)據(jù)容量。
負載測試、壓力測試和容量測試這幾個概念容易發(fā)生混淆,下面通過一個簡單的載重汽車例子加以區(qū)分。本例中,描述載重汽車性能的指標有載重量和行駛速度。
(1)負載測試:載重20噸,汽車是否能以100公里時速行駛;或者載重20噸,汽車的最快速度是多少。
(2)壓力測試:在20噸、30噸、40噸……的情況下,汽車是否還能正常行駛,當載重多少時汽車將無法行駛,當汽車無法行駛后減少載重量,汽車是否還能繼續(xù)正常行駛。
(3)容量測試:如果要求汽車以時速100公里的速度行駛,最多可以載重多少噸。本節(jié)通過介紹LoadRunner工具和測試實例來闡述負載測試的相關內(nèi)容,以達到如下目標:
(1)能夠區(qū)分負載測試、壓力測試和容量測試的區(qū)別;
(2)了解LoadRunner工具相關的基本概念,能夠使用LoadRunner工具;
(3)了解Web應用的發(fā)展及主要技術手段;
(4)能夠針對Web應用,設計滿足要求的測試用例,并進行測試。
6.2LoadRunner工具簡介
6.2.1LoadRunner的組件
LoadRunner主要由以下幾個組件構成:
(1)VirtualUserGenerator:虛擬用戶生成器,簡稱VuGen,用來錄制被測目標系統(tǒng)客戶端的操作,并自動生成虛擬用戶腳本。
(2)Controller:控制器,它是整個負載測試的控制中心,用來管理、設計、驅(qū)動及監(jiān)控負載測試場景的執(zhí)行情況以及被測目標系統(tǒng)的資源使用情況。
(3)LoadGenerator:負載生成器,可以是壓力機操作系統(tǒng)中的一個進程或線程,它執(zhí)行虛擬用戶腳本以模擬真實用戶的行為對被測目標系統(tǒng)發(fā)出請求并接收響應,進而模擬真實的負載。
(4)Analysis:分析器,它讀取控制器收集的測試過程數(shù)據(jù),分析負載測試的結果,進一步生成測試報告。
(5)Launcher:加載器,負責提供一個集成的操作界面,測試人員可以從中啟動LoadRunner的所有其他組件。
6.2.2LoadRunner與QTP的區(qū)別
了解HP公司產(chǎn)品的讀者可能會知道,HP公司除了LoadRunner這款性能負載測試工具外,還有一款類似的QTP產(chǎn)品。讓人容易產(chǎn)生混淆的是,通常測試人員發(fā)現(xiàn)LoadRunner可以做的工作,QTP也可以完成,如Web系統(tǒng)測試。與LoadRunner不同,QTP是一款自動化功能測試工具,它們的主要區(qū)別是:
(1)產(chǎn)品定位不同:LoadRunner是基于協(xié)議的負載測試,側重的是壓力、負載、容量、并發(fā)等的測試;而QTP是基于GUI對象的功能測試,主要應用于回歸測試、版本驗證測試等。
(2)與被測系統(tǒng)交互的方式不同:LoadRunner采用捕獲數(shù)據(jù)包并識別協(xié)議報文的方式,通過解析和生成特定的報文與被測系統(tǒng)交互;QTP則是基于操作系統(tǒng)的消息機制來截獲消息,通過識別被測系統(tǒng)客戶端的控件與被測系統(tǒng)交互。
6.2.3使用LoadRunner的測試流程
使用LoadRunner進行負載測試,需要經(jīng)歷如圖6-1所示的測試流程。圖6-1LoadRunner進行負載測試的測試流程
1.制訂測試計劃
在此階段,首先需要定義性能測試要求,從需求中提取有用信息,獲取性能測試目標,例如并發(fā)用戶數(shù)量、典型業(yè)務流程以及這些業(yè)務流程要求的響應時間,然后根據(jù)這些性能測試要求,定義對應的壓力指標。其次,需要根據(jù)測試需求確定系統(tǒng)的運行環(huán)境,包括硬件環(huán)境、軟件環(huán)境、網(wǎng)絡環(huán)境等。最后,需要確定測試環(huán)境、工具、數(shù)據(jù)等,包括搭建測試環(huán)境、選用測試工具、準備測試數(shù)據(jù)。其中,測試數(shù)據(jù)要保證盡可能地模擬真實情況。
2.創(chuàng)建虛擬用戶腳本
使用LoadRunner的VuGen能很簡便地創(chuàng)建系統(tǒng)負載并能夠生成虛擬用戶,以虛擬用戶的方式模擬真實用戶的業(yè)務操作行為。VuGen可以錄制真實用戶的業(yè)務操作流程(如用戶注冊、酒店預訂等),然后將其轉(zhuǎn)化為測試腳本(測試人員也可直接使用C、Java等語言編寫測試腳本)。利用虛擬用戶,LoadRunner可以在多臺Windows、UNIX或Linux操作系統(tǒng)的主機上,同時模擬成千上萬個用戶訪問被測目標系統(tǒng)的行為,這樣一來就能夠極大地減少負載測試所需的硬件資源和人力資源。
為了模擬現(xiàn)實環(huán)境中多個用戶的不同習慣和訪問信息,VuGen可以在錄制測試腳本后進行參數(shù)化處理。參數(shù)化可以利用多套、不同的實際數(shù)據(jù)來測試被測目標系統(tǒng),從而盡可能地反映出被測目標系統(tǒng)在真實環(huán)境下的負載能力。這些測試數(shù)據(jù)可以來自真實的業(yè)務數(shù)據(jù),也可以由開發(fā)人員直接從數(shù)據(jù)庫中提取,通過文本文件或電子表格等格式導入到LoadRunner中。同時,VuGen支持豐富的數(shù)據(jù)提取方式和隨機訪問方式,使得模擬產(chǎn)生的虛擬用戶更加真實。
3.定義場景
虛擬用戶(測試腳本)創(chuàng)建完成之后,測試人員需要根據(jù)測試方案設定所采用的負載方案、業(yè)務流程組合和虛擬用戶數(shù)量。通過使用LoadRunner的Controller,測試人員能夠快速組織多起用戶的測試方案。Controller的集合點(Rendezvous)功能提供一個互動的環(huán)境,在其中既能建立起持續(xù)且循環(huán)的負載,又能管理和驅(qū)動負載測試方案。
4.運行場景
測試人員在利用LoadRunner進行系統(tǒng)負載測試時,可以定義虛擬用戶在什么時候訪問系統(tǒng)以產(chǎn)生負載,這樣就能將測試過程自動化。在Controller定義的負載方案中,可以定義所有的用戶同時執(zhí)行一個動作,如在某一時間點同時進行系統(tǒng)登錄,進而來模擬系統(tǒng)的峰值負載情況。在測試過程中,LoadRunner可以顯示和記錄每個虛擬用戶的訪問結果,包括訪問被測目標系統(tǒng)的結果是否正確、被測目標系統(tǒng)的響應時間是多少、統(tǒng)計有多少事務通過了測試等。此外,在運行負載測試過程中,測試人員還能通過LoadRunner集成的實時監(jiān)測器來實時監(jiān)測被測目標系統(tǒng)中各個組件的性能,包括應用服務器、Web服務器、數(shù)據(jù)庫、網(wǎng)絡設備等,可以在測試過程中從客戶和服務器兩方面評估這些系統(tǒng)組件的運行性能,幫助測試人員更快地發(fā)現(xiàn)問題、調(diào)整上述系統(tǒng)環(huán)境配置、優(yōu)化負載測試場景。
5.分析結果
一旦測試完畢后,LoadRunner收集匯總所有的測試數(shù)據(jù),并提供高級的分析和報告工具,以便迅速查找到性能問題進而追溯問題原因。使用LoadRunner的Web交易細節(jié)監(jiān)測器,測試人員和開發(fā)人員可以了解到將所有頁面(包括圖像、框架和文本)加載所需的時間。例如,通過分析頁面的加載時間,可以幫助程序員確定是否因為一個大尺寸的圖像文件或第三方的數(shù)據(jù)組件造成被測目標系統(tǒng)運行速度減慢。另外,通過Web交易細節(jié)監(jiān)測器分解得到用于客戶端、網(wǎng)絡和服務器上點到點的反應時間,便于發(fā)現(xiàn)造成被測目標系統(tǒng)運行變慢的原因,定位查找出真正存在問題的組件。例如,測試人員可以進一步將網(wǎng)絡延遲進行分解,以分析構成網(wǎng)絡延遲的時間占比,確定DNS解析時間、連接服務器時間及SSL認證所花費的時間中哪一個時間才是系統(tǒng)的瓶頸。通過使用LoadRunner的分析工具,測試人員能夠快速查找到出錯的位置和原因,并為開發(fā)人員提供相應的調(diào)整建議。
6.重復測試
負載測試是一個需要重復多次的測試活動。在完成每一次負載測試之后,測試人員都會給出本次測試的結果和建議。開發(fā)人員根據(jù)這些建議對被測目標系統(tǒng)進行代碼調(diào)整和系統(tǒng)優(yōu)化。之后,測試人員需要對被測目標系統(tǒng)在相同的測試方案下,再次進行負載測試,從而檢驗所做的修正是否改善了被測目標系統(tǒng)的性能。
這種重復的測試活動需要一直進行,直到測試結果滿足測試需求。
6.3負載測試的設計
6.3.1事務
LoadRunner虛擬用戶腳本由Init、Action及End三部分組成,其中在虛擬用戶設置中可以讓Action部分重復執(zhí)行多次,而Init和End部分僅能執(zhí)行1次。因此,通常情況下將初始化工作,如用戶登錄、數(shù)據(jù)庫連接等操作放在Init部分,將退出登錄、斷開數(shù)據(jù)庫連接等操作放在End部分,而將實際的操作放在Action部分。
通常情況下,LoadRunner的Web交易細節(jié)監(jiān)測器只能將所有位于Action部分的腳本作為整體進行測量。例如,腳本中包含用戶登錄、機票檢索、訂票、支付等活動,那么此時度量的結果是完成上述所有操作的總時間。如果希望知道虛擬用戶完成單個不同操作的時間,需要使用事務(Transaction)對上述操作進行界定。每個事務度量被測目標系統(tǒng)響應指定Vuser請求所用的時間。這些請求可以是簡單操作(如等待某個機票查詢的響應),也可以是復雜操作(如提交查詢并等待系統(tǒng)生成報告)。此外,為了度量某個操作的性能,需要在操作開始和結束位置各插入一個標記,兩個標記用于界定該操作,如此就可以定義一個事務。通常,事務用于界定虛擬用戶的某一個相對完整的、有意義的業(yè)務操作過程,例如登錄、查詢、交易、轉(zhuǎn)賬等都可以作為事務,但一般不會把每次HTTP請求作為一個事務。
LoadRunner運行到該事務的開始點時會開始計時,運行到該事務的結束點時結束計時。這個事務的運行時間在LoadRunner的運行結果中會有顯示。通俗地講,事務就是一個計時標識,LoadRunner在運行過程中一旦發(fā)現(xiàn)事務的開始標識,就開始計時,發(fā)現(xiàn)事務的結束標識,則結束計時。開始計時和結束計時的時間間隔就是一個事務時間。通常,測試人員將事務時間認為是被測目標系統(tǒng)對一個操作過程的響應時間。從性能測試的角度出發(fā),測試人員需要知道不同的操作所花費的時間,這樣就能夠衡量不同的操作對被測目標系統(tǒng)所造成的影響。一個經(jīng)驗豐富的測試人員,需要了解每個操作對應被測目標系統(tǒng)后臺的哪些操作,如航班查詢可能涉及被測目標系統(tǒng)中的數(shù)據(jù)庫表select操作,一個訂單支付操作可能涉及數(shù)據(jù)庫表的insert、update操作以及與外部支付接口的交互活動。測試人員能夠從不同的操作響應時間分析得到系統(tǒng)的瓶頸點??梢?,正確地設置虛擬用戶腳本中的事務,對于分析被測目標系統(tǒng)是十分重要的技術手段。6.3.2集合點
在介紹集合點這一概念之前,首先需要明確如下三個概念:
系統(tǒng)用戶數(shù)Nu:使用被測目標系統(tǒng)的總人數(shù);
在線用戶數(shù)Nou:高峰時同時訪問被測目標系統(tǒng)在線人數(shù);
并發(fā)用戶數(shù)Ncu:在同一時刻與服務器進行了交互的在線用戶數(shù)。
三者存在如下關系:Nu≥Nou≥Ncu系統(tǒng)用戶數(shù)僅反映可能會有多少用戶訪問該系統(tǒng),通常僅對數(shù)據(jù)庫中的用戶表容量有影響。在線用戶數(shù)能夠在某種程度上反映系統(tǒng)的負載情況,如公司的門戶系統(tǒng),每個員工每天上班都要登錄門戶系統(tǒng)打卡、收發(fā)郵件、訪問日程安排等。在線用戶數(shù)對被測目標系統(tǒng)的服務器內(nèi)存、緩存等資源占用多。但是,并不是所有在線用戶都會在同一時刻對系統(tǒng)發(fā)出請求,目標系統(tǒng)服務器所承受的負載還與具體的用戶訪問習慣相關,所以真正會對系統(tǒng)產(chǎn)生直接影響的是并發(fā)用戶數(shù)。通常在用戶需求規(guī)格說明書中,僅會使用一些描述文字說明用戶對目標系統(tǒng)的性能需求。例如:“一個擁有4000員工的公司,需要開發(fā)一個僅供公司內(nèi)部員工使用的辦公自動化系統(tǒng)(OA系統(tǒng)),最高峰時有500人同時在線,對于系統(tǒng)的典型用戶來說,一天之內(nèi)用戶使用訪問OA系統(tǒng)的平均時長為4小時,通常用戶僅會在8小時工作時間內(nèi)訪問該系統(tǒng)。”對于這樣一段文字,我們可以獲取到如下信息:系統(tǒng)用戶數(shù)為4000,在線用戶數(shù)為500,那么,系統(tǒng)的并發(fā)用戶數(shù)是多少呢?在這500個同時在線用戶中,考察到某一個具體的時間點,可能僅有30%的用戶在瀏覽系統(tǒng)公告,30%的用戶在編寫郵件,20%的用戶將OA系統(tǒng)最小化做其他工作,10%的用戶在做登錄操作,5%的用戶在收郵件,5%的用戶在審批流程。這樣的情況下,瀏覽系統(tǒng)公告、編寫郵件和做其他工作的80%的用戶并沒有給OA系統(tǒng)帶來任何負載,而其他20%的用戶向服務器發(fā)起了請求,才真正對服務器構成了壓力。因此,從上面的例子中可以看出,系統(tǒng)的并發(fā)用戶數(shù)僅占在線用戶的20%。但是,在實際中沒有任何人能夠給出確切的數(shù)字,并且不同系統(tǒng)在不同時刻并發(fā)用戶數(shù)均可能不同。此時,僅能夠通過長時間觀察和經(jīng)驗對并發(fā)用戶數(shù)進行推算。下面給出了一個并發(fā)用戶數(shù)的推導公式:其中,L為在線用戶的平均會話時長,T為考察時間長度,
為并發(fā)用戶數(shù)的峰值。根據(jù)這個公式,可以計算得出如下結果:這個得出的僅僅是理論值,實際情況會有所不同。那么該如何根據(jù)實際情況模擬產(chǎn)生并發(fā)用戶數(shù)呢?雖然在Controller中可以讓多個虛擬用戶一起開始運行腳本,但由于計算機的串行處理機制,腳本的運行隨著時間的推移并不能完全同步。此時,需要使用LoadRunner提供的集合點(Rendezvous)。集合點是在虛擬用戶腳本中手工設置了一個標志,以確保多個虛擬用戶同時執(zhí)行后續(xù)操作。設置集合點后,當某個虛擬用戶率先到達集合點時,該虛擬用戶將進行等待(代表該虛擬用戶的進程或線程將被掛起),直到參與集合的全部虛擬用戶都到達集合點后,Controller將釋放所有這些虛擬用戶,使其繼續(xù)共同對被測目標系統(tǒng)施壓。
注意:僅能向虛擬用戶腳本中的Action部分添加集合點。
集合點是一種特殊情況下的并發(fā)執(zhí)行,通常是在以優(yōu)化為目的的性能測試中才會使用,主要是為了對被測目標系統(tǒng)的某些模塊、組件進行有針對性的施壓,以便找到性能瓶頸。而在以評測為目的的性能測試中,用戶更關心的是業(yè)務上的并發(fā)執(zhí)行(即同一時刻有多個不同的業(yè)務模塊、組件被用戶訪問),通常這種情況下不需要設置集合點。
6.3.3思考時間
負載測試的目標是為了考量在一個已知的環(huán)境下被測目標系統(tǒng)的預期值是多少。因此,通常在進行負載測試的時候需要盡可能地模擬真實的用戶使用情況。而在真實的使用情況下,在用戶的兩個連續(xù)操作之間,都會存在一個時間段,不會向被測目標系統(tǒng)發(fā)起請求。例如,當用戶單擊注冊按鈕看到注冊頁面后,用戶可能要完成閱讀用戶告知信息、切換輸入法、錄入用戶基本信息等操作,而這些操作都要耗費一些時間才能完成;或者當用戶向服務器發(fā)起一次搜索請求之后,要在得到的結果中定位尋找真正有用的結果,這樣也要花費一定的閱讀時間。在LoadRunner中,將存在于兩個操作之間的空白時間段稱為思考時間(ThinkTime)。
在錄制虛擬用戶腳本時,如果不去更改默認的設置,LoadRunner會自動在生成的腳本中插入用戶的思考時間。實際上,在思考時間內(nèi),用戶不會向被測目標系統(tǒng)發(fā)起請求,即不會給服務器帶來負載。讀者可能會認為:在負載測試時去掉思考時間,這樣才能給服務器更大的壓力。這需要考慮測試的目標究竟是什么,是為了模擬真實情況下服務器的工作情況,還是為了定位極限情況下被測目標系統(tǒng)的瓶頸點。
那么,如果需要加入思考時間,多長的思考時間合適呢?通常情況下,思考時間在3~10s比較合適。但是,還需要根據(jù)實際的業(yè)務場景和用戶情況而定。例如,要完成用戶注冊,對于一個使用計算機較為熟練的用戶,填寫用戶名、密碼、確認密碼、手機、郵箱等基本信息可能僅需要10s左右,而對于一個計算機操作不熟練的用戶,它所消耗的時間會更長。因此,在確定腳本中思考時間時,應該充分理解測試場景中的相關信息,再確定思考時間的長短。
虛擬用戶使用lr_think_time函數(shù)模擬用戶思考時間。錄制虛擬用戶腳本時,VuGen將錄制實際的思考時間,并將相應的lr_think_time語句插入到虛擬用戶腳本中??梢跃庉嬕唁浿频膌r_think_time語句,也可以向虛擬用戶腳本中手動添加其他lr_think_time語句。以下函數(shù)說明虛擬用戶需要等待8s,才執(zhí)行下一個操作:
lr_think_time(8);
此外,可以通過設置參數(shù)來影響運行腳本時虛擬用戶錄制思考時間的方式。并且,在分析報告中,也可以通過設置參數(shù)來過濾掉所有思考時間帶來的影響。
6.4對JForum論壇進行負載測試6.4.1創(chuàng)建虛擬用戶
1.創(chuàng)建用戶登錄和登出的虛擬用戶腳本
打開LoadRunner程序,首先看到的是加載器(Launcher),如圖6-2所示,在加載器組件中單擊“創(chuàng)建/編輯腳本(Create/EditScript)”,這時可以打開虛擬用戶生成器(VuGen)組件的起始頁。另外兩個選項分別是“運行負載測試(RunLoadTests)”和“分析測試結果(AnalyzeTestResult)”。
圖6-2LoadRunner11.00窗口圖6-3虛擬用戶生成器界面
在如圖6-4所示的新建虛擬用戶彈出窗口中,確保類別(Category)是熱門協(xié)議(PopularProtocols),此時VuGen將列出適用于單協(xié)議腳本的所有協(xié)議。在列表中選擇“Web(HTTP/HTML)”,并單擊“創(chuàng)建(Create)”按鈕,創(chuàng)建一個空白Web腳本。在實際測試中不一定全部是這個協(xié)議,根據(jù)實際情況而定,可以詢問開發(fā)人員。
圖6-4新建虛擬用戶彈出窗口圖6-5VuGen錄制向?qū)g迎頁面
VuGen的向?qū)⒅笇y試人員逐步完成創(chuàng)建腳本,并使其適應測試環(huán)境。任務窗格列出腳本創(chuàng)建過程中的各個步驟或任務。在執(zhí)行各個步驟的過程中,VuGen將在窗口的主要區(qū)域顯示詳細說明和指示信息。測試人員也可以自定義VuGen窗口來顯示或隱藏各個工具欄。要顯示或隱藏工具欄,則選擇“視圖”,再選擇“工具欄”,并選中或不選中目標工具欄旁邊的復選標記。通過打開“任務”窗格并單擊其中一個任務步驟,可以隨時返回到VuGen向?qū)А?/p>
單擊“開始錄制(StartRecording)”按鈕,開始進行虛擬用戶腳本的錄制工作,LoadRunner將會彈出一個如圖6-6所示的對話框。
圖6-6開始錄制對話框在正式開始錄制腳本之前,測試人員需要填寫完善對話框中的信息。由于被測系統(tǒng)是JForum論壇,它是一個Web應用程序,所以需要使用瀏覽器進行訪問。應確?!皯贸绦蝾愋?Applicationtype)”選中的是“互聯(lián)網(wǎng)應用(InternetApplications)”,并且我們將使用Windows操作系統(tǒng)自帶的IE瀏覽器,作為客戶端訪問JForum論壇,所以“錄制程序(Programtorecord)”應選擇“MicrosoftInternetExplorer”。接下來,在“URL地址”中填入JForum論壇的訪問鏈接地址:
http://0:8080/jforum/forums/list.page
注意:此處需要讀者將其替換成論壇實際訪問的IP地址。
其他內(nèi)容請保持默認,其中“工作目錄(Workingdirectory)”是用來保存錄制產(chǎn)生的腳本以及保存后續(xù)記錄測試日志、監(jiān)控數(shù)據(jù)等內(nèi)容的存儲空間,默認是在LoadRunner中安裝的空間,也可以單擊右側的“...”選擇其他的目錄。
“錄制到Action(RecordintoAction)”對應的下拉列表選擇“Action”,這是因為本例子中僅有測試用戶注冊這一簡單的操作,所以將其直接放于Action部分。實際測試工作中,讀者需要根據(jù)實際測試情況決定將錄制內(nèi)容放置于哪一部分。
注:為了避免IE瀏覽器在打開網(wǎng)站時出錯,請確保此時Web服務器(即Tomcat服務)正在運行,如圖6-7所示,且保證在整個測試過程中不會關閉該窗口。
圖6-7Tomcat運行窗口
此外,根據(jù)經(jīng)驗,給出讀者如下建議:
(1)建議在測試過程中,應該時刻關注Tomcat窗口中是否有異常拋出;
(2)選中“Recordtheapplicationstartup”,這樣會記錄IE瀏覽器在訪問應用時做的初始化工作;
(3)如圖6-8所示,單擊“選項(Options)”,找到“高級(Advanced)”,在“支持字符集(Supportchartset)”選擇“UTF-8”,這樣可以對中文字符集有更好地支持,避免腳本中出現(xiàn)亂碼。
圖6-8錄制高級選項單擊“OK”按鈕之后,LoadRunner窗口會自動關閉,并會自動打開IE瀏覽器,彈出如圖6-9所示的浮動控制窗口,此時Web頁面上的所有操作都會被錄制下來,形成腳本。建議測試人員在錄制的過程中添加事務,也可在錄制結束后再添加,前提是必須對每個請求都非常熟悉,清楚地知道某個操作對應的是哪幾個請求。圖6-9錄制時彈出的浮動窗口
接下來,就需要在IE瀏覽器中模擬真實用戶登錄和退出JForum論壇的過程。在如圖6-10所示的IE瀏覽器中,單擊“登入”連接,打開如圖6-11所示的用戶登錄窗口。圖6-10JForum論壇的歡迎頁面圖6-11JForum論壇用戶登錄窗口圖6-12用戶test01成功登錄之后的JForum論壇界面
退出JForum論壇之后,已經(jīng)完成了“登錄”和“退出”操作,此時需要停止虛擬用戶腳本錄制。單擊如圖6-13所示的浮動窗口上的“停止”按鈕,停止錄制虛擬用戶腳本。圖6-13單擊停止錄制按鈕退出錄制圖6-14LoadRunner錄制虛擬用戶腳本概要圖6-15工具欄中的“保存”按鈕
在彈出的如圖6-16所示的對話框中,輸入需要保存的文件名,如login-logout,單擊“Save”按鈕保存虛擬用戶腳本。圖6-16保存錄制的虛擬用戶腳本
2.查看錄制的腳本
在如圖6-17所示的錄制概要界面中,單擊左側的“Actions”連接,可以查看剛剛錄制的虛擬用戶腳本。同時,在該界面的右側,還可以看到錄制腳本過程中VuGen自動保存的用戶操作界面的截圖。后續(xù)校驗時可以根據(jù)該截圖比對腳本,查看是否存在問題。圖6-17錄制概要界面
可以在VuGen中查看剛剛錄制的虛擬用戶腳本。VuGen提供了“樹視圖”和“腳本視圖”兩種查看腳本的方式。樹視圖是一種基于圖標的視圖,將虛擬用戶的操作以步驟的形式列出,而腳本視圖是一種基于文本的視圖,將虛擬用戶的操作以函數(shù)的形式列出,如圖6-18所示。測試人員可以在該窗口中直接輸入C或LoadRunnerAPI函數(shù)以及控制流語句,對虛擬用戶腳本進行編輯。要在VuGen中進入腳本視圖,可以在菜單欄中選擇“視圖”,再選擇“腳本視圖”,或者單擊“腳本”按鈕。圖6-18VuGen提供的腳本視圖
3.回放錄制的腳本
通過錄制一系列典型用戶操作(如用戶登錄、退出系統(tǒng)),已經(jīng)模擬了真實用戶操作。將錄制的腳本加入到負載測試場景之前,回放剛剛錄制的腳本,以驗證其是否能夠正常運行每一步必要操作。因為只有在確保每個虛擬用戶腳本都可以正確運行的前提下,才能通過Controller在場景中運行該腳本。否則,負載測試將失去意義。在回放過程中,測試人員可以在瀏覽器中查看操作并檢驗是否正常。
在如圖6-19所示的向?qū)ы撁嬷校瑔螕簟癟asks”中的“VerifyReplay”按鈕,回放已經(jīng)錄制的腳本,檢查該腳本是否可以正確執(zhí)行。
圖6-19向?qū)е械幕胤挪僮鲌D6-20腳本回放校驗結果圖6-21回放結果對比
4.添加事務
確認錄制腳本正確之后,在使用該腳本進行負載測試之前,需要對腳本進行增強處理,包括添加事務、參數(shù)化、設置集合點等操作。本次試驗中,僅需要進行添加事務和參數(shù)化兩步操作。
觀察圖6-18中生成的腳本,位于Action部分的腳本實際上由登錄和注銷兩個操作組成。在不添加事務的時候,LoadRunner會將兩個操作的完成時間記錄在一起。而實際上我們希望分別得到不同事務的處理時間,因此我們需要在Action部分增加事務。LoadRunner收集關于事務執(zhí)行時間長度的信息,并將結果顯示在用不同顏色標識的圖和報告中。測試人員可以通過這些信息,了解應用程序是否符合最初的要求。操作時,可以在腳本中的任意位置手動插入事務。在腳本中將用戶步驟標記為事務的方法,是在事務的第一個步驟前面放置一個開始事務標記,并在最后一個步驟后面放置一個結束事務標記。圖6-23在事務創(chuàng)建向?qū)е刑砑邮聞請D6-24在腳本視圖下事務的源代碼
5.參數(shù)化用戶登錄信息
在腳本視圖中可以發(fā)現(xiàn),腳本中記錄的是用戶test01的登錄和退出操作。但在實際業(yè)務中,要改進測試,使得不同的用戶名配合該用戶對應的密碼進行登錄,才能確保登錄的成功。同樣的,注銷時也需要使用與登錄用戶相同的用戶名才能確保成功退出。
為此需要對腳本進行參數(shù)化。這意味著要將錄制的值“test01”替換為一個參數(shù)。將參數(shù)值放在參數(shù)文件中。運行腳本時,虛擬用戶將從參數(shù)文件中取值,從而模擬真實的用戶登錄和退出業(yè)務。
選擇“視圖”,再選擇“樹視圖”,進入樹視圖;或者單擊“Tree”按鈕進入樹視圖,如圖6-25所示。
圖6-25切換到樹視圖圖6-26從樹視圖中進行參數(shù)化
單擊第一行“username”對應右側的“ABC”按鈕,在彈出對話框的“參數(shù)名”輸入框中輸入“username”,單擊“Properties”按鈕。
對表單中的數(shù)據(jù)username進行參數(shù)化。在圖6-27所示的參數(shù)屬性對話框中,輸入文件名“userinfo.dat”,單擊“CreateTable”按鈕。LoadRunner將提示該參數(shù)文件不存在,提示是否創(chuàng)建。在彈出的對話框中單擊“確定”按鈕,確定創(chuàng)建名為“userinfo.dat”的參數(shù)文件。
圖6-27參數(shù)屬性對話框圖6-28編輯參數(shù)屬性對話框圖6-29對password進行參數(shù)化圖6-30完成參數(shù)化之后的對話框圖6-31查看username和password參數(shù)化后的結果圖6-32對logout事務中的字符串進行參數(shù)化6.4.2創(chuàng)建場景
負載測試是指在典型工作條件下測試應用程序,例如,多家旅行社同時在一個機票預訂系統(tǒng)中預訂機票。
測試人員需要設計測試用例來模擬真實情況。為此,測試人員要能夠在應用程序上生成較重負載,并指定向系統(tǒng)施加負載的時間。特殊情況下,可能還需要模擬不同類型的用戶活動和行為。例如,一些用戶可能使用其他瀏覽器訪問被測目標系統(tǒng),或者可能使用移動網(wǎng)絡接入被測目標系統(tǒng)。在場景中都可以創(chuàng)建并保存這些設置。Controller將提供所有用于創(chuàng)建和運行測試的工具,幫助準確模擬工作環(huán)境。
關閉VuGen之后,將回到Launcher界面,如圖6-33所示。單擊“RunLoadTests”連接,將打開Controller創(chuàng)建新場景。
圖6-33運行負載測試
Controller提供了兩種場景類型:
(1)通過手動場景可以控制正在運行的虛擬用戶數(shù)目及其運行時間,還可以測試出應用程序能夠同時運行的虛擬用戶數(shù)目??梢允褂冒俜直饶J?,根據(jù)業(yè)務分析員指定的百分比在腳本間分配所有的虛擬用戶。安裝后首次啟動虛擬用戶時,默認選中百分比模式復選框。
(2)面向目標的場景用來確定系統(tǒng)是否可以達到特定的目標。例如,LoadRunner可以根據(jù)指定的事務響應時間、每秒單擊數(shù)或事務數(shù)確定目標,然后自動創(chuàng)建場景。
在圖6-34所示的窗口中,選擇“ManualScenario”,由測試人員手動生成場景。然后選擇login_logout腳本,單擊“Add”按鈕,將login_logout腳本加入到新場景中。最后,單擊“OK”按鈕,完成創(chuàng)建新場景。
圖6-34創(chuàng)建新場景
1.場景計劃
在“場景計劃(ScenarioSchedule)”窗口中,設置加壓方式以準確模擬真實用戶行為。可以根據(jù)運行虛擬用戶的計算機、將負載施加到應用程序的頻率、負載測試持續(xù)時間以及負載停止方式來定義操作。
用戶不會同時登錄和退出系統(tǒng)。LoadRunner允許用戶逐步登錄和退出系統(tǒng)。它還可以確定場景持續(xù)時間和場景停止方式。下面將要配置的場景相對比較簡單,在設計更能準確地反映現(xiàn)實情況的場景時,可以定義更真實的虛擬用戶活動。
在圖6-35所示的界面中,給場景命名“l(fā)ogin-logout”,然后分別設置“StartVusers”、“Duration”和“StopVusers”。
圖6-35設計測試場景
“初始化(Initialize)”是指通過運行腳本中的vuser_init操作,為負載測試準備虛擬用戶和負載生成器。在虛擬用戶開始運行之前對其進行初始化可以減少CPU占用量,并有利于提供更加真實的結果。
在“Action”單元格中雙擊“初始化”。這時將打開“編輯操作”對話框,顯示初始化操作。選擇同時初始化所有虛擬用戶。按照一定的間隔啟動虛擬用戶,可以讓虛擬用戶對應用程序施加的負載在測試過程中逐漸增加,幫助準確找出系統(tǒng)響應時間開始變長的轉(zhuǎn)折點。
在“Action”單元格中雙擊“啟動虛擬用戶”,將打開“編輯操作”對話框,顯示啟動虛擬用戶操作。在“開始X個虛擬用戶”框中,輸入10個虛擬用戶并選擇第二個選項:每00:00:15(15秒)啟動兩個虛擬用戶。
測試人員指定本次測試的持續(xù)時間,確保虛擬用戶在特定的時間段內(nèi)持續(xù)執(zhí)行計劃的操作,以便評測服務器上的持續(xù)負載。如果設置了持續(xù)時間,腳本會運行這段時間內(nèi)所需的迭代次數(shù),而不考慮腳本運行時所設置的迭代次數(shù)。在“Action”單元格中,單擊持續(xù)時間或圖中代表持續(xù)時間的水平線。這條水平線會突出顯示,并且在端點處顯示點和菱形。將菱形端點向右拖動,直到括號中的時間顯示為00:06:00,此時已設置虛擬用戶運行5分鐘。
建議逐漸停止虛擬用戶,以幫助應用程序在達到閾值后,檢測內(nèi)存漏洞并檢查系統(tǒng)恢復情況。在“Action”單元格中雙擊“停止虛擬用戶”。這時將打開“編輯操作”對話框,顯示停止虛擬用戶操作。選擇第二個選項并輸入以下值:每隔00:00:30(30秒)停止5個虛擬用戶,然后單擊“Run”按鈕,切換到運行界面。
2.增加LoadGenerator
向場景中添加腳本后,可以配置生成負載的計算機(即負載生成器,LoadGenerator)。負載生成器是通過運行虛擬用戶,在應用程序中生成負載的計算機。負載生成器通過操作系統(tǒng)上的進程或者線程來運行虛擬用戶腳本,從而模擬真實用戶的行為。因此,一臺配置固定的計算機能夠有效運行的虛擬用戶數(shù)量是有限的。如果希望運行的虛擬用戶數(shù)量超過了一臺負載生成器運行虛擬用戶數(shù)的最大值,就需要多使用幾個負載生成器。一個Controller可以使用多個負載生成器,并在每個負載生成器上運行多個虛擬用戶。
此外,Controller可以使用的負載生成器的數(shù)量以及可以運行的虛擬用戶數(shù)量還和購買的許可證有關。圖6-36添加新的負載生成器
當然,如果添加的服務器與Controller不在同一臺服務器上運行,則需要輸入對應服務器的IP地址或主機名,并選中正確的操作系統(tǒng)。
添加成功之后,名為“l(fā)ocalhost”的負載生成器將出現(xiàn)在負載生成器列表中,并且狀態(tài)為連接狀態(tài),如圖6-37所示。圖6-37添加成功的localhost負載生成器
3.設置被監(jiān)控的Windows系統(tǒng)
為了能夠在Controller中監(jiān)視運行被測目標系統(tǒng)時Windows系統(tǒng)的資源使用情況,需要手工在Windows上進行如下操作。
進入被監(jiān)視的Windows系統(tǒng),在“開始”菜單的“運行”中(可以用Win+R快捷鍵)輸入services.msc,打開如圖6-38所示的服務管理器。在服務列表中,開啟RemoteProcedureCall(RPC)和RemoteRegistry兩個服務。圖6-38Windows操作系統(tǒng)的服務管理器
如果在被監(jiān)視的Windows系統(tǒng)中,管理員帳戶沒有密碼,則需要進行如下操作,為其添加密碼。在控制面板中,依次進入“用戶帳戶”和“家庭安全\用戶帳戶\管理帳戶”,選擇管理員帳戶,單擊“創(chuàng)建密碼”連接,打開如圖6-39所示的界面,輸入密碼,如123456。最后,單擊“創(chuàng)建密碼”按鈕,完成給Administrator添加密碼“123456”的操作。
圖6-39為Administrator創(chuàng)建密碼
4.增加對Windows主機的監(jiān)控
對被測目標系統(tǒng)生成重負載時,測試人員可能希望實時了解應用程序的性能以及潛在的瓶頸。此時,使用LoadRunner自帶的一套集成監(jiān)控器,可以評測負載測試期間,被測目標系統(tǒng)所在服務器每一層的性能及其組件的性能。LoadRunner包含多種后端系統(tǒng)組件(如Web、應用程序、數(shù)據(jù)庫和ERP/CRM服務器)的監(jiān)控器。例如,可以根據(jù)正在運行的Web服務器類型選擇相應的資源監(jiān)控器。還可以為相應的監(jiān)控器購買許可證,例如IIS,然后使用該監(jiān)控器精確定位IIS資源中反映的問題。
圖6-40添加度量窗口
在彈出的Windows資源窗口中,單擊“Add”按鈕,然后在彈出的“AddMachine”對話框的Name輸入框中輸入運行Tomcat服務器的IP地址,如“0”,選擇Platform為“WindowsVista”,單擊“OK”按鈕,將測試機添加到監(jiān)控中,如圖6-41所示。
圖6-41添加被監(jiān)控的Windows服務器圖6-42填寫被監(jiān)控Windows服務器的認證信息6.4.3執(zhí)行測試
單擊“StartScenario”按鈕,開始測試。如果是第一次執(zhí)行測試,Controller會開始運行場景,結果文件將自動保存到LoadGenerator的臨時目錄下。如果是重復測試,系統(tǒng)會提示覆蓋現(xiàn)有的結果文件。建議此時單擊“No”,因為首次負載測試的結果應該作為基準結果,用來與之后的負載測試結果進行比較。因此,需要為后面再次測試的結果指定新的結果目錄。為每個結果集輸入唯一且有意義的名稱,因為在分析時可能要將多次場景運行的結果重疊。
在運行測試過程中,觀察運行時的指標參數(shù),如Hits/Second、PassedTransactions等。在Controller的“Run”選項卡中,默認顯示如圖6-43所示的四個聯(lián)機圖:
(1)“正在運行Vuser-整個場景”圖:顯示在指定時間運行的虛擬用戶的數(shù)量。
(2)“事務響應時間-整個場景”圖:顯示完成每個事務所用的時間。
(3)“每秒點擊次數(shù)-整個場景”圖:顯示場景運行期間虛擬用戶每秒向Web服務器提交的點擊次數(shù),即發(fā)往服務器的HTTP請求數(shù)。
(4)“Windows資源”圖:顯示場景運行期間評測的Windows資源。圖6-43默認的四個聯(lián)機圖圖6-44場景狀態(tài)窗口
如果應用程序在重負載下啟動失敗,可能是出現(xiàn)了錯誤和失敗的事務。Controller將在輸出窗口中顯示錯誤消息,可以了解消息文本、生成的消息總數(shù)、發(fā)生錯誤的虛擬用戶和負載生成器以及發(fā)生錯誤的腳本。
要查看消息的詳細信息,可選擇該消息并單擊“
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中醫(yī)藥學概論試題及答案
- 隨州市重點中學2024-2025學年數(shù)學高二第二學期期末達標檢測模擬試題含解析
- 企業(yè)財務數(shù)據(jù)安全保密及員工行為規(guī)范合同
- 全球化市場拓展與外貿(mào)企業(yè)知識產(chǎn)權保護合同
- 車輛贈與合同范本及贈與條件約定
- 采石場土地及礦產(chǎn)資源開采權移交合同
- 餐飲業(yè)人力資源招聘與配置顧問合同
- 精細化管理餐飲業(yè)廚師崗位勞動合同
- 團工委工作計劃-團委團支部工作計劃
- 學生批量請假管理制度
- 高空作業(yè)搬運無人機行業(yè)深度調(diào)研及發(fā)展項目商業(yè)計劃書
- 中國廣電山東網(wǎng)絡有限公司市縣公司招聘筆試題庫2025
- 2024年浙江省遂昌縣事業(yè)單位公開招聘教師崗考試題帶答案分析
- 2024年江蘇省武進市事業(yè)單位公開招聘醫(yī)療衛(wèi)生崗考前沖刺模擬帶答案
- 2025屆陜西省高三新高考全真模擬政治試題(原卷版+解析版)
- 南京2025年南京市市場監(jiān)督管理局所屬事業(yè)單位招聘編外筆試歷年參考題庫附帶答案詳解
- 2025貴州中考:政治必考知識點
- 心率變異性與情緒狀態(tài)的相關性-洞察闡釋
- 2025-2030中國再生纖維行業(yè)市場發(fā)展現(xiàn)狀及競爭策略與投資前景研究報告
- 2025屆湖北省示范中學高考沖刺押題(最后一卷)英語試卷含答案
- 2025年初中語文名著閱讀《林海雪原》知識點總結及練習
評論
0/150
提交評論