由于昨天的網絡問題,一直沒有上博客發言。今天把昨天的補充上。
判定樹是判定表的變種,也能清晰地表示復雜的條件組合與應做的動作之間的對應關系。判定書樹的優點在于,它的形式簡單到不需任何說明,一眼就可以看出其含義,因此易于掌握和使用。
結構化的最后一部份就是實現了,通常把編碼和測試成為實現。在測試中分黑盒測試和白盒測試。如果已經知道了產品應該具有的功能,可以通過測試來檢查是否每個功能都能正常使用;如果知道產品內部工作過程,可以通過測試來檢驗產品內部動作是否按照規格說明書的規定正常進行。前一個方法稱為黑盒測試,后一個方法稱為白盒測試。另外測試的時候還要遵守測試準則:
l???????? 所有的測試都應該能追溯到用戶需求。
l???????? 應該在測試開始之前的相當長時間,就制定出測試計劃。
l???????? 把Pareto原理應用和軟件測試。
l???????? 測試應該從“小規模”開始,并逐步進行“大規模”測試。
l???????? 窮舉測試是不可能的。
l???????? 為了達到最佳的測試效果,應該由獨立的第三方來從事測試工作。
在設計測試方案時,往往需要仔細分析程序的控制流。為了突出表示程序的控制流,可以使用流圖。流圖僅僅描繪程序的控制流程,它完全不表現對數據的具體操作揖及分支或循環的具體條件。在流圖中用圓表示節點,一個圓代表一條或多條語句。程序流程圖中的一個處理框序列和一個菱形判定框,可以映射成流圖中的一個節點。流圖中的箭頭線稱為邊,它和程序流程圖中的箭頭線類似,代表控制流。在流圖中一條邊必須終止于一個節點,即使這個節點并不代表任何語句。由邊和節點圍成的面積稱為區域,當計算區域數時應該包括圖外部未被圍起來的那個區域。
邏輯覆蓋式設計白盒測試方案的一種技術。設計測試方案時測試階段的關鍵技術問題。所謂測試方案包括具體的測試目的,應該輸入的測試數據和預期的輸出結果。通常又把測試數據和預期的輸出結果稱為測試用例。覆蓋標準大概有以下幾種:語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋。語句覆蓋式含義是,選擇足夠多的測試數據,使被測試程序中每個語句至少執行一次。判定覆蓋又叫分支覆蓋,它的含義是,不僅每個語句必須至少執行一次,也就是每個判定的每個分支都至少執行一次。條件覆蓋的含義是,不僅每個語句至少執行一次,而且使判定表達式中每個條件都取到各種可能的結果。既然判定覆蓋不一定包含條件覆蓋,條件覆蓋也不一定包含判定覆蓋,自然會提出一種能同時滿足這兩種覆蓋標準的邏輯覆蓋,這就是判定/條件覆蓋。它的含義是,選取足夠多的測試詩句,使得判定表達式中的每個條件都取到各種可能的值,而且每個判定表達式也都取到各種可能的結果。條件組合覆蓋式更強的邏輯覆蓋標準,它要求選區足夠多的測試數據,使得每個判定表達式中條件的各種可能組合都至少出現一次。
基本路徑測試是一種白盒測試技術,它的步驟如下:
l???????? 根據過程設計結果畫出相應的流圖
l???????? 計算流圖的環形復雜度
l???????? 確定線性獨立路徑的基本集合
l???????? 設計可強制執行基本集合中每條路徑的測試用例
結構化部分介紹完了,下面開始介紹面相對象的設計。通常需要建立三種形式的模型,它們分別是描述系統數據結構的對象模型,描述系統控制結構的動態模型和描述系統功能的功能模型。對象模型表示靜態的、結構化的系統的“數據”性質。它是對模擬客觀世界實體的對象以及對象彼此間的關系的映射,描述了系統的靜態結構。面向對象方法強調圍繞對象而不是圍繞功能來構造系統。對象模型為建立動態模型和功能模型,提供了實質性的框架。
動態模型表示瞬時的、行為化的系統的“控制”性質,它規定了對象模型中的對象的合法變化序列。功能模型表示變化的系統的“功能”性質,它指明了系統應該“做什么”,因此更直接地反映了用戶對目標系統的需求。