3、從覆蓋的角度看,測試應該覆蓋:
1)功能覆蓋
2)輸入域覆蓋
3)輸出域覆蓋
4)函數交互覆蓋
5)代碼執行覆蓋
大多數有效的測試用例都來自于分析,而不是僅僅為了達到測試覆蓋率目標而草率設計測試用例。千萬不要誤解測試覆蓋,測試覆蓋并不是我們最求的目的,它只是評價測試的一種方式,為測試提供指導和依據。
4、測試覆蓋程度評估:
● 位置無關調用覆蓋率(Location-independent call coverage,LICC)
LICC = (已覆蓋的不重復的函數調用個數 / 全部不重復的函數調用個數) * 100%
● 位置相關調用覆蓋率(Location-dependent call coverage,LDCC)
LDCC = (已覆蓋的函數調用個數 / 全部函數調用個數) * 100%
案例:
void Func(int i)
{
call1();
if(i==2)call2();
else if((i==3)call3();
else call1();
}
調用Func(2)和Func(3)后我們對Func()的覆蓋評估如下:
LICC:3/3 = 100%
LDCC:3/4 = 75%
5、測試設計程度評估:
測試設計程度也稱用例覆蓋度(Test Case Coverage,TCC),以被測函數在正式測試中使用頻度與其函數定義中分支總數之間關系作為依據,定義如下:
TCC = 用例中調用被測函數的總次數 / 函數定義的分支總數
其中,某函數的分支總數的定義如下:函數分支總數 = 1 + if語句總數 * 2 + while語句總數 * 2 + for語句總數 * 2 ,if語句有TRUE與FALS兩個分支,原理上說應該設計兩次測試才是完整的,while與for也類似,循環至少進入一次應設計一個用例,一次都不進入也應設計一個用例,所以計算出if、while與for語句總數后要乘以2,但如果一個函數沒使用這3個控制語句,也應至少設計一個用例測試它,這是上面公式額外加上1的含義。
三、白盒測試推行
前提條件
● 思想上的統一
質量部門及項目責任人足夠重視,將單元測試輸出列為與代碼輸出同等重要地位。
● 完備的流程支撐
主要指設計文檔的完備性,比如《詳細設計說明書》,因為《詳細設計說明書》是白盒測試的重要依據。