面象對象(=Object Oriented)技術

 相關知識點-面象對象(=Object Oriented)技術

    1.   對象和類

    l        面象對象的編程語言:以對象爲中心,以消息爲驅動,程序=對象+消息

    l        類是一種新的數據類型,是設計的核心,是通過抽象數據類型的方法來實現的一種數據類型

    l        類是對某一對象的抽象,對象是某一類的實例,兩者密切相關

    2.   封裝、繼承和多態性

    (1)         封裝:把數據和操作結合一體,使程序結構更加緊湊,避免了數據紊亂帶來的調試與維護的困難

    (2)         繼承:可以從一個類派生到另一個類,派生類繼承了父類和祖先類的數據成員和函數,增加了軟件的可擴充性,併爲代碼重用提供了強有力的手段

    (3)         多態性:多種表現形式,可以用‘一個對外接口,多個內在實現方法’表示。

    一.面向對象測試模型

    1.                 面向對象測試的分類

    依據面向對象開發模型(面向對象分析、面向對象設計、面向對向編程),分爲:

    (1)         面向對象分析的測試(OOA Test)、面向對象設計的測試(OOD Test):是對分析結果和設計結果的測試,主要對分析設計產生的文本進行的,是軟件開發前期的關鍵性測試

    (2)         面向對象編程的測試(OOP Test):對編程風格和程序代碼實現進行測試,主要的測試內容在OO Unit Test和OO Integrate Test中體現

    (3)         面向對象單元測試(OO Unit Test):對程序內部具體單一的功能模塊的測試,主要對類成員函數的測試,是OO Integrate Test的基礎

    (4)         面向對象集成測試(OO Intergrate Test):對系統內部的相互服務進行測試,如成員函數間的相互作用,類間的消息傳遞。不僅要基於OO Unit Test,還要參考OOD、OOD Test的結果

    (5)         面向對象確認測試(OO System Test)、面向對象系統測試(OO System Test):最後階段的測試,以用戶需求爲測試標準,借鑑OOA 、OOA Test的結果

    二. 面向對象軟件的測試策略

    1.   面向對象分析的測試

    (1) 面向對象分析

    是把E-R圖和語義網絡模型,即信息造型中的概念,與面向對象程序設計語方中的重要概念結合在一起而形成的分析方法。通常以問題空間的圖表的形式進行描述

    (2) 分析方法

    直接映射問題空間,全面地將問題空間中實現功能的現實抽象化。將問題空間中的實例抽象爲對象,用對象的結構反映問題空間的複雜實例和複雜關係,用屬性和服務表示實例的特性和行爲。

    (3) 面向對象分析缺點

    對問題空間分析抽象的不完整,會影響軟件的功能實現,導致軟件開發後期產生大量原本可避免的修補工作;一些冗餘的對象或結構類的選定,程序的整體結構和增加程序員不必要的工作量,因此 OOA測試的重點在其完整性和冗餘性

    (4) OOA測試劃分的五個方面

    對認定的對象的測試、對認定的結構的測試、對認定的主題的測試、對定義的屬性和實例關聯的測試、對定義的服務和消息關聯的測試

    2.   面向對象設計(OOD)的測試

    (1) 面向對象設計(OOD)

    採用‘造型的觀點’,以OOA爲基礎歸納出類,並建立類結構或進一步構造類庫,以實現分析結果對問題空間的抽象。OOD歸納的類即可以是對象的簡單延續,也可以是不同對象的相同或相似的服務

    (2) OOD與OOA

    OOD是OOA的進一步細化和更高層的抽象,所以OOD、OOA的界限很難區分,OOD確定類和類結構不僅是滿足當前需求分析要求,更重要是通過重新組合或加以適當的補充,方便實現功能重用和擴增。因此,對OOD的測試,建議針對功能的實現和重用以及OOA結果的分析

    (3) OOD測試劃分的三個方面

      1、認定的類的測試

      2、構造的類的層次結構測試

      3、類庫支持的測試

    3.   面向對象編程(OOP)的測試

    (1) 面向對象程序
   
    把功能的實現分佈在類中,能正確實現功能的類,通過消息傳遞來協同實現設計要求的功能。將出現的錯誤精確的確定在某一具體的類上。

    (2) 測試重點

    忽略類功能實現的細則,將測試的目光集中在類功能的實現和相應的面向對象程序風格上

    (3) 測試方面

      1、類的封裝

      2、類的功能

 

    4.   面向對象軟件的單元測試

    (1) 可以將一些傳統的單元測試方法在面向對象軟件的單元測試中使用,如等價類劃分、因果圖、邊界值分析法、邏輯覆蓋法、路徑分析法、程序插樁法,單元測試一般建議由程序員完成

    (2) 單元級測試的測試分析和測試用例,規模和難度均遠小於對整個系統的測試分析和測試用例,並且對語句應該有100%的代碼執行覆蓋率。

    (3) 設計測試用例選擇輸入數據的兩個假設:

    如果函數(程序)對某一類輸入中的一個數據正確執行,對同類中的基他輸入也能正確執行(等價類)

    如果函數(程序)對某一複雜度的輸入正確執行,對更高複雜度的輸入也能正確執行

    (4) 針對繼承性,Brian Marick兩方面的考慮

    繼承的成員函數是否都不需要測試:當繼承的成員函數在子類中做了改動;成員函數調用了改動過的成員函數的部分這兩種情況需要對子類重新測試

    對父類的測試是否能照搬到子類:可以重新測試或在父類原有的測試要求和測試用例上增加新的測試要求和測試用例,主要針對子類中變動的部分進行測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章