講到測試,人們腦海中首先浮現的是針對軟件正確性的測試,即常說的功能測試。但是軟件僅僅只是功能正確是不夠的。在實際開發中,還有許多其它的非功能因素在起著決定性作用。比如軟件響應速度,影響軟件響應速度的因素很多,有些是因為算法不夠高效,有些可能受用戶并發數的影響。
在我所負責的測試項目中,程序功能能夠滿足客戶需求,但當把程序交付客戶使用時,由于客戶網絡應用環境復雜,而我們在壓力測試時沒有周密考慮各種可能發生的情況,軟件程序在巨大負載下頻繁崩潰,使測試團隊飽受客戶和老板的抱怨。由此,我認識到隨著網絡環境的復雜性和多樣性,壓力測試是軟件質量保證的重要元素之一,絕對不能馬虎了事。
什么是壓力測試?
在軟件功能測試中,白盒和黑盒技術用于對正常程序功能和性能進行詳盡的檢查和測試。而壓力測試(Stree
Testing)則是用來對付非正常的情況。
。1)什么是壓力測試
壓力測試是指模擬巨大的工作負荷來測試應用程序在峰值情況下如何執行操作。例如模擬實際軟硬件環境,在超出用戶常規負荷下,長時間運行測試工具來測試被測系統的可靠性,和測試被測系統的響應時間,目的是在極限負載下識別程序的弱點。
在眾多類型的軟件測試中,壓力測試主要是以軟件響應速度為測試目標,尤其是針對在較短時間內大量并發用戶訪問時軟件的抗壓能力。因此,壓力測試是在一種需要反常數量、頻率或資源下運行系統。由于我們之前對“反!边@個關鍵詞沒有理解好,只進行了常規的測試,在這一點上客戶的批評讓我們感到非常汗顏,說我們是“頭發長,見識短”。
。2)壓力測試和負載測試的區別
在這次項目測試前,我一直對壓力測試和負載測試存在著一定程度的混淆。經過這次系統崩潰后,我對壓力測試和負載測試的區別有了新的認識。壓力測試是在超常規負荷條件下,長時間連續運行系統,檢驗應用程序的各種性能表現和反應。負載測試是指測試應用程序在常規負荷下,確認響應時間和其它的性能和表現。
實際上,壓力測試也是從比較小的負載開始,逐漸增加模擬用戶的數量,直到應用程序響應時間超時。壓力測試的特點是長時間連續運行,增加超負荷(并發,循環操作,多用戶)來測試什么時候系統會產生異常,以及異常處理能力,找出瓶頸所在,F在的我終于明白到其實壓力測試實際上就是超常規的負載測試。
。3)壓力測試的核心原則
一個有效的壓力測試需要遵循一些核心的基本原則,這些原則可以讓我們在測試過程中時刻提醒我們壓力測試是否還有更多的極端可能。
、僦貜:最明顯且最容易理解的壓力原則就是測試的重復。換句話說,重復測試就是一遍又一遍地執行某個操作或功能。功能測試是驗證一個操作能否正常執行,而壓力測試則是確定一個操作能否在長時間內每次執行時都正常。
、诓l:并發是同時執行多個操作的行為。換句話說,就是在同一時間執行多個測試用例。功能測試或單元測試幾乎不會與任何并發設計結合。因此,壓力系統必須超越功能測試,要同時遍歷多條代碼路徑。
、哿考:壓力測試另一個重要原則就是要給每個操作增加超常規的負載量。就是說壓力測試可以重復執行一個操作,但是在操作自身過程中也要盡量給程序增加負擔,增加操作的量級。一般來說,單獨的高強度操作重復自身可能發現不了代碼錯誤,但與其他壓力測試方法(如并發和量級)結合在一起時,將可以增加發現錯誤的機會。
、茈S機:意思是任何壓力測試都應該多多少少具有一些隨機性。例如隨機組合前面三種壓力測試原則,然后變化出無數種測試形式,就能夠在每次測試運行時應用許多不同的代碼路徑來進行壓力測試。當一個壓力測試結合的原則越多,測試執行的時間越長,就可以遍歷越多的代碼路徑,發現的錯誤也會越多。
文章來源于領測軟件測試網 http://www.kjueaiud.com/