白盒測試 邏輯覆蓋法

2021-12-29 20:09:00 字數 1522 閱讀 8746

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

白盒測試法的覆蓋標準有邏輯覆蓋、迴圈覆蓋和基本路徑測試。今天我們主要研究邏輯覆蓋,邏輯覆蓋包括語句覆蓋、判定覆蓋、條件覆蓋、判定/條件覆蓋、條件組合覆蓋和路徑覆蓋。

下圖是乙個普通的程式流程圖,其中有兩個判定語句和兩個複製語句,以及四條路徑l1:ace,l2:abd,l3:abe,l4:acd。

我們可以建立乙個測試用例(2,0,4)使得覆蓋圖中所有的語句(包括判定語句和賦值語句),也就是走l1路徑,它並沒有覆蓋所有的路徑,因此語句覆蓋的覆蓋程度最低。

為了達到上圖的判定覆蓋,我們可以建立(2,0,4)(1,1,1)兩個測試用例,使得圖中兩個判定中每個判定的真假情況都執行一遍。這兩個測試用例也只能覆蓋l1,l2兩條路徑,因此判定覆蓋覆蓋強度高於語句覆蓋,但對邏輯覆蓋的輕度仍然不是很高。

這裡就要說明條件跟判定的區別,上圖中共有兩個判定,每個判定中又都有兩個條件即a>1、b=0分別是乙個條件,兩個條件組合成了乙個判定。條件判定覆蓋既要將每個判定中的每個條件的每一種可能情況都覆蓋一遍。同樣測試用例(2,0,4)(1,1,1)可以滿足條件覆蓋,大家可能看到了這兩個測試用例滿足於判定覆蓋,又滿足了條件覆蓋,那麼這兩中覆蓋之間是什麼關係呢?可以說他們兩個之間沒有確切的關係,也並不是說滿足條件覆蓋的就一定滿足判定覆蓋,或者滿足判定覆蓋的就一次能夠滿足條件覆蓋。只是條件覆蓋的情況更複雜一些,而測試用例只需要覆蓋所有的條件即可,本例項中只是恰好這兩個測試用例同時滿足了判定覆蓋和條件覆蓋,希望大家不要被誤導。

從這一種邏輯覆蓋中就可以看出條件覆蓋和判定覆蓋之間並沒有包含關係,因為如果他們其中之一包含了另乙個的話就不用同時滿足兩個覆蓋才稱之為判定/條件覆蓋。因為測試用例(2,0,4)(1,1,1)同時滿足條件覆蓋和判定覆蓋,所以這兩個測試用例肯定滿足判定/條件覆蓋,但是判定/條件覆蓋也能覆蓋所有的路徑。

上圖中的條件取值組合以及測試用例如下:

可以看出來即使條件組合覆蓋比較複雜,但是還沒有覆蓋所有的路徑,因此我們需要覆蓋強度更高的邏輯覆蓋。

六種覆蓋中只有路徑覆蓋將所有的路徑都執行一遍,但是無論哪種覆蓋,都不能保證程式的正確性,測試的目的就是發現程式存在的問題,而不是證明程式沒有問題,以上幾種邏輯覆蓋只是自己學習的一些整理,有不足之處希望大家批評指正。

白盒測試邏輯覆蓋法

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

白盒測試的邏輯覆蓋法

邏輯覆蓋是以程式內部的邏輯結構為基礎的設計測試用例的技術。它屬白盒測試。邏輯覆蓋包括語句覆蓋 判定覆蓋 條件覆蓋 判定 條件覆蓋 條件組合覆蓋和路徑覆蓋。六種覆蓋標準發現錯誤的能力呈由弱到強的變化 1.語句覆蓋 2.判定覆蓋 3.條件覆蓋 4.判定 條件覆蓋 5.條件組合覆蓋 6.路徑覆蓋 對上述6...

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

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