性能測試之Web測試

隨着網絡世界的迅猛發展,網站的性能變得日益重要,性能不好的網站將被用戶所拋棄。所以性能是用戶對軟件系統是否滿意的一個重要方面。本文將對什麼是性能,如何測試性能等方面進行論述。

  那麼性能是什麼呢,性能是特定功能佔用的時間和資源。他可以是功能的開銷或者是同步運行功能的數目。Web性能測試就是模擬大量用戶操作給網站造成壓力,並評測web系統在不同負載和不同配置下能否達到已經定義的標準。性能測試更加關注分析和消除與軟件結構中相關聯的性能瓶頸。

  性能是每個軟件系統必須考慮的指標,在性能測試中我們通常注意以下四方面數據:一、負載數據;二、數據流量;三、軟件本身消耗資源情況;四、系統使用情況。由於性能測試的特殊性,一般情況下都是利用特殊的測試工具(如LoadRunner,TestManager,ACT等)模擬多用戶操作,對需要評測的系統造成壓力。找出系統的瓶頸,並提交給開發人員進行修正。所以性能測試的目的是找出系統性能瓶頸並糾正需要糾正的問題。

  制定WEB性能測試的策略可以遵循對系統中最重要的模塊,經常使用的模塊,系統開銷最大的地方(代碼最複雜的部分),對用戶來說最重要的部分進行測試。我們從整體的角度分析一下性能可能出現問題的地方,作爲web程序不管是兩層,還是多層系統架構的程序。系統都是通過http協議(超文本傳輸協議(HypertemxTransferProtocol,HTTP)是一個“請求-迴應”的應用協議,這個協議支持一套固定的方法如Get,Post,Put,Delete等)來傳輸數據,發送命令。中間的過程大致爲客戶端(瀏覽器)發送數據操作請求給服務器,服務器接收命令請求後進行處理,然後把結果返回給客戶端,客戶端處理響應結果。這個過程中客戶端發送請求進行數據處理的過程一般不是系統的性能瓶頸,這個時候一般是大量用戶同時操作,發送數據請求才是系統的瓶頸。系統的服務器硬件資源最有可能是軟件系統的瓶頸。我們需要調整軟件和環境(最優化響應時間和資源),確認應用和系統可以處理的高負載和壓力條件。而這個時候系統硬件中最可能的是cpu造成的瓶頸。系統中其他硬件資源所造成的瓶頸,我們可以替換相應的硬件資源,進行調整。而系統中另一個瓶頸可能是服務器把處理數據發送給客戶端,這個過程硬件資源就不可能是性能的限制因素,最有可能是帶寬的原因。

  其實性能的問題大多數情況下是由於軟件體系結構或設計不合理造成的,而不是編碼引起的。如果在性能測試中發現CPU佔用率居高不下,內存佔用異常,經常報錯的情況問題的時候,排除上邊分析的原因外,應及時提交情況彙總給開發人員,讓開發人員察看代碼中出錯環節是否有死循環等邏輯錯誤,檢查應用部署後所使用的數據連接驅動是否有誤或者代碼未及時更新,查看數據庫查詢或者其他語句是否有異常,中斷測試,只運行響應時間最長的頁面並驗證結果。分析系統可能的性能瓶頸。

  我們需要在測試中注意不同的帶寬條件對測試結果所造成的結果,所以應該在性能測試前要制定系統性能標準,這樣才能合理分析測試結果。把不同帶寬的測試結果進行分析量化,找到測試系統瓶頸。

  一般性能測試中最常見的基本類型爲基準測試,配置測試,負載測試,壓力測試,我們知道在軟件測試的過程中,不同階段,不同類型所進行的性能測試關注測試目標是不同的,不同軟件架構也決定了性能測試存在差異。這樣就要對所進行的測試類型有一定的瞭解,才能更好的進行性能測試工作。下邊是各種測試類型的具體概念:

  基準測試——把新服務器或者未知服務器的性能和已知的參考標準進行比較

  配置測試——確認服務器在不同的配置下性能的可接受性。(操作條件不變)

  負載測試——確認服務器在不同的負載條件下性能的可接受性。(操作條件不變)

  壓力測試——確認服務器在異常或者極限的條件時性能的可接受性,例如,減少資源或大數量的用戶。

  競爭測試——確認服務器可以處理多個客戶對同一個資源的請求競爭

  通過系統基準測試提供的一定條件下服務器如何處理數據的基線,作爲評估其他性能指標的參考數據起點。進行配置測試則是測試系統配置在不同的機器上能否正常運行。用配置測試來確保系統在多個平臺上正常運行。而負載測試用來測試在不同負載條件下客戶端或者服務器端的響應時間。幫助測試人員計算在限定時間內服務器響應處理的請求的最大數量的事務數。壓力測試則是在極限條件下運行系統的過程,檢查什麼條件下服務器或者客戶端崩潰。競爭測試則是在一臺或者多臺pc上操作系統功能來模擬實際環境。

  部分測試人員可能面對的是一個已經發布的Web系統,這種情況如何進行性能測試呢。在沒有進行測試之前,可以通過網站的管理人員收集測試數據,爲以後進行性能測試做好準備,收集的信息包括每小時在線用戶數量,平均每小時的在線用戶數量,不同時段的在線用戶峯值比較,收集被訪問次數最多的的頁面,系統正常運行時CPU的使用率。所有這些作爲性能測試的依據,避免盲目進行性能測試。在不瞭解系統的真實情況下進行的性能測試,很可能是錯誤的測試。把過多的精力放在了錯誤的地方。那樣測試結果就不具有真實性,並且會浪費大量的測試資源。

  而對於一個開發中的web系統進行性能測試,就要根據開發目標和用戶需求在體系結構的迭代過程中,不斷調整測試目標,對系統性能有個很好的評估。那麼如何才能成功的進行性能測試呢,我覺得進行性能測試前應有一個測試計劃,這樣才能保證性能測試有序的進行。下邊給出了性能測試的一般步驟:

  ● 評估系統:在這個階段,主要是明確確定系統期望目標,包括:確定系統功能,確定用戶活動,確定系統架構,確定可接受的極限,驗證可接受的極限,確定系統風險等。

  開發測試資源:進行性能測試的資源,主要覆蓋三種活動:開發風險減低計劃,開發測試策略,開發自動化腳本。

  ● 執行基準測試:利用基線對比將來的測試結果對系統評估負載,壓力,競爭測試結果中的相關性能。主要通過壓力場景驗證自動化測腳本的正確性。在測試周期早期中標示可見的性能指標。性能工程包括個體腳本基線,建立初始化基準。

  ● 分析測試結果:對結果進行分析是爲了決定是否對系統繼續進行測試,是否結果達到了期望值。這個階段包含評估結果,確定是否是可接受的極限,確定是否繼續進行測試,確定需求調整。

  ● 預定測試:強制驗證系統性能,這些測試是必須執行的即使性能和需求都沒有調整的情況下。它包含執行用戶體驗測試,執行穩定性測試,執行產品確認測試等活動。

  ● 結束測試:實際工作中由於軟件架構和其他資源限制,軟件無法繼續優化,此時建議將測試資源轉移,測試其他方面,避免測試資源浪費。

發佈了7 篇原創文章 · 獲贊 0 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章