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