軟件測試是軟件工程的重要過程之一,是保證軟件質量的重要手段。不同的軟件項目類型,軟件測試占整個項目開發工作量的15%到90%不等。例如普通數據分析軟件,測試投入的工作量比較小,但對于飛行控制、核電管理等軟件測試所投入的精力遠大于開發投入。軟件測試的重要性可見一斑。
這里我們先介紹一下軟件測試的基礎知識。
什么是軟件測試
廣義的軟件測試說白了就是主動地找軟件的問題,包括需求問題、功能問題、可用性問題、可靠性、邏輯問題、健壯性、性能等等。
為什么進行軟件測試
軟件行業發展初期,軟件測試的活基本是由開發工程師自己干的,測試方法及過程比較隨意。但是隨著軟件項目規模越來越大,越來越復雜,軟件故障越來越難以避免,給企業和個人帶來沉痛損失的案例也屢見不鮮,下面僅舉兩例:
1962年美國水手1號飛船發射后262秒就不得不摧毀掉,后來分析是因為代碼中漏敲了一個破折號。
2009年,豐田因雷克薩斯ES350突然剎車失靈,導致車上4名乘客全部罹難。事后豐田不得不在全球召回900萬輛汽車,本次召回給豐田帶來的經濟損失達30億美元。后來據查是防抱死延時軟件故障所致。
因此,對軟件產品主動進行認真測試,盡可能地查出可能的問題和漏洞,已經是現代軟件開發必做的重要工作。通過軟件測試將軟件故障消滅在發布之前,這是所有軟件從業人員的共同心愿。
靜態測試和動態測
軟件測試有動態測試和靜態測試兩種方法。
靜態測試就是通過閱讀軟件的需求 、設計、編碼等靜態文檔,通過分析靜態文字或圖表來發現需求、設計、編碼存在的問題。
可見靜態測試的主要方式就是同級評審,其好處是可以在軟件需求階段、設計階段和編碼期間就可以提前進行檢查分析,及早發現存在的問題。一般而言,問題發現越早,修復成本越低。從這個角度看,靜態測試比動態測試具有更高的性價比。
動態測試就是等軟件開發完畢,測試工程師安裝好軟件,在不同的環境、不同的輸入的情況下,運行并測試軟件的功能、可用性、性能等。我們通常所說的軟件測試就是指動態測試。