張煥生,劉春玲,王靜
(1.河北工程技術高等??茖W校計算機系,河北滄州 061001;2.公安部第一研究所,北京 100048)
基于Web應用的負載測試研究
張煥生1,劉春玲1,王靜2
(1.河北工程技術高等??茖W校計算機系,河北滄州 061001;2.公安部第一研究所,北京 100048)
為保證Web系統(tǒng)在實際運行中提供良好可靠的性能,針對Web應用的復雜特點,提出基于訪問過程的負載測試方法。通過對用戶訪問過程進行劃分,綜合考慮影響測試結果的各種因素,并建立模型以模擬真實用戶,將該方法結合自動化測試工具應用在一個Web系統(tǒng)上,針對測試結果進行分析,提出優(yōu)化方案。實驗表明:該方法能夠較準確地模擬Web應用的真實負載,找出瓶頸,提高系統(tǒng)性能。
Web應用;負載;訪問過程;聚類
Web應用以其方便快捷、易于管理和維護等特點逐步深入到人們的生活中。因為業(yè)務量的不斷增大,一些熱門的Web站點在運行中頻繁發(fā)生數(shù)據(jù)延遲、服務中斷甚至癱瘓的事故,給用戶造成不便也給運營商帶來損失。因此,在Web應用投入使用之前,必須進行負載測試,考察各項度量指標,找出系統(tǒng)的瓶頸。但是,Web應用體系結構復雜、實現(xiàn)過程中多種技術的使用、Web用戶以及網絡的不確定性,都使得負載測試困難很大[1],而只有真正模擬了真實的用戶負載,測試結果才是準確可靠的,才能保證在實際運行中提供良好、可靠的性能,減少潛在的風險。針對這一問題,本文提出基于訪問過程的負載測試方法,綜合考慮影響測試結果的各種要素建立模型,較準確地模擬Web應用的真實負載,結合使用自動化測試工具LoadRunner進行組織和管理測試,能夠較快地收斂到被測試應用系統(tǒng)的負載承受能力和性能下降的轉折點,找出系統(tǒng)瓶頸,提出解決措施,從而提高系統(tǒng)的性能。
由于Web應用的復雜特點,如何根據(jù)系統(tǒng)的使用方式和客戶端以及服務器端的各種特征信息來確定負載,使其接近于真實的用戶負載成為關鍵問題,本文提出了基于訪問過程的負載測試方法,見圖1。
該測試主要由以下2階段組成:
(1)采用基于訪問過程的負載測試方法初步確定Web應用的負載。建立真實有效的模型,充分考慮影響測試結果的若干因素,修正腳本。(2)由測試工具里面的負載產生器根據(jù)以上數(shù)據(jù)生成測試用例,并對某Web應用進行測試。利用性能監(jiān)視器工具監(jiān)視測試過程和結果,并反饋給測試者。
圖1 基于訪問過程的負載測試框架
1.1 基于訪問過程的負載劃分
把用戶對Web應用的訪問過程所經過的各個路徑以及完成這一路徑的不同方法叫做子過程。每個子過程可以分為更小的子過程,當子過程不能再分時,把它叫做一個基本訪問過程。根據(jù)這種思想把用戶對Web應用的整個訪問過程進行相對獨立的劃分,劃分出的若干個基本訪問過程作為虛擬用戶,初步分析這些虛擬用戶和實際使用中真實用戶給服務器施加的負載性質基本相同,進行初步的腳本錄制并保存。
例如用戶進行資源下載時,可把整個訪問過程做如圖2所示劃分。
1.2 服務器日志的聚類分析
對服務器日志的聚類分析[2]是在沒有先驗知識的情況下,將物理或抽象的對象集合劃分為類似的對象組成多個組,使同組中的對象具有最大的相似性,并進行標號。然后對簇進行處理分析,目的是確定各個訪問子過程的訪問頻率、持續(xù)時間以及百分比等要素,為設計測試用例提供依據(jù)。
圖2 訪問過程的劃分
Web日志挖掘并不是簡單地把數(shù)據(jù)挖掘算法應用在Web日志上,在使用挖掘算法之前必須進行數(shù)據(jù)預處理,由3個階段完成:(1)數(shù)據(jù)清洗。將服務器日志中用戶訪問頁面的日期、持續(xù)時間、IP地址等有用條目保留并格式化,刪除與本文訪問過程無關的信息。(2)用戶session的確定[3]。利用session對象存儲的信息與用戶建立聯(lián)系,得到用戶session信息,并格式化。(3)為確定各種用戶訪問過程的信息,做如下處理:
當訪問Web服務器的是注冊用戶時表示為:{userID,{sessID,{<pageID,time>}}},是匿名用戶時表示為:{ip,{sessID,{<pageID,time>}}}。其中sessID是用戶的session ID,pageID是頁面的ID,time是訪問的時間。userID是注冊用戶ID,ip是用戶IP地址。
數(shù)據(jù)預處理后,本文采用BIRCH算法[3]進行聚類分析。分析結果用于建立模型。
1.3 建立模型修正腳本
為使測試最接近于真實負載,充分考慮影響測試結果的各種因素,建立真實有效的模型。
1.3.1 訪問過程建模
把用戶對Web應用的訪問進行建模。對Web應用的訪問實際上是用戶執(zhí)行的一系列訪問子過程,但測試中不可能窮舉所有的這些過程。虛擬用戶只要模擬與實際負載相同的負載水平即可,例如把下載的整個過程,分為登錄/瀏覽/搜索/下載4個子過程。即用4個虛擬用戶模擬此訪問過程。
用戶的每一訪問過程通常帶給系統(tǒng)的負載壓力是不完全一樣的,為準確模擬實際用戶的訪問過程,需確定各負載的百分比。例如,瀏覽和下載兩個訪問過程差別就很大。瀏覽一般是靜態(tài)頁面,帶給服務器的負載壓力小。而下載一般需與數(shù)據(jù)庫甚至其他子系統(tǒng)通信,帶給服務器的壓力就大得多。用戶百分比等信息通過聚類分析得到?;诖?,對錄制的測試腳本進行修正。
1.3.2 訪問延遲建模
不同的用戶通常在完成同樣的訪問時所表現(xiàn)出來的延遲時間是不同的。為了更真實地模擬真實用戶的訪問過程,必須對用戶進行分類,劃分的越細致,延遲模型的準確度就越高。為此采用了正態(tài)分布的數(shù)學模型[4],用戶延遲圖如圖3所示。根據(jù)該模型建立比較準確的用戶延遲數(shù)據(jù),修正腳本。
圖3 正態(tài)分布的用戶延遲圖
1.3.3 訪問放棄建模
根據(jù)日志分析器提供的信息,確定頁面可接受的打開時間,一旦超時將得出用戶可能的放棄率。如當首屏響應時間小于5s時是比較優(yōu)秀的,放棄率為0%,10 s以內是可以接受的,放棄率是25%,10 s以上用戶會選擇刷新或離開。
1.3.4 其他負載信息建模
借助日志分析器并利用AUT和WUS方法[5-6]收集負載信息。
(1)訪問分布表。記錄Web應用各訪問在一天中不同時段的吞吐率情況。
(2)訪問簡表。記錄各訪問在高峰階段和非高峰階段的吞吐率對數(shù)據(jù)庫和Web服務器負載情況以及操作失敗帶來的風險信息。
Web應用實現(xiàn)過程中涉及到多種技術的使用,使得測試任務非常艱巨。選擇合適的自動化測試工具可以減少測試的時間和測試開銷[7]。目前Web應用測試工具眾多,其中常用的Web性能測試工具有:微軟的WAS、Rational Robot、Jmeter、LoadRunner、OpenSTA等。其中LoadRunner可以預測系統(tǒng)的行為和性能,適用于各種體系架構。它能模擬成千上萬個用戶并發(fā),進行實時地性能檢測,支持的協(xié)議和技術非常廣泛,可以最大限度地縮短測試時間,優(yōu)化性能[8]。基于此選用其作為測試工具。
現(xiàn)對一個綜合型IT網站進行測試。該網站主要提供用戶的注冊登錄、IT信息、交流空間(論壇、群或Blog)、資源下載或上傳、搜索、視頻等。測試流程如圖4所示。
3.1 測試計劃的制定
測試計劃主要包括測試目標、策略、工具(本文測試工具選用LoadRunner)、進度和測試資源等。
3.2 設計測試場景
設計測試場景的關鍵是使設計的負載能代表真實負載,一般按以下3原則:
圖4 負載測試流程
(1)應確定訪問過程的組合以反映真實情況。窮舉執(zhí)行所有訪問過程是不現(xiàn)實的,經驗表明選擇執(zhí)行80%左右是比較有效的,選擇執(zhí)行率高、給Web服務器和數(shù)據(jù)庫服務器帶來較重負載的訪問?;诖诉x擇了7個訪問過程:注冊、登錄、瀏覽、搜索、論壇、視頻和下載作為測試基礎。
(2)測試的速度應反映真實用戶訪問的速度。針對日志分析、性能監(jiān)測結果,得到負載訪問數(shù)量、平均訪問時間(或思考時間)等信息。
(3)確定綜合負載以反映真實的測試數(shù)據(jù)。設計一天某時段的訪問數(shù)為2 000,根據(jù)7個訪問過程,綜合考慮各模型信息,得到綜合負載,給出部分數(shù)據(jù)如表1所示。
3.3 開發(fā)測試腳本
首先根據(jù)訪問過程的劃分使用LoadRunner[9]的Virtual User Generator生成初步的測試腳本;然后根據(jù)各種模型修正腳本,用LoadRunner的Controller組織管理測試;最后對腳本進行反復調試和驗證,保證測試結果的準確性。
3.4 運行、分析和優(yōu)化
運行測試場景、分析結果、優(yōu)化系統(tǒng)需要反復進行。
運行時由輕負載(如5~20個虛擬用戶)到中等負載(如20%左右的負載)再到重負載(如100%的負載)甚至超負載(如120%的負載)分階段進行。運行測試場景時,發(fā)現(xiàn)通過逐漸增加用戶數(shù)進行并發(fā)用戶(都運行相同的行為腳本,比如登錄操作)數(shù)目測試[10],來模擬峰值負載的時候,當用戶達到1000時,系統(tǒng)的運行響應速度開始降低,出現(xiàn)部分錯誤,再繼續(xù)增加一定用戶數(shù)量,系統(tǒng)中活動的用戶數(shù)竟呈直線下降,并且服務器返回大量錯誤信息。這說明,此時系統(tǒng)出現(xiàn)性能瓶頸,需要更新服務器硬件或對系統(tǒng)進行其他優(yōu)化。
表1 測試用例生成
系統(tǒng)響應時間可以精確地找到性能下降的轉折點。運行中收集到的性能數(shù)據(jù)可通過LoadRunner Analysis生成一系列直觀的圖表和報告,供分析人員處理。經分析發(fā)現(xiàn)視頻用戶數(shù)和文件下載用戶數(shù),是造成系統(tǒng)延遲的最大操作,其次是登錄、瀏覽、論壇等,這些都是訪問數(shù)據(jù)庫較頻繁的操作,那么影響性能的瓶頸即可能來源于數(shù)據(jù)庫。需要對數(shù)據(jù)庫進行優(yōu)化處理。
經測試分析,發(fā)現(xiàn)系統(tǒng)性能瓶頸主要來源于數(shù)據(jù)庫和服務器,對系統(tǒng)可以進行以下3個方面的優(yōu)化處理:(1)對于系統(tǒng)中頻繁訪問數(shù)據(jù)庫但內容更新較小的應用,使用html靜態(tài)化實現(xiàn),例如論壇的公用設置信息,會大量被前臺程序調用,但更新較少,因此將其進行靜態(tài)化處理,以避免大量的訪問數(shù)據(jù)庫請求;(2)為解決服務器資源的不足,擴充服務器內存,增大IIS緩存空間,設立獨立的圖片服務器,在圖片服務器和應用服務器上進行不同的配置優(yōu)化,以保證系統(tǒng)的執(zhí)行效率和高消耗;(3)數(shù)據(jù)庫瓶頸問題,使用數(shù)據(jù)庫集群和庫表散列的方式解決,將數(shù)據(jù)庫進行分離,不同的模塊對應不同的數(shù)據(jù)庫或表,再進一步對頁面或功能進行更小的數(shù)據(jù)庫或表散列,以保證使用低成本的數(shù)據(jù)庫同時提高了系統(tǒng)的性能。優(yōu)化之后要重新運行測試場景以驗證優(yōu)化的有效性。
基于訪問過程的負載測試方法,指出了保證測試成功的關鍵因素,能夠提高系統(tǒng)性能。但是在模型的建立過程中完善其他的影響因素以及廣泛實施到各種Web應用是日后的研究重點。
[1]耿彩鳳.網絡測試中的Web測試[J].遼寧大學學報,2005,32(3):272-274.
[2]Han J,Kamber M.數(shù)據(jù)挖掘概念與技術[M].北京:機械工業(yè)出版社,2007.
[3]鄭玲霞,李大學.基于用戶聚類分析的網站導航結構智能優(yōu)化研究與實現(xiàn)[J].重慶郵電學院學報,2005,17(6):763-767.
[4]張江河,葛瑋,董云衛(wèi).Web應用的負載測試策略研究[J].微機發(fā)展,2003,15(2):35-37.
[5]梁晟,李明樹.一種模擬驅動的Web應用程序性能測試方法[J].計算機研究與發(fā)展,2003,40(7):1069-1075.
[6]孫鐵昆.Web應用系統(tǒng)的測試技術研究與實現(xiàn)[D].武漢:湖北大學,2006.
[7]路曉麗.Web應用軟件的測試技術研究[D].西安:西北大學,2006.
[8]李健.基于Web應用系統(tǒng)的性能測試技術研究[D].西安:西安電子科技大學,2010.
[9]尹文斌,鄭劍.基于LoadRunner的Web負載測試[J].江西理工大學學報,2008,29(4):13-15.
[10]談姝辰,尹軍.基于負載的Web性能測試研究與應用[J].現(xiàn)代電子技術,2007,253(14):139-142.
Load testing based on web app lication
ZHANG Huan-sheng1,LIU Chun-ling1,WANG Jing2
(1.Department of Computer,Hebei Engineering and Technical College,Cangzhou 061001,China;
2.The First Research Institute of Ministry of Public Security,Beijing 100048,China)
To ensure good and reliable performance of web system in actual operation,the authors proposed a load testmethod based on access process for complex Web application features.The access processes of users were divided and the models were built by considering the various factors to simulate the case of real users.And thismethod was combined with automated testing tool used in a web system to analyze the test results,and then optimization schemes were proposed.The experiment results show that it is able to more accurately simulate real load,find the bottlenecks,and improve system performance.
web application;load;access process;clustering
TP393.4;TP393.071;TP202+.7;TP391.9
A
1674-5124(2013)03-0096-04
2013-01-07;
:2013-03-01
張煥生(1978-),女,河北滄州市人,講師,碩士,主要從事計算機應用研究。