面向對象程序的結構不再是傳統的功能模塊結構,作為一個整體,原有集成測試所要求的逐步將開發的模塊搭建在一起進行測試的方法已成為不可能。而且,面向對象軟件拋棄了傳統的開發模式,對每個開發階段都有不同以往的要求和結果,已經不可能用功能細化的觀點來檢測面向對象分析和設計的結果。因此,傳統的測試模型對面向對象軟件已經不再適用。針對面向對象軟件的開發特點,應該有一種新的測試模型。
二 面向對象測試模型(Object-Orient Test Model)
面向對象的開發模型突破了傳統的瀑布模型,將開發分為面向對象分析(OOA),面向對象設計(OOD),和面向對象編程(OOP)三個階段。分析階段產生整個問題空間的抽象描述,在此基礎上,進一步歸納出適用于面向對象編程語言的類和類結構,最后形成代碼。由于面向對象的特點,采用這種開發模型能有效的將分析設計的文本或圖表代碼化,不斷適應用戶需求的變動。針對這種開發模型,結合傳統的測試步驟的劃分,本文建議一種整個軟件開發過程中不斷測試的測試模型,使開發階段的測試與編碼完成后的單元測試、集成測試、系統測試成為一個整體。測試模型如下圖所示:
0 面向對象編程
OOA Test:面向對象分析的測試 OOD Test:面向對象設計的測試
OOP Test:面向對象編程的測試 OO Unit Test:面向對象單元測試
OO Integrate Test:面向對象集成測試 OO System Test:面向對象系統測試
OOA Test和OOD Test 是對分析結果和設計結果的測試,主要是對分析設計產生的文本進行,是軟件開發前期的關鍵性測試。OOP Test主要針對編程風格和程序代碼實現進行測試,其主要的測試內容在面向對象單元測試和面向對象集成測試中體現。面向對象單元測試是對程序內部具體單一的功能模塊的測試,如果程序是用C++語言實現,主要就是對類成員函數的測試。面向對象單元測試是進行面向對象集成測試的基礎。面向對象集成測試主要對系統內部的相互服務進行測試,如成員函數間的相互作用,類間的消息傳遞等。面向對象集成測試不但要基于面向對象單元測試,更要參見OOD或OOD Test結果(詳見后敘述)。面向對象系統測試是基于面向對象集成測試的最后階段的測試,主要以用戶需求為測試標準,需要借鑒OOA或OOA Test結果。
盡管上述各階段的測試構成一相互作用的整體,但其測試的主體、方向和方法各有不同,且為敘述的方便,本文接下來將從OOA,OOD,OOP,單元測試,集成測試,系統測試六個方面分別介紹對面向對象軟件的測試。
三 面向對象分析的測試(OOA Test)
傳統的面向過程分析是一個功能分解的過程,是把一個系統看成可以分解的功能的集合。這種傳統的功能分解分析法的著眼點在于一個系統需要什么樣的信息處理方法和過程,以過程的抽象來對待系統的需要。而面向對象分析(OOA)是"把E-R圖和語義網絡模型,即信息造型中的概念,與面向對象程序設計語言中的重要概念結合在一起而形成的分析方法",最后通常是得到問題空間的圖表的形式描述。
OOA直接映射問題空間,全面的將問題空間中實現功能的現實抽象化。將問題空間中的實例抽象為對象(不同于C++中的對象概念),用對象的結構反映問題空間的復雜實例和復雜關系,用屬性和服務表示實例的特性和行為。對一個系統而言,與傳統分析方法產生的結果相反,行為是相對穩定的,結構是相對不穩定的,這更充分反映了現實的特性。OOA的結果是為后面階段類的選定和實現,類層次結構的組織和實現提供平臺。因此,OOA對問題空間分析抽象的不完整,最終會影響軟件的功能實現,導致軟件開發后期大量可避免的修補工作;而一些冗余的對象或結構會影響類的選定、程序的整體結構或增加程序員不必要的工作量。因此,本文對OOA的測試重點在其完整性和冗余性。
文章來源于領測軟件測試網 http://www.kjueaiud.com/