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