軟件測試覆蓋率簡介
一、定義:覆蓋率是用來度量測試完整性的一個手段,同時也是測試技術有效性的一個度量。
二、計算:覆蓋率=(至少被執行一次的item數)/item的總數
三、特色
1)經過覆蓋率數據,能夠檢測咱們的測試是否充分
2)分析出測試的弱點在哪方面
3)指導咱們設計可以增長覆蓋率的測試用例,有效提升測試質量,可是測試用例設計不能一味追求覆蓋率,由於測試成本隨覆蓋率的增長而增長。
函數
軟件測試覆蓋率分類
覆蓋率按照測試方法大致上能夠劃分爲三大類,即白盒覆蓋(white-Box Coverage)、灰盒覆蓋(Gray-Box coverage)和黑盒覆蓋(Black-Box Coverage)。
測試
白盒覆蓋率(white-Box Coverage)
白盒覆蓋率中使用的最多見的就是邏輯覆蓋率(Logical Coverage ),也叫代碼覆蓋率(Code Coverage)或者結構化覆蓋率(Structural Coverage),咱們常見的邏輯覆蓋包括:語句覆蓋、斷定覆蓋、條件覆蓋、斷定條件覆蓋、條件組合覆蓋、路徑覆蓋。
spa
一、語句覆蓋(Statement Coverage)
1)定義:在測試時,運行被測程序後,程序中被執行的可執行語句的比率。
2)計算公式:語句覆蓋率=(至少被執行一次的語句數量)/(可執行的語句總數)
3)100%語句覆蓋率含義:在測試時,首先設計若干個測試用例,而後運行被測程序,使程序中的每一個可執行語句至少執行一次。
4)特色:語句覆蓋能夠檢驗每一個可執行語句,可是即便語句覆蓋率達到了100%,也會有缺陷發現不了,因此覆蓋率只是咱們度量的手段。
設計
二、斷定覆蓋(Decision Coverage)/分支覆蓋率(Branch Coverage)
1)定義:在測試時,運行被測程序後,程序中全部判斷語句的取真分支和取假分支被執行到的比率。
2)計算公式:斷定覆蓋率=(斷定結果被評價的次數)/(斷定結果的總數)
3)100%條件覆蓋率含義:在測試時,首先設計若干個測試用例,而後運行測試程序,使得程序中每一個判斷的取真分支和取假分支至少經歷一次,即判斷的真假值均曾被知足。
4)特色
(1)若斷定覆蓋達到100%,則語句覆蓋必爲100%。
(2)即便斷定覆蓋率達到了100%,也會有缺陷發現不了。
接口
三、條件覆蓋(Condition Coverage)
1)定義:在測試時,運行被測程序後,程序中全部判斷語句中每一個條件的可能取值(真值和假值)出現過的比率。
2)計算公式:條件覆蓋率=(條件操做數值至少被評價一次的數量)/(條件操做數值的總數)
3)100%條件覆蓋率含義:在測試時,首先設計若干個測試用例,而後運行被測試程序,要使每一個判斷中每一個條件的可能取值至少知足一次。
4)特色:覆蓋條件的測試用例不必定覆蓋斷定。
ci
四、斷定-條件覆蓋(Decision Condition Coverage)/分支條件覆蓋(Branch Condition Coverage)
1)定義:在測試時,運行被測程序後,程序中全部判斷語句中每一個條件的可能取值(真值和假值)和每一個判斷自己的斷定結果(爲真爲假)出現的比率。
2)計算公式:斷定-條件覆蓋率=(條件操做數值或斷定結果至少被評價一次的數量)/(條件操做數值的總數+斷定結果的總數)
3)100%斷定-條件覆蓋率含義:設計足夠的測試用例,使得判斷中每一個條件的全部可能取值至少執行一次,同時每一個判斷自己的全部可能結果至少執行一次。換言之,便是要求各個判斷的全部的可能的取值組合至少執行一次。
4)特色
(1)斷定-條件覆蓋率實際上就是斷定覆蓋率和條件覆蓋率的組合。
(2)採用斷定-條件覆蓋,邏輯表達式中的錯誤不必定可以查得出來。
it
五、條件組合覆蓋(Condition combination coverage)
1)定義:在測試時,運行被測程序後,全部語句中原子條件全部的可能的取值結果組合出現過的比率。
2)計算公式:條件組合覆蓋率=(至少被執行一次的條件組合)/(總的可能的條件組合數)
3)100%條件組合覆蓋率含義:設計足夠的測試用例,使得判斷中條件的各類可能組合至少出現過一次。
4)特色:若條件組合覆蓋率爲100%,則語句覆蓋率、斷定覆蓋率、條件覆蓋率和斷定-條件覆蓋率必爲100%。
io
六、路徑覆蓋(Path Coverage)
1)定義:在測試時,運行被測程序後,程序中全部可能的路徑被執行的比率。
2)計算公式:路徑覆蓋率=(至少被執行一次的路徑數)/(總的路徑數)
3)100%路徑覆蓋率含義:設計足夠的測試用例,要求覆蓋程序中全部可能的路徑。
4)特色
(1)路徑覆蓋比斷定條件覆蓋更強,可是不能包含斷定條件覆蓋。
(2)若路徑覆蓋率爲100%,則語句覆蓋率、斷定覆蓋率必爲100%。
小結:邏輯覆蓋率能夠做爲軟件測試的一個度量,可是,即便達到了100%的邏輯覆蓋率,仍然沒法保證程序的正確性。
軟件
灰盒覆蓋率(Gray-Box Coverage)
函數覆蓋和接口覆蓋能夠歸爲灰盒測試的範疇。
一、函數覆蓋
1)定義:它表示在測試中,有哪些函數被測試到了,其被測試到的頻率有多大,這些函數在系統全部函數中佔的比例有多大。
2)計算公式:函數覆蓋=(至少被執行一次的函數數量)/(系統中函數的總數)
3)特色:是針對一個系統或者子系統測試的。
程序
二、接口覆蓋(Interface Coverage)/入口點覆蓋(Entry-Point Coverage)
1)定義:要求經過設計必定的用例使得系統的每一個接口被測試到。
2)計算公式:接口覆蓋=(至少被執行一次的接口數量)/(系統中接口的總數)
黑盒覆蓋率(Black-Box Coverage)
在實際測試中,與黑盒相關的覆蓋率比較少,主要是功能覆蓋率(Function Coverage),其中最多見的是需求覆蓋。
需求覆蓋
1)定義:它表示在測試中,有哪些函數被測試到了,其被測試到的頻率有多大,這些函數在系統全部函數中佔的比例有多大經過設計必定的測試用例,要求每一個需求點都被測試到。
2)計算公式:需求覆蓋=(被驗證到的需求數量)/(總的需求總數)