白盒測試常用技術是邏輯覆蓋,即考查用測試數據運行被測程序時對程序邏輯覆蓋程度。主要覆蓋標準有六種:語句覆蓋、判定覆蓋、條件覆蓋、判定 / 條件覆蓋、組合條件覆蓋和路徑覆蓋。 ( 1 )語句覆蓋 語句覆蓋是指選擇足夠多測試用例,使得運行這些測試用例時,被測程序每個語句至少執行壹次。很顯然,語句覆蓋是壹種很弱覆蓋標準。 ( 2 )判定覆蓋 判定覆蓋又稱分支覆蓋,它含義是,不僅每個語句至少執行壹次,而且每個判定每種可能結果(分支)都至少執行壹次。判定覆蓋比語句覆蓋強,但對程序邏輯覆蓋程度仍然不高。 ( 3 )條件覆蓋 條件覆蓋含義是,不僅每個語句至少執行壹次,而且使判定表達式中每個條件都取到各種可能結果。條件覆蓋不壹定包含判定覆蓋,判定覆蓋也不壹定包含條件覆蓋。 ( 4 )判定/條件覆蓋 同時滿足判定覆蓋和條件覆蓋邏輯覆蓋稱為判定 / 條件覆蓋。它含義是,選取足夠測試用例,使得判定表達式中每個條件所有可能結果至少出現壹次,而且每個判定本身所有可能結果也至少出現壹次。 ( 5 )條件組合覆蓋 條件組合覆蓋含義是,選取足夠測試用例,使得每個判定表達式中條件結果所有可能組合至少出現壹次。顯然,滿足條件組合覆蓋測試用例,也壹定滿足判定 / 條件覆蓋。因此,條件組合覆蓋是上述五種覆蓋標準中最強壹種。然而,條件組合覆蓋還不能保證程序中所有可能路徑都至少經過壹次。 ( 6 )路徑覆蓋 路徑覆蓋含義是,選取足夠測試用例,使得程序每條可能執行到路徑都至少經過壹次(如果程序中有環路,則要求每條環路徑至少經過壹次)。路徑覆蓋實際上考慮了程序中各種判定結果所有可能組合,因此是壹種較強覆蓋標準。 本題第二問比較復雜,關鍵是我們要清楚程序流程圖中有幾條路徑,然後為每條路徑設置壹個測試用例。 在本題給出程序流程圖中,如果我們將判定 “x