覆蓋率是用來度量測試完整性的一個手段。覆蓋率是測試技術有效性的一個度量。
計算公式:覆蓋率=(至少被執行一次的item數)/item的總數
覆蓋率按照測試方法大體上可以划分為三類:
1)白盒覆蓋率:也叫代碼覆蓋率或結構化覆蓋率。白盒覆蓋率中最常見的是邏輯覆蓋率。
邏輯覆蓋率包括:語句覆蓋(可執行的語句);
判定覆蓋(判定結果);
條件覆蓋(每個條件分為true、false);
判定條件覆蓋(將判定和條件覆蓋的分子、分母分別相加);
條件組合覆蓋(將每組判定結果全排列后相加);
路徑覆蓋。
其他覆蓋如指令塊覆蓋、判定路徑覆蓋等。
例:
針對上圖程序,執行測試用例(A=3,B=0,X=1)分別計算這種情況下的語句覆蓋率、判定覆蓋率、條件覆蓋率、判定條件覆蓋率、條件組合覆蓋率和路徑覆蓋率。
語句覆蓋率:1/2;
判定覆蓋率:2/4;
條件覆蓋率:4/8;
判定條件覆蓋率:6/12;
條件組合覆蓋率:2/8;
路徑覆蓋率:1/4;
小結:
每種覆蓋率度量的時候都有其局限性,因此要把各種覆蓋率組合起來對測試進行度量。
各種結構測試方法都不能保證程序的正確性,但是測試的目的並非要證明程序的正確性,而是要盡可能找出程序中的錯誤。
2)灰盒覆蓋率:一般指函數覆蓋、接口覆蓋。
3)黑盒覆蓋率:主要是功能覆蓋率。
功能覆蓋率中最常見的是需求覆蓋,其含義是通過設計一定的測試用例,要求每個需求點都被測試到。
測試用例設計不能一味追求覆蓋率,因為測試成本會隨覆蓋率的增加而增加。