更新時間:2020-12-01 來源:黑馬程序員 瀏覽量:
在早期的軟件開發(fā)中,軟件大多是結(jié)構(gòu)簡單、功能有限的小規(guī)模軟件,那個時候的測試就等同于調(diào)試。隨著計算機(jī)軟件技術(shù)的發(fā)展,調(diào)試慢慢成為軟件開發(fā)不可或缺的工作內(nèi)容很多開發(fā)工具都集成了一些調(diào)試工具,但這個時候的調(diào)試還僅僅傾向于解決編譯、單個方法的問題。
到20世紀(jì)50年代左右,隨著軟件規(guī)模越來越大,人們逐漸意識到僅僅依靠調(diào)試還不夠還需要驗(yàn)證接口邏輯、功能模塊、不同功能模塊之間的耦合等,因此需要引入一個獨(dú)立的測試組織進(jìn)行獨(dú)立的測試。在這個階段,人們往往將開發(fā)完成的軟件產(chǎn)品進(jìn)行集中測試,由于還沒有形成測試方法論,對軟件測試也沒有明確定位與深入思考,測試主要是靠猜想和推斷,因此測試方法比較簡單,軟件交付后還是存在大量問題。
經(jīng)歷這一階段后,人們慢慢開始思考軟件測試的真正意義。1973年,黑澤爾(Hetzel博士第一次對軟件測試進(jìn)行了定義:軟件測試是對程序或系統(tǒng)能否完成特定任務(wù)建立信心的過程。這個觀點(diǎn)在一段時間內(nèi)比較盛行,但隨著軟件質(zhì)量概念的提出,它又不太適用了。1983年,黑澤爾(Hertel)博士對其進(jìn)行了修改:軟件測試是一項鑒定程序或系統(tǒng)的屬性或能力的活動,其目的在于保證軟件產(chǎn)品的質(zhì)量。思想一旦爆發(fā),就會呈現(xiàn)出百家爭鳴的景象,這一時期,很多軟件工程師或博士都提出了自己對軟件測試的理解與定義。
G.J.梅耶斯(G.J.Meyers)博士認(rèn)為“軟件測試是為了尋找錯誤而執(zhí)行程序的過程”,相對于測試是為了證明程序中不存在錯誤,他的觀點(diǎn)是正確的。
1983年,IEEE在北卡羅納大學(xué)召開了首次關(guān)于軟件測試的技術(shù)會議,然后對軟件測試進(jìn)行了如下定義:軟件測試是使用人工或自動手段運(yùn)行或測定某個系統(tǒng)的過程,其目的在于檢驗(yàn)它是否滿足規(guī)定的需求或是弄清楚預(yù)期結(jié)果與實(shí)際結(jié)果之間的差異。
IEEE定義的軟件測試非常明確地提出了測試是為了檢驗(yàn)軟件是否滿足需求,它是一門需要經(jīng)過設(shè)計、開發(fā)和維護(hù)等完整階段的過程。
此后,軟件測試便進(jìn)入了一個全新的時期,形成了各種測試方法、理論與技術(shù),測試工具也開始廣泛使用,慢慢地形成了一個專門學(xué)科。
雖然軟件測試得到了長足的發(fā)展,但相比于軟件開發(fā),它的發(fā)展還是相對不足,測試工作幾乎全部是在軟件功能模塊完成或者整個軟件產(chǎn)品完成之后才開始進(jìn)行,這樣發(fā)現(xiàn)軟件缺陷之后,開發(fā)人員再進(jìn)行修改,會消耗大量的人力、物力成本。20世紀(jì)90年代后興起敏捷模型的軟件開發(fā)模式,促使人們對軟件測試重新進(jìn)行了思考,更多的人傾向于軟件開發(fā)與軟件測試的融合,即不再是軟件完成之后再進(jìn)行測試,而是從軟件需求分析階段,測試人員就參與其中,了解整個軟件的需求、設(shè)計等,測試人員甚至可以提前開發(fā)測試代碼,這也是我們在敏捷模型中所提到的“開發(fā)未動,測試先行”。軟件開發(fā)與測試融合,雖然兩者的界限變得模糊,但軟件開發(fā)與測試工作的效率都得到了極大的提高,這種工作模式至今依然盛行。
歸結(jié)起來,軟件測試的發(fā)展過程可使用下面的一張圖來表示。
如今,隨著人工智能與大數(shù)據(jù)時代的到來,軟件測試更是受到越來越多的重視,但現(xiàn)在軟件測試工作還依然沿用20世紀(jì)的方法、理論與思想成果,并沒有突破性、革命性的進(jìn)展。未來,隨著軟件開發(fā)模型與技術(shù)的發(fā)展,軟件測試的思想與方法勢必也會出現(xiàn)里程碑式的變化,這需要更多熱愛軟件測試的人員積極投入研究。
猜你喜歡: