白盒測試是對程式內部的邏輯結構進行檢查,從中獲取測試資料。
白盒測試主要包含如下測試方法:
語句覆蓋要求必須編寫足夠多的測試用例,使得每乙個可執行的語句都至少被執行一次,語句覆蓋常常被稱為「最弱的覆蓋」,因為它只考慮了可執行語句,但是無法測試隱式分支(比如:if判斷中沒有寫出來的else),也沒有考慮各個分支的組合。
判定覆蓋要求每個判斷都必須有「true」和「false」兩個結果,並且每條語句都至少被執行一次。判定覆蓋彌補了語句覆蓋的缺點,即隱式分支可以被測試到,這樣,判定覆蓋將所有的判斷的每種可能的結果的至少執行一次。但是判定覆蓋仍然存在問題,判定覆蓋只強調了判斷的結果,而忽略了判斷的具體條件,所以依然可能遺漏部分的測試路徑。
條件覆蓋要求編寫足夠多的測試用例以確保將每個判斷中的每個條件的所有可能的結果都至少執行一次,彌補了判定覆蓋的缺點。但是卻有可能無法讓每條語句都被執行到。
判定/條件覆蓋綜合了判定覆蓋和條件覆蓋的優缺點,判定/條件覆蓋要求設計出足夠多的測試用例,將每個判斷中的每個條件的所有可能結果至少執行一次,將每個判斷的所有可能的結果至少執行一次。但是仍然存在缺點,判定/條件覆蓋沒有考慮條件的組合情況,有些特定的條件會遮蔽掉其他的條件。
多重條件覆蓋能解決判定/條件覆蓋中條件組合的問題,多重條件覆蓋要求編寫足夠多的測試用例,將每個判定中的所有可能的條件結果的組合至少執行一次
黑盒測試將程式看成是乙個黑盒子,不涉及程式內部的邏輯結構,而是通過規格說明對程式功能進行檢查,從中獲取測試資料。
黑盒測試主要包含如下測試方法:
由於對程式是不可能進行窮舉輸入測試的,所以我們可以去尋找最小子集以覆蓋盡可能多的輸入情況。等價類劃分要求每個測試用例都要盡可能多的體現不同的輸入情況,以減少測試用例的數量,同時需要將輸入範圍進行劃分,劃分為有限數量的等價類。使用等價類劃分有兩個步驟:
確定等價類:確定等價類是選取每乙個輸入條件並將其劃分成兩個或者更多的組。我們通常是確定兩個等價類:有效等價類和無效等價類。有效等價類代表有效輸入,無效等價類代表無效輸入。
生成測試用例:使用等價類來生成測試用例,可以為每個等價類設定乙個編號以方便記錄。在編寫測試用例時,需要盡可能多的去覆蓋還沒有覆蓋過的有效等價類,直到所有的有效等價類都被覆蓋。而對於無效等價類,則需要為每乙個無效等價類都編寫乙個測試用例,因為如果乙個測試用例覆蓋了多個無效等價類,那麼有些無效等價類的錯誤可能會被遮蔽掉。
經驗證明,考慮了邊界條件的測試用例與其他沒有考慮邊界條件的測試用例相比,具有更高的測試回報率。邊界值分析其實是對等價類劃分進行了補充,因為在等價類劃分中,並沒有考慮到邊界值,然而有很多錯誤都會出現在邊界值附近。
邊界值的概念可以想象成高等數學中極限,輸入值就在邊界值的附近,但是和極限不同的是,輸入值可以等於邊界值本身。例如:規定密碼為1到6為純數字組成,那麼它有乙個有效等價類為:1到6個數字,兩個無效等價類為:0個數字,6個以上數字。這裡的邊界值為1和6,根據邊界值分析,我們可以選取0,1,2,5,6,7個數字來設定測試用例。
綜上:邊界值分析考察正處於等價類劃分邊界或者邊界附近的狀態。
由於等價類劃分和邊界值分析都是著重考慮輸入條件的羅列,但是卻沒有考慮輸入條件的組合,這是等價類劃分和邊界值分析的缺點。而因果圖彌補了這一缺點,因果圖有助於用乙個系統的方法選擇出高效的測試用例集,它還有乙個額外的好處,就是可以指出規格說明的不完整性和不明確之處。
因果圖是一種形式語言,有點像簡化版的邏輯電路,我們可以將規格說明轉化為視覺化的因果圖,然後通過系統的方法的出測試用例集。
錯誤猜測是指在測試人員接到具體程式後,利用直覺和經驗猜測出錯的可能型別,然後編寫測試用例來暴露這些錯誤。
錯誤猜測的基本思想是列舉出可能犯的錯誤或錯誤易發情況的清單,然後依據清單來編寫測試用例。
以上所有的測試方法都無法在單獨使用的情況下找到乙個合理完整的測試用例集,因此,可以將這些測試方法進行組合,形成乙個合理的策略。具體策略如下:
如果規格說明中包含輸入條件組合的情況,應首先使用因果圖分析方法。
在任何情況下都應使用邊界值分析方法。當然,有些條件可以被整合到因果圖分析中。
應為輸入和輸出確定有效和無效等價類,在必要的情況下對上面已確認的測試用例進行補充。
使用錯誤猜測技術增加更多的測試用例。
針對上述測試用例集檢查程式的邏輯結構(這裡使用到白盒測試的測試方法)。
注:參考來自《軟體測試的藝術》(原書第3版)
白盒測試與黑盒測試
1白盒測試 定義 透明的,可以看見內部結構的,按照程式內部邏輯結構和編碼結構設計測試資料並完成測試的一種測試方法。分類 靜態測試和動態測試 邏輯覆蓋 語句覆蓋 每一條語句至少被執行一次 語句覆蓋是最弱的邏輯覆蓋 判定覆蓋 每乙個分支至少通過一次即每一條分支語句的 真 值和 假 值都至少執行一次。判定...
黑盒測試與白盒測試
黑盒測試 黑盒測試也稱功能測試或資料驅動測試,它是在已知產品所應具有的功能,通過測試來檢測每個功能是否都能正常使用,在測試時,把程式看作乙個不能開啟的黑盆子,在完全不考慮程式內部結構和內部特性的情況下,測試者在程式介面進行測試,它只檢查程式功能是否按照需求規格說明書的規定正常使用,程式是否能適當地接...
黑盒測試與白盒測試
軟體的黑盒測試意味著測試要在軟體的介面處進行。把測試物件看做乙個黑盒子,測試人員完全不考慮程式內部的邏輯結構和內部特性,只依據程式的需求規格說明書,檢查程式的功能是否符合它的功能說明。因此黑盒測試又叫功能測試。軟體的白盒測試是對軟體的過程性細節做細緻的檢查。這種方法是把測試物件看做乙個開啟的盒子,它...