按照測驗方法的分類,測驗可以分為白盒測驗和黑盒測驗,
黑盒測驗是把產品看成一個黑盒子,不關心具體代碼是怎么實作功能的,只關心資料的輸入和輸出,所以黑盒測驗也稱為資料驅動測驗,
白盒測驗也稱結構測驗或邏輯結構測驗,這個盒子是白色的,所以我們需要知道代碼是怎么實作功能的,測驗人員需要根據程式的內部邏輯和結構進行測驗用例的選擇和設計,在白盒測驗中,程式中所有的邏輯路徑都應該被測驗到,
所以白盒測驗需要測驗人員看懂代碼,是一種基于代碼的測驗,與黑盒測驗相比,白盒測驗對測驗人員的要求更加高,
白盒測驗的基本方法主要有以下六種:
1.陳述句覆寫
2.分支覆寫
3.條件覆寫
4.判定條件覆寫
5.路徑覆寫
6.組合覆寫
按照覆寫強度由低到高排序:陳述句覆寫<分支覆寫<條件覆寫<判定條件覆寫<條件組合覆寫<路徑覆寫
陳述句覆寫(最弱覆寫)
陳述句覆寫需要我們設計出來的測驗用例中保證程式的每一個陳述句至少被執行一次,因為它僅僅考慮對代碼中的執行陳述句進行覆寫而沒有考慮各種條件和分支,比較難發現代碼中存在的問題,
以下面的代碼為例:
if A and B then action1
if C or D then action2
只需要一條測驗用例:
A=true B=true C=true
就可以實作程式中每一個陳述句都執行一遍的要求,
再看一個示例:
switch ( value )
{
case 0:
other = 30;
break;
case 1:
other = 50;
break;
case 2:
other = 300;
case 3:
other = other / value;
break;
default:
other = other * value;
}
請問需要多少個測驗用例才可以滿足陳述句覆寫的要求
答案是4個,Attention!case2沒有break,所以case 2 和case 3可以在value=2的時候被執行到,
只要看見switch就要注意每個case陳述句后面有沒有break~
分支覆寫(判定覆寫)
分支覆寫(判定覆寫):使得程式中的每個判斷的取真和取假至少經歷一次,即判斷的真偽均曾被滿足,
同樣的,我們再來看這個代碼:
if A and B then action1
if C or D then action2
需要兩條測驗用例:
1:a=true b=true c=true d=false
2: a=true b=false c=false d=false
條件覆寫
條件覆寫要求所設計的測驗用例能夠使每個判定中的每個條件都獲得可能的取值,即每個條件至少有一次真值和假值,
同樣的,我們再來看這個代碼:
if A and B then action1
if C or D then action2
也是需要兩條測驗用例即可滿足每個條件都取過真值和假值,
1:a=true b=true c=true d=true
2: a=false b=false c=false d=false
注意要區分判斷和條件,
判定條件覆寫
判定條件覆寫是將判定覆寫和條件覆寫結合在一起,使得測驗用例中,判斷中的每個條件所有可能的取值至少執行一次,同時每個判斷本身所有的結果也要執行一次,但仍舊沒有考慮到各種條件的組合情況,
代碼:
if A and B then action1
if C or D then action2
兩個測驗用例即可滿足:
1:a=true b=true c=true d=true
2: a=false b=false c=false d=false
設有一個判斷陳述句
if(!(ch >= '0' && ch <= '9'))
printf("This is not a digit!\\n");
else
printf("This is a digit!\\n");
為實作判定-條件覆寫,需要設計的測驗用例個數至少為:3個
為了實作條件覆寫,就需要三個測驗用例了,同時完成了判定覆寫,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/379457.html
標籤:其他
