大概說說性能測試的五種應用領域吧,可能純文字內容太多,沒耐心的話,可以跳過不看。。。 ————參考書籍《軟件性能測試過程詳解與案例剖析》
概括來說,可以將性能測試的應用領域划分為下面五個不同領域:
·能力驗證
·規划能力
·性能調優
·瓶頸發現
·性能基准比較
一、能力驗證
能力驗證是性能測試中最簡單也是最常見的一個應用領域。一個典型的能力驗證的問題會采取這樣的描述方式:某系統能否在A條件下具有B能力?
能力驗證領域的特點與性能測試的特點非常接近:
①要求在已確定的環境下運行
只有在一個確定的環境下運行,軟件性能的驗證才是有意義的;因為無法或很難根據系統在一個環境中的表現去推斷其在另一個不同環境中的表現,因此這種應用領域內的測試
必須要求測試環境(如硬件設備、軟件環境、網絡條件、基礎數據等)已確定。
②根據典型業務場景設計測試方案和用例
能力驗證需要了解被測系統的典型業務場景,並根據典型場景設計測試方案和用例;一個典型場景包括操作步驟和並發用戶量條件,設計用例時,需要確定響應的性能指標。
可靠性測試的內容也可以歸入到該應用領域。因為從用戶角度出發,對軟件可靠性的保證也是承諾的軟件性能的一部分。
在能力驗證領域,一般采用的測試方法有:性能測試、可靠性測試、壓力測試和失效恢復性測試。
二、規划能力
規划能力領域通常關心的是:如何使系統具有我們要求的性能能力或者某種可能發生的條件下,系統具有如何的性能能力?
它通常會被描述為:某系統能否支持未來一段時間內的用戶增長或者應該如何調整,使系統能夠滿足增長的用戶數的需求?
能力規划領域具有以下特點:
①它是一種探索性測試
規划能力領域側重點是規划。即該領域不依賴預先設定的用於比較的目標,而要求在測試過程中了解系統本身的能力;這種測試與能力驗證領域內的測試最大區別在於其探索性。
②它可被用於了解系統性能以及獲得擴展性能的方法
規划能力領域的問題是期望了解系統現在的能力,獲得擴展系統性能以應對將來的業務增長的方法。該領域在測試過程中,除了要通過負載測試等方法獲知系統性能表現外,還需要通過
諸如更換設備、調整參數等方法獲知系統性能可擴展的元素。
在規划能力領域,一般采用的測試方法有:負載測試、配置測試和壓力測試。
三、性能調優
性能調優領域主要對應於系統性能進行調優。一般來說,性能調優和其他性能測試應用領域交雜在一起的;性能調優可調整的對象眾多,而且在系統應用的各個階段都可以進行調優。
對於已部署在實際生產環境中的系統應用,對其進行性能調優可能會首先關注應用系統部署環境的調整,例如:對服務器的調整、對數據庫參數以及對應用服務器的參數調整等;
對正在開發中的應用來說,性能調優會更多關注應用邏輯的實現方法、應用中涉及的算法、數據庫訪問層的設計等因素;此時並不要求是測試還是生產環境,只要整個調優過程中具有
一個可用於比較的測試基准環境即可。
一個標准的性能調優過程大概如下:
1、確定基准環境,基准負載和基准性能指標
基准負載是指一種可被用來衡量和比較性能調優測試結果的標准(每次執行性能測試時環境要嚴格保持一致)的運行環境、測試操作腳本和可被用來衡量調優效果的性能指標。
2、調整系統運行環境和實現方法,執行測試
這是性能調優過程中的核心步驟,目的是通過調整,提高應用系統的性能表現;主要包括如下三個方面:
①硬件環境的調整
主要對系統運行的硬件環境進行調整,包括改變系統運行的服務器、主機設備環境(改用具有更高性能的機器,或調整某些服務器的物理內存總量,CPU數量等)、調整網絡環境(更換
更快速的網絡設備,或采用更高寬帶的組網技術)等;
②系統設置的調整
主要對系統運行的基礎平台設置進行調整,比如:根據應用需要調整Unix系統的核心參數,調整數據庫的內存池大小,調整應用服務器使用的內存大小或采用更高版本的JVM環境等;
③應用級別的調整
主要是對應用本身的調整,包括選用新的架構、采用新的數據訪問方式或修改業務邏輯的實現方式等;
PS:實際性能調優過程中,具體的調整視具體情況而定;而且不要一次調整過多的參數或應用實現方法,否則很難判斷具體哪個調整對性能產生了影響(一般3~5處最好)。
3、記錄測試結果,進行分析
該步驟和上一步驟構成了一個性能調優循環,循環的出口是“達到預期的性能調優目標”。
性能調優主要使用的測試方法有:配置測試、負載測試、壓力測試和失效恢復性測試。
四、瓶頸發現
瓶頸發現應用領域的主要目的是通過性能測試手段來發現系統中存在的缺陷,瓶頸。
經常在工作中遇到這樣的問題:應用在測試環境下運行正常,部署到生產用戶環境,就會出現莫名其妙的錯誤;這些情況並不完全是並發或者性能問題導致,大多數情況下,都是由於
並發時的線程鎖、資源競爭或內存問題引起的。
瓶頸發現應用領域一般作為系統測試階段的一種補充手段;在測試過程中發現並發時的應用問題,或作為系統維護階段的問題定位手段,對系統運行過程中出現的問題進行重現和定位。
該應用領域的主要目的是發現缺陷、瓶頸,並無可參照的性能指標或需要達到的性能目標,因此主要采用並發測試的方法。
五、性能基准比較
性能基准比較通常用於敏捷開發過程中。
敏捷開發:大約興起於2000年,與傳統重量級軟件開發方式相比,敏捷開發采納輕量級的軟件開發過程,更注重“產出可用的軟件”,“溝通勝於文檔”等概念,使用“擁抱變化”的態度來
面對開發中不斷的需求變更。
敏捷開發將軟件開發過程划分為多個短時間周期迭代,每個迭代定義了本次迭代需要完成的目標,一個迭代中保持需求的不變以“交付了迭代目標的可工作軟件”作為每個迭代完成的標志。
由於敏捷開發采用“遞增”的開發模式,很難再每個迭代周期內定義明確的性能需求。因此,性能基准比較,就是在不設定目標的情況下,通過每次迭代的比較來得到性能表現的變化,根據
這些變化決定迭代是否達到了預期的目標。
在實際操作中,可以將性能測試形成固定的腳本,並在固定環境上對模塊執行相應的性能測試,測試結果通過工具直接寫入數據庫並通過圖形展現工具將其展現成折線圖,其可以直觀的反應
模塊的每個迭代中性能表現的變化,甚至可以作為驗收條件的一部分。
另外,在敏捷開發中,設定性能基准比較的不僅僅是模塊,還可以在單元測試中為給定的函數設置性能基准比較。
下表將性能測試的方法和應用領域做了關聯,實際執行中可根據需要選用合適的方法:
PS:顏色越深,代表越重要。。。
總結:性能測試應用領域的划分主要按照性能測試的目的和目標進行划分,不同應用領域的性能測試采用不同的方法;當然,實際的性能測試中,情況往往比這個更復雜,這種情況下,
應該按照具體情況設計測試實施計划,分解拆分,為其設計規划不同的測試方法。