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