4、判定/條件覆蓋
1)主要特點:設計足夠多的測試用例,使得判定中每個條件的所有可能結果至少出現一次,每個判定本身所有可能結果也至少出現一次。
2)用例設計:
X | Y | 路徑 | |
1 | 90 | 90 | OAE |
2 | 50 | 50 | OBDE |
3 | 90 | 70 | OBCE |
4 | 70 | 90 | OBCE |
3)優點:判定/條件覆蓋滿足判定覆蓋準則和條件覆蓋準則,彌補了二者的不足。
4)缺點:判定/條件覆蓋準則的缺點是未考慮條件的組合情況。
5、組合覆蓋
1)主要特點:要求設計足夠多的測試用例,使得每個判定中條件結果的所有可能組合至少出現一次。
2)用例設計:
X | Y | 路徑 | |
1 | 90 | 90 | OAE |
2 | 90 | 70 | OBCE |
3 | 90 | 30 | OBDE |
4 | 70 | 90 | OBCE |
5 | 30 | 90 | OBDE |
6 | 70 | 70 | OBDE |
7 | 50 | 50 | OBDE |
3)優點:多重條件覆蓋準則滿足判定覆蓋、條件覆蓋和判定/條件覆蓋準則。更改的判定/條件覆蓋要求設計足夠多的測試用例,使得判定中每個條件的所有可能結果至少出現一次,每個判定本身的所有可能結果也至少出現一次。并且每個條件都顯示能單獨影響判定結果。
4)缺點:線性地增加了測試用例的數量。
6、路徑覆蓋
1)主要特點:設計足夠的測試用例,覆蓋程序中所有可能的路徑。
2)用例設計:
X | Y | 路徑 | |
1 | 90 | 90 | OAE |
2 | 50 | 50 | OBDE |
3 | 90 | 70 | OBCE |
4 | 70 | 90 | OBCE |
3)優點:這種測試方法可以對程序進行徹底的測試,比前面五種的覆蓋面都廣。
4)缺點:由于路徑覆蓋需要對所有可能的路徑進行測試(包括循環、條件組合、分支選擇等),那么需要設計大量、復雜的測試用例,使得工作量呈指數級增長。而在有些情況下,一些執行路徑是不可能被執行的,如:
If (!A)B++;
If (!A)D--;
這兩個語句實際只包括了2條執行路徑,即A為真或假時候對B和D的處理,真或假不可能都存在,而路徑覆蓋測試則認為是包含了真與假的4條執行路徑。這樣不僅降低了測試效率,而且大量的測試結果的累積,也為排錯帶來麻煩。
總結
白盒測試是一種被廣泛使用的邏輯測試方法,是由程序內部邏輯驅動的一種單元測試方法。只有對程序內部十分了解才能進行適度有效的白盒測試。但是貫穿在程序內部的邏輯存在著不確定性和無窮性,尤其對于大規模復雜軟件。因此我們不能窮舉所有的邏輯路徑,即使窮舉也未必會帶來好運(窮舉不能查出程序邏輯規則錯誤,不能查出數據相關錯誤,不能查出程序遺漏的路徑)。
那么正確使用白盒測試,就要先從代碼分析入手,根據不同的代碼邏輯規則、語句執行情況,選用適合的覆蓋方法。任何一個高效的測試用例,都是針對具體測試場景的。邏輯測試不是片面的測試正確的結果或是測試錯誤的結果,而是盡可能全面地覆蓋每一個邏輯路徑。
文章來源于領測軟件測試網 http://www.kjueaiud.com/