1. 程式人生 > >白盒測試邏輯覆蓋法

白盒測試邏輯覆蓋法

看新定的測試覆蓋率標準,有點暈。

1、語句覆蓋率達到100%
2、分支覆蓋率不低於70%
開始覺得,這兩個限制有點矛盾,語句覆蓋率都達到100%了,分支覆蓋率還沒達到100%?答案:是。舉個例子說明: 

if   A   and   B   then   Action1   
if   C   or   D   then   Action2 

就拿這個來說,A=true   B=true   C=true,語句覆蓋率是100%,可分支覆蓋率是50%,並沒有走false的分支。從而引發一個理解,分支並不一定是實際的程式碼,而是邏輯上的分支,而分支覆蓋率並不是指的是對實際程式碼句的覆蓋。

溫習一下軟體工程裡測試邏輯覆蓋的分類:

(1)語句覆蓋。
為了個提高發現錯誤的可能性,在測試時應該執行到程式中的每一個語句。語句覆蓋是指設計足夠的測試用例,使被測試程式中每個語句至少執行一次。
(2)判定覆蓋。
判定覆蓋指設計足夠的測試用例,使得被測程式中每個判定表示式至少獲得一次“真”值和“假”值,從而使程式的每一個分支至少都通過一次,因此判定覆蓋也稱分支覆蓋。
(3)條件覆蓋。
條件覆蓋是指設計足夠的測試用例,使得判定表示式中每個條件的各種可能的值至少出現一次。
(4)判定/條件測試。
該覆蓋標準指設計足夠的測試用例,使得判定表示式的每個條件的所有可能取值至少出現一次,並使每個判定表示式所有可能的結果也至少出現一次。
(5)條件組合覆蓋。
條件組合覆蓋是比較強的覆蓋標準,它是指設計足夠的測試用例,使得每個判定表示式中條件的各種可能的值的組合都至少出現一次。
(6)路徑覆蓋。
路徑覆蓋是指設計足夠的測試用例,覆蓋被測程式中所有可能的路徑。
在實際的邏輯覆蓋測試中,一般以條件組合覆蓋為主設計測試用例,然後再補充部分用例,以達到路徑覆蓋測試標準。