明確了具體的性能要求后,可以開始進行測試,確定應用程序是否滿足這些要求。性能測試假定應用程序穩定、可靠地運行。因此,在測試中消除盡可能多的變數很重要。例如,代碼中的錯誤可以導致出現性能問題,甚至掩蓋性能問題。要精確地比較不同性能測試的結果,應用程序必須正確地工作。如果調整過程修改了組件的實現,則重新測試應用程序的功能尤其重要。應用程序必須通過功能性測試后才可以測試性能。除了應用程序更改外,硬件、網絡通信量、軟件配置、系統服務等諸多方面也會發生意外的更改?刂茟贸绦蚋暮苤匾。 測量性能 要正確地調整性能,必須準確完整地記錄每次測試的結果并進行維護。記錄應包括:
這些記錄不僅指示應用程序是否達到性能目標,而且有助于識別未來性能問題的潛在原因。 性能調整是與性能管理相關的主要活動。當性能降到最基本的水平時,性能調整由查找和消除瓶頸組成,瓶頸是在服務器中的某個硬件或軟件接近其容量限制時發生和顯示出來的情況。 在開始性能調整循環之前,必須做一些準備工作,為正在進行的性能調整活動建立框架。您應該:
建立了性能調整的邊界和期望值后,可以開始調整循環,這是一系列重復的受控性能試驗。 調整循環重復以下所示的四個調整循環階段,直到獲得在開始調整過程前建立的性能目標。 調整循環 收集收集階段是任何調整操作的起點。在此階段,只是使用為系統特定部分選擇的性能計數器集合來收集數據。這些計數器可用于網絡、服務器或后端數據庫。 不論調整的是系統的哪一部分,都需要根據基準測量來比較性能改變。需要建立系統空閑以及系統執行特定任務時的系統行為模式。因此,可以使用第一遍數據收集來建立系統行為值的基準集;鶞式⒃谙到y的行為令人滿意時應該看到的典型計數器值。 注意 基準性能是一個主觀的標準:必須設置適合于工作環境且能最好地反映系統工作負荷和服務需求的基準。 分析收集了調整選定系統部分所需的性能數據后,需要對這些數據進行分析以確定瓶頸。記住,性能數字僅具有指示性,它并不一定就可以確定實際的瓶頸在哪里,因為一個性能問題可能由多個原因所致。某個系統組件的問題是由另一系統組件的問題導致的,這種情況也很普遍。內存不足是這種情況的最好示例,它表現為磁盤和處理器使用的增加。 以下幾點來自“Microsoft Windows 2000 資源工具包”,提供了解釋計數器值和消除可能導致設置不適當的調整目標值的錯誤數據或誤導數據的指南。
配置收集了數據并完成結果分析后,可以確定系統的哪部分最適合進行配置更改,然后實現此更改。 實現更改的最重要規則是:一次僅實現一個配置更改?雌饋砼c單個組件相關的問題可能是由涉及多個組件的瓶頸導致的。因此,分別處理每個問題很重要。如果同時進行多個更改,將不可能準確地評定每次更改的影響。 測試實現了配置更改后,必須完成適當級別的測試,確定更改對調整的系統所產生的影響。在這一點上,這是確定更改是否有如下影響的問題:
如果幸運,性能提高到預期的水平,這時便可以退出。如果不是這樣,則必須重新逐步進行調整循環。 提示 可以從監視日志文件(可導出到 Microsoft Excel)和事件日志中獲取測試所產生的監視結果。 測試時務必要:
在每遍測試中,運行一系列完全相同的性能測試;否則,無法分辨不同的結果是由于測試中的改動還是應用程序更改造成的。使盡可能多的性能測試操作自動進行有助于消除因操作者造成的差異。 其他表面上是良性的因素影響性能測試的結果,如應用程序在測試開始前運行的時間。正如冷的汽車引擎與熱引擎的性能不同,長時間運行的應用程序由于內存碎片這樣的因素,其性能可能與剛啟動的應用程序不同。 定義性能測試性能測試期間,測量和記錄性能目標中指定的度量標準值。達到全部性能度量標準(如思考時間、事務混合等)很重要。在這些約束下,測試應盡可能實際。例如,對應用程序進行測試,確定它在許多客戶端同時訪問它時的性能。多線程測試應用程序可以用可復制的方式模擬多個客戶端,每個線程表示一個客戶端。如果應用程序訪問數據庫,則數據庫應包含實際數目的記錄,并且測試應使用數據項的隨機(但有效)值。如果測試數據庫太小,數據庫服務器的緩存效果將產生不符合實際情況的測試結果。如果輸入或訪問數據的方式不符合實際情況,則結果也可能不符合實際情況。例如,在主鍵上按字母順序創建新數據是不太可能的。 通常,測試裝置必須接受用戶指定的輸入參數,如事務混合、思考時間、客戶端數目等。然而,測試裝置本身可以規定創建實際的隨機數據的規則。 創建了驅動應用程序的測試裝置后,應該將所有運行測試的不變條件記入文檔。最起碼,這些條件應包括運行測試裝置所需的輸入參數。另外,應將如何設置運行測試的數據庫記入文檔。說明中應指定數據庫不應包含前一遍測試所做的更改。說明中還應指定用于測試的計算機配置。在不同于應用程序所在的另一臺計算機上運行測試裝置,因為這樣設置更接近生產環境。 確定基準性能確定了性能目標并制定了性能測試后,運行一次測試以建立基準。驗證環境與生產環境越相似,應用程序部署后的性能令人滿意的可能性就越大。因此,一開始有一個符合實際情況的驗證環境很重要。 幸運的話,基準性能將符合性能目標,并且應用程序不需要任何調整。但更可能的情況是,基準性能不令人滿意。然而,記錄初始測試環境和基準結果可以為調整工作提供堅實的基礎。 壓力測試壓力測試是性能測試的一種專門形式,它與其他工程領域的破壞性測試相似。壓力測試的目的是使應用程序產生故障,通過增加處理負載使其超過性能的降低,直到由于資源飽和或發生錯誤而使應用程序開始出問題。壓力測試有助于揭示細微的錯誤,這些錯誤本來要到部署應用程序時才會被發現。由于此類錯誤通常是因設計缺陷所致,壓力測試應該早在開發階段便在應用程序的每個區域上開始進行。在其源頭修復這些細微的錯誤,而不是忽視這些錯誤,直到它們可能在應用程序中的其他位置表現出癥狀時才修復它們。 解決性能問題通?蓪⑿阅軉栴}歸結于不止一個因素。因此,查找性能惡化的解決方案與進行科學實驗極為相似?茖W實驗傳統上遵循一個分六步進行的過程,包括觀察、初步假設、預測、測試、控制和結論。結論由該過程積累的最佳證據集合所支持的假設組成?梢宰裱瑯拥倪^程來解決性能問題。 當觀察到 ASP 應用程序的性能比期望的低時,您假定 ASPProcessorThreadMax 元數據庫屬性設置得太低。當“ASP 排隊請求”性能計數器上下移動,并且處理器的運行效率低于 50% 時,可能會發生這種情況。您預測增加 ASPProcessorThreadMax 元數據庫屬性的數值可以提高性能。 活動線程設置現在已經變成控件。一次僅進行一個設置更改,直到觀察到滿意的性能改變。如果在幾次調整 ASPProcessorThreadMax 元數據庫屬性之后獲得了更令人滿意的性能,則結論是某個屬性設置與所有當前變量(所需內存的總量、正在運行的應用程序數、已升級的軟件等)組合,可提供最佳服務器性能。變量中的任何更改就會形成進一步的實驗。 |
文章來源于領測軟件測試網 http://www.kjueaiud.com/