楊艷杰
(德州職業技術學院,德州 253034)
研究Web應用程序訪問過程是Web應用程序性能測試模型的基礎。Web應用程序訪問過程模型闡述了訪問Web應用程序的過程,構造一個web訪問請求的響應時間的函數,有助于分析是哪個步驟耗時過長,是系統的性能瓶頸。
一個典型的Web事務(請求與響應)過程的每個步驟都需要耗費一定時間。Web應用程序訪問過程模型及各步驟耗費的時間如圖1所示。圖中,N1、N2、N3和N4均為網絡傳輸的時間,S1、S2和S3為服務器計算時間,C1為客戶端執行腳本的時間。
從用戶角度來看,只有在客戶端執行完所有預加載的腳本后,才能完全地使用web的功能,因而客戶端執行腳本的時間也應重點考慮。

圖1 Web應用程序訪問過程模型
統計在客戶端消耗的時間,包括從電擊超鏈接到看到網頁內容,主要包括:第一,在客戶端建立TCP連接所需要的三次握手過程的時間;第二,顯示內容和圖片,以及解析HTML文件所消耗的時間;第三,執行客戶端腳本所需要時間。為讓用戶更快地看到網頁內容,則需在性能優化過程中,減少上述三點消耗的時間,其中應重點投入的是第2和第3點。
1.2.2 網絡因素
傳輸線路和轉發設備是網頁在網絡上所產生的延遲的主要兩方面原因。應用層協議HTTP在Web系統上使用。在TCP協議數據單元中封裝有HTTP協議數據單元,同時,IP分組中封裝有TCP協議數據單元,然后相關的IP分組為數據幀以便在網絡上傳輸。其中,網絡的帶寬和延遲和轉發設備的轉發能力事直接影響網頁傳輸時間的兩大因素。
1.2.3 服務器因素
對于作為Web系統的核心的服務器來說,其性能狀況對Web應用系統性能影響明顯。服務器通常包括Web服務器、應用服務器和數據庫服務器,它們通常處于一個局域網內。服務器由一系列軟件和硬件所組成。影響Web應用程序性能的軟件因素主要指數據庫系統和Web程序自身。
1)數據庫系統:在動態網頁中增加、刪除、修改、查詢數據庫記錄時,響應時間包括耗費相關的時間。其中,對數據庫數據的操作和建立和釋放數據庫連接,這兩項都是數據庫系統對于Web系統的性能影響問題。
2)Web程序自身:Web程序自身對Web系統的性能的影響主要表現在:業務邏輯的算法不夠優化;對硬件組件資源、數據庫系統使用的不正確;使用冗余代碼,導致不必要的時間消耗。因此,在服務器端,影響Web應用系統的性能問題的因素,在軟件和硬件兩個層面均有諸多可能,這給性能問題定位和性能調優工作帶來了許多困難。
Web應用程序的性能由一系列性能度量的標準來衡量。Web應用程序的性能與相關服務器的軟硬件平臺、網絡帶寬和負載情況有關。各性能指標也主要是反映服務器、網絡和負載的情況。本文主要研究響應時間、吞吐率)、資源利用率這三種指標。
響應時間也稱為等待時間,從用戶觀點來看,它通常隨著用戶負載的增加而緩慢增加,但一旦越過某個負載臨界點,等待時問就會快速地增加。在這個臨界點,通常有至少一種系統資源以耗盡。用戶負載如持續在臨界點之上,可能會造成Web應用程序的崩潰。
針對Web應用系統的性能優化最終目的都是優化用戶體驗。而響應時間是影響用戶體驗的一個重要的因素。通過以上分析,改善響應時間可以從縮短網絡傳輸時間、服務器計算時間和客戶端腳本執行時間做起。
所謂吞吐率,其常用的單位為請求數/秒或頁面數/秒,就是單位內系統所處理的用戶請求在一定時間內的數目,也可以視為,每天的訪問者數或每天頁面的瀏覽次數來衡量吞吐率。
一般而言,在未達到某個負載臨界點時,吞吐率與用戶負載成正相關關系,而在越過這個臨界點后,則吞吐率將保持不變甚至下降。這里分兩種情況:當臨界點是由于網絡設備的流量引起的時候,吞吐率會保持不變,這時需要改善網絡情況,吞吐率可能會繼續和用戶負載保持正相關關系;當臨界點是由服務器承載壓力過大引起的時候,吞吐率會下降,此時,Web應用系統拒絕服務甚至崩潰,這時需要改進服務器的軟硬件配置來優化性能。
系統不同資源的使用程度,包括內存、服務器的CPU和網絡帶寬等等方面,一般利用占資源的最大可用量的百分比來衡量。資源的最大可用度達到之前,利用率通常與用戶負載成正比例。資源已經成為系統的瓶頸的指標則是資源的恒定值保持在100%。所以,增加系統的吞吐率并縮短等待時間可以通過提升這種資源的容量進行。
場景是用來模擬真實世界的用戶是如何產生訪問壓力的。一組測試場景需要對虛擬用戶腳本、負載產生器和虛擬用戶行為進行配置。LoadRunner可以提供的場景包括兩大類:手動的測試場景和面向目標的測試場景。其中手動的測試場景按是否有業務上的組合可分為單一業務場景和組合業務場景。
單一業務實際是指一些核心業務模塊對應的業務。這些模塊通常具有功能比較復雜,使用比較頻繁,屬于核心業務等特點。單一業務場景測試的重點是一些系統重要模塊獨立運行的情況。主要測試這類模塊和性能相關的一些算法,還要測試這類模塊對并發用戶的響應情況。只有在決定整個Web應用程序性能的這些核心業務模塊在性能上沒有問題,之后的其他性能測試才顯得有意義。
單一業務場景是整個Web應用程序性能測試的基礎,是不可或缺的,應該在測試的早期進行。
單一業務場景測試的效果主要有:1)發現一些核心業務算法的問題:如一些處理同步、與數據庫等組件交互的算法,其性能為題在單用戶模式下是很難發現的,需要通過測試工具模擬多個用戶的并發操作,必要的時候需維持壓力較長的一段時間,才可以更容易地驗證算法的正確性和性能。2)盡早發現性能問題已降低成本:軟件的缺陷越早被發現則修復的成本越低,性能缺陷也是如此。有時候,核心業務的性能問題可能使項目的架構要推倒重來。因此,盡管性能測試需要較高的成本,但對于Web應用程序的核心功能仍需盡早進行性能測試。
對同一模塊的單一業務場景可以有以下兩方面內容:1)完全一樣功能的并發:該測試是檢查程序對同一時刻并發操作的處理。例如,模擬多個用戶,同時寫入數據庫,看Web應用程序能否做出正確相應。2)同一模塊里不同子功能的并發:在同一業務模塊中,多數功能通常是耦合的,因此,它們可能互相干擾。實際上,這種并發是較常見的單一業務場景。
組合業務場景的性能測試與Web應用程序實際運行情況最為接近。它需建立在單一業務場景測試均較正常的基礎上,把Web應用程序的各個業務模塊按訪問比例進行測試。
組合業務場景設計需要做的工作有:1)確定各個業務模塊的訪問比例;2)根據訪問比例分配虛擬用戶的比例,盡可能地模擬真實用戶常見的場景。
通常,組合業務場景測試的效果有:1)發現業務模塊的交互問題:通常,經過單一業務場景測試后,各模塊的獨立運行基本都是正常的。但由于各業務模塊間或多或少的耦合關系,可能會在同時進行測試時,發現新的問題。2)盡早發現綜合性能問題:綜合性能問題主要指Web應用程序整體的性能問題,綜合性能問題多在組合業務場景測試中被發現。3)模擬真實用戶負載的組合業務場景測試是考察服務器運行狀況的常用方法:通常依據該測試的結果,對服務器硬件情況進行評價,評估是否需要升級硬件或使用集群。
組合業務場景可以包含以下兩方面的內容:1)對有耦合的業務模塊進行組合業務場景測試:主要測試在多用戶并發條件下,一些存在耦合的業務模塊是否正常運行。2)模擬真實用戶場景:模擬一些典型場景進行測試,需先確定各個業務模塊的訪問比例。
面向目標場景的性能測試,是指一些目標明確的,一般在需求分析階段就可以確定期望Web應用程序能夠達到的性能指標。針對這些指標都要設置測試場景來驗證Web應用程序是否達到要求。面向目標的場景設計的關鍵是明確需求,主要參考需求文檔,把屬于性能方面的需求提取出來。面向目標的場景中的性能指標通常有響應時間、最大同時在線人數等,如“Web應用程序可以支持50個并發用戶"、“系統響應時間不得高于5秒”等。
總結和完善Web應用程序性能測試模型,包括Web應用程序訪問過程模型、Web應用程序性能指標和Web應用程序性能測試場景設計模型。
其中, Web應用程序訪問過程模型描述了哪請求生命周期,研究了訪問過程中各步驟對響應時間的影響,創新地提出了普遍受忽視的客戶端腳本執行時間對性能的影響。Web應用程序性能指標主要研究了響應時間、吞吐率和資源利用率,探討了用戶負載與它們的關系,并淺析了三個指標之間的關系。性能測試場景設計模型包括單一業務場景設計、組合業務場景設計和面向目標的場景設計。
[1] 顧靜嫻, 許蕾, 徐寶文. 基于組件Web應用程序的覆蓋率準則和測試需求約簡[J]. 東南大學學報(英文版), 2010,26(1).
[2] 劉龍霞, 吳軍華. 基于UML活動圖的Web應用測試用例生成[J]. 江南大學學報(自然科學版), 2011, 10(3).
[3] 徐海衛, 曾瀟. 機電一體化協同設計平臺研究[J]. 制造業自動化, 2010, 32(11).