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