白盒測試的邏輯覆蓋法

2022-09-01 02:39:12 字數 1730 閱讀 2834

邏輯覆蓋是以程式內部的邏輯結構為基礎的設計測試用例的技術。它屬白盒測試。邏輯覆蓋包括語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。

六種覆蓋標準發現錯誤的能力呈由弱到強的變化:

1.語句覆蓋

2.判定覆蓋

3.條件覆蓋

4.判定/條件覆蓋

5.條件組合覆蓋

6.路徑覆蓋

對上述6種覆蓋標準的具體介紹:

1.語句覆蓋(statement coverage):就是設計若干個測試用例,執行被測程式,使得程式中每一可執行語句至少執行一次。這裡的「若干個」,意味著使用測試用例越少越好。語句覆蓋在測試中主要發現缺陷或錯誤語句。

語句覆蓋率的公式:語句覆蓋率=被評價到的語句數量/可執行語句總數x100%

語句覆蓋的缺點:對程式執行邏輯的覆蓋很低。

2.判定覆蓋(decision coverage):    有時也稱分支覆蓋,就是指設計若干測試用例,執行被測程式,使得每個判定的取真分支和取假分支至少評價一次。

判定覆蓋的公式: 判定覆蓋率=被評價到的判定分支個數/判定分支的總數x100%。

判定路徑覆蓋率(ddp)=被評價到的判定路徑數量/判定路徑的總數x100%。

判定覆蓋的缺點:判定覆蓋雖然把程式所有分支均覆蓋到了,但其主要對整個表示式最終取值進行度量,忽略了表示式內部取值。

3.條件覆蓋(condition coverage): 設計足夠多的測試用例,執行被測程式,使得每一判定語句中每個邏輯條件的可能取值至少滿足一次。                           

條件覆蓋率的公式:條件覆蓋率=被評價到的條件取值的數量/條件取值的總數x100%。

條件覆蓋的缺點:只考慮到每個判定語句中的每個表示式,沒有考慮到各個條件分支(或者涉及不到全部分支),即不能夠滿足判定覆蓋。

4.判定條件覆蓋(condition/ decision coverage):

設計足夠多的測試用例,使得判定中的每個條件的所有可能(真/假)至少出現一次,並且每個判定本身的判定結果也至少出現一次。

判定條件覆蓋率的公式: 條件判定覆蓋率=被評價到的條件取值和判定分支的數量/(條件取值總數+判定分支總數)。

評定條件覆蓋的缺點:沒有考慮單個判定對整體結果的影響,無法發現邏輯錯誤。

5.條件組合覆蓋:                            也稱多條件覆蓋mcc (multiple condition coverage),設計足夠多的測試用例,使得每個判定中條件的各種可能組合都至少出現一次(以數軸形式劃分區域,提取交集,建立最少的測試用例)。

這種方法包含了「分支覆蓋」和「條件覆蓋」的各種要求。滿足條件組合覆蓋一定滿足判定覆蓋、條件覆蓋、判定條件覆蓋。

條件組合覆蓋率的公式:條件組合覆蓋率=被評價到的條件取值組合的數量/條件取值組合的總數。

條件組合覆蓋的缺點:判定語句較多時,條件組合值比較多。

6.路徑覆蓋:                                  設計足夠多的測試用例,執行程式所有可能的路徑。

路徑覆蓋率的公式:路徑覆蓋率=被執行到的路徑數/程式中總的路徑數。

優點:路徑覆蓋是覆蓋率最高的一種覆蓋技術。

路徑覆蓋測試步驟:

1. 將程式流程圖轉換成控制流圖;

2. 經過語法分析求的路徑表示式;

3. 生成路徑圖;

4. 進行路徑編碼;

5. 經過解碼得到執行的路徑;

6. 通過路徑列舉產生特定路徑測試用例。

7. 修正的條件判斷覆蓋率(mc/dc)

白盒測試邏輯覆蓋法

看新定的測試覆蓋率標準,有點暈。1 語句覆蓋率達到100 2 分支覆蓋率不低於70 開始覺得,這兩個限制有點矛盾,語句覆蓋率都達到100 了,分支覆蓋率還沒達到100 答案 是。舉個例子說明 if a and b then action1 if c or d then action2 就拿這個來說,...

白盒測試 邏輯覆蓋法

白盒測試又稱結構測試 透明盒測試 邏輯驅動測試或基於 的測試。白盒測試是一種測試用例設計方法方法,盒子指的是被測試的軟體,白盒指的是盒子是可視的,你清楚盒子內部的東西以及裡面是如何運作的。白盒 法全面了解程式內部邏輯結構 對所有邏輯路徑進行測試。白盒 法是窮舉路徑測試。在使用這一方案時,測試者必須檢...

軟體測試 第五章白盒測試 邏輯覆蓋法

1 基本思路 設計測試用例,執行被測程式,使程式中每個可執行語句至少被執行一次。2 只需要乙個測試用例就可以測試所有語句 3 優點 可以直觀的從源 得到測試用例,無須細分每條判定表示式 4 缺點 這種測試方法僅僅針對程式邏輯中顯式存在的語句,但對於隱藏的條件式無法測試的,如在多分支的邏輯運算中無法 ...