8.2 物件導向程式測試
測試用例設計
物件導向實現
程式語言
所有語言都可完成物件導向實現,但效果不同。使用非物件導向語言編寫物件導向程式,則必須由程式設計師自己把物件導向概念對映到目標程式中。
選用物件導向語言的優點:
其他因素
程式設計風格
提高可重用性
提高方法的內聚
方法只完成單個功能。涉及多個不相關功能,分解。
減小方法的規模。
方法規模過大,分解。
保持方法的一致性
功能相似方法有一致名字、引數特徵(包括引數個數、型別和次序)、返回值型別、使用條件及出錯條件等。
把策略與實現分開
全面覆蓋
盡量不用全域性資訊
降低方法與外界耦合程度。
利用繼承機制
實現共享和提高重用程度的主要途徑。
利用繼承機制
提高可擴充性
封裝實現策略
應把類的實現策略(包括資料結構、演算法等)封裝起來,對外提供公有介面。
不要用乙個方法遍歷多條關聯鏈
乙個方法應只包含物件模型中有限內容。否則導致方法過分複雜,不易理解和修改擴充。
避免使用多分支語句
精心確定公有方法
公有方法是向公眾公布的介面。
提高健壯性
預防使用者操作錯誤
任何輸入(錯誤),給出提示資訊,再次接收使用者輸入。
檢查引數合法性
不預先確定限制條件
使用動態記憶體分配機制,建立未預先設定限制條件資料結構。
先測試後優化
測試策略
1.單元測試
單元:封裝的類和物件。
單元測試:對程式內部具體單一功能模組測試,如程式用c++實現,主要對類成員函式測試。傳統的測試方法都可使用,等價類劃分、邊值分析、邏輯覆蓋法、基本路徑法。
2.整合測試
在物件導向的軟體中不存在層次的控制結構,傳統的自頂向下或自底向上的整合策略就沒有意義了。此外,由於構成類的各個成分彼此間存在直接或間接的互動,一次整合乙個操作到類中(傳統的漸增式整合方法)通常是不現實的。
物件導向軟體的整合測試主要有下述兩種不同的策略:
基於執行緒的整合測試:
把響應系統的乙個輸入或乙個事件所需類整合起來。
3.確認測試
測試用例設計
與傳統軟體測試(測試用例的設計由軟體的輸入、處理、輸出檢視或單個模組的演算法細節驅動)不同,物件導向測試關注於設計適當的操作序列以檢查類的狀態。
1.測試類的方法
測試單個類的方法主要有隨機測試、劃分測試和基於故障的測試等3種:
隨機測試:在類的多個操作排列中,隨機選擇。
劃分測試(類似等價類劃分)
基於屬性的劃分(根據類操作屬性:使用該屬性、修改屬性、不操作該屬性)
基於功能的劃分(根據類操作完成功能:初始化操作、計算操作、查詢操作、終止操作)
基於故障測試(錯誤推測法,如邊界或輸入輸出為零等)
2.整合測試方法
多類測試:測試類間協作,同樣可採用隨機測試和劃分測試。
從動態模型匯出測試用例:
確認測試方法:
第15章 物件導向程式設計 8
15.4 建構函式和複製控制 建構函式和複製控制成員不能繼承,每個類定義自己的建構函式和複製控制成員。15.4.1基類建構函式和複製控制 某些類需要只希望派生類使用的特殊建構函式,這樣的建構函式定義為protected。15.4.2 派生類建構函式 派生類的建構函式受繼承關係的影響,每個派生類建構函...
軟體工程過程 第8章 敏捷過程
1.敏捷過程強調短期交付 客戶的緊密參與,強調適應性而不是可預見性,強調為當前的需要而不考慮將來的簡化設計,只將最必要的內容文件化,因此也被稱為 輕量級過程 p241 2.敏捷聯盟遵循的12條原則。p242 p243 3.xp概述,極限程式設計是一套軟體開發方法,由一系列與開發相關的規則 規範和慣例...
物件導向軟體工程 第二章
首先,實際軟體開發中有很多變數,開發者會犯錯,環境也會改變,客戶也可能犯錯,因此就有各種各樣的模型用以減小變數帶來的損失。1.首先是進化樹模型,它等價與增量 迭代模型,可以理解為最終結果是由不斷新增元件所組成的 增量 而每次新增元件的過程中需要不斷優化,更新元件 迭代 每個增量與迭代都擁有屬於自己的...