測試覆蓋率
學習目標
掌握各種測試覆蓋率的含義
能計算各種測試覆蓋率
理解覆蓋率在白盒測試中所起的作用
覆蓋率概念
覆蓋率是用來度量測試完整性的一個手段。覆蓋率是測試技術有效性的一個度量项鬼。
覆蓋率 = (至少被執(zhí)行一次的item數(shù))/item的總數(shù)
覆蓋率按照測試方法大體上可以劃分為三大類,即白盒覆蓋(White-Box Coverage)侦厚、灰盒覆蓋(Gray-Box Coverage)和
黑盒覆蓋(Black-Box Coverage)耻陕。
測試用例設計不能一味追求覆蓋率,因為測試成本隨覆蓋率的增加而增加。
白盒覆蓋率
白盒覆蓋率中使用的最常見的就是邏輯覆蓋率(Logical Coverage),也叫代碼覆蓋率(Code Coverage)或結構化覆蓋率(Structural Coverage)刨沦。
邏輯覆蓋包括:
語句覆蓋
語句覆蓋(Statement Coverage)的含義是,在測試時運行被測程序后,程序中被執(zhí)行到的可執(zhí)行語句的比率:
語句覆蓋率 = (至少被執(zhí)行一次的語句數(shù)量)/(可執(zhí)行的語句總數(shù))
在測試時,首先設計若干個測試用例,然后運行被測試程序,使程序中的每個可執(zhí)行語句至少執(zhí)行一次诗宣。
語句覆蓋率
即使語句覆蓋率達到百分之100%也會有缺陷發(fā)現(xiàn)不了,所以覆蓋率只是我們度量的手段。
判斷覆蓋率
判斷覆蓋(Decision Coverage)也叫分支覆蓋(Branch Coverage)想诅,它的含義是,在測試時運行被測程序后,
程序中所有判斷語句的取真分支和取假分支被執(zhí)行到的比率:
判定覆蓋率= (判定結果被評價的次數(shù))/(判定結果的總數(shù))
在測試時,首先設計若干個測試用例,然后運行被測試程序,使得程序中每個判斷的取真分支和取假分支至少經歷一次,
即判斷的真假值均曾被滿足召庞。
即使判定覆蓋率達到了100%也會有缺陷發(fā)現(xiàn)不了,所以覆蓋率只是我們度量的手段。
判斷覆蓋
條件覆蓋
條件覆蓋率
條件覆蓋(Condition Coverage)的含義是,在測試時運行被測程序后,所有判斷語句中每一個
條件的可能取值(真值和假值)出現(xiàn)過的比率:
條件覆蓋率 = (條件操作數(shù)值至少被評價一次的數(shù)量)/(條件操作數(shù)值的總數(shù))
判定條件覆蓋
判定-條件覆蓋率
判定條件覆蓋(Decision Condition Coverage),也叫分支條件覆蓋(Branch Condition Coverage)来破,也叫分支
條件覆蓋(Branch Condition Cverage)篮灼。所謂判定一條件覆蓋就是設計足夠的測試用例,使得判斷中每個調價函所有
可能取值至少執(zhí)行一次,同時每個判斷本身的所有可能判斷結果至少執(zhí)行一次。
判定條件覆蓋率 = (條件操作數(shù)值或判定結果至少被評價一次的數(shù)量)/(條件操作數(shù)值總數(shù)+判定結果總數(shù))
條件組合覆蓋
條件組合覆蓋率(Multiple Condition Coverage),基本思想是:設計足夠的測試用例,使得每一個判定中條件的各種可能組合
都至少出現(xiàn)一次徘禁。
條件組合覆蓋率 = (條件組合至少被評價一次的數(shù)量)/(條件組合總數(shù))
路徑覆蓋率
路徑能否全面覆蓋在軟件測試中是個重要問題,如果程序中的每一條路徑都得到考驗,才能說程序受到了全面檢驗
即使對于路徑數(shù)很有限的程序已經做到了路徑覆蓋,仍然不能保證被測程序的正確性
每種覆蓋率度量的時候都有其局限性,因此要把各種覆蓋率組合起來對測試進行度量穿稳。
函數(shù)覆蓋
有很多測試工具,例如TrueCoverage,PureCoverage等,都提供了函數(shù)覆蓋(Function Coverage)的概念,函數(shù)覆蓋是針對系統(tǒng)
或一個子系統(tǒng)的測試的,它表示在該測試中,有哪些函數(shù)被測試到了,其被測試到的頻率有多大,這些函數(shù)在系統(tǒng)所有函數(shù)中占
的比例有多大晌坤。函數(shù)覆蓋是一個比較容易自動化的技術逢艘。
函數(shù)覆蓋 = (至少被執(zhí)行一次的函數(shù)數(shù)量)/(系統(tǒng)中函數(shù)的總數(shù))
接口覆蓋
接口覆蓋(Interface Coverage),或者稱為入口點覆蓋(Entry-Point Coverage),要求通過設計一定的用例使得系統(tǒng)的每個接口被測試到。
接口覆蓋 = (至少被執(zhí)行一次的接口數(shù)量)/(系統(tǒng)中接口的總數(shù))
灰盒覆蓋率
黑盒覆蓋率
面向對象的覆蓋率
*/