複製鏈接
請複製以下鏈接發送給好友

語句覆蓋

鎖定
語句覆蓋(StatementCoverage) 又稱行覆蓋(LineCoverage),段覆蓋(SegmentCoverage),基本塊覆蓋(BasicBlockCoverage),這是最常用也是最常見的一種覆蓋方式,就是度量被測代碼中每個可執行語句是否被執行到了。這裏説的是“可執行語句”,因此就不會包括像C++的頭文件聲明,代碼註釋,空行,等等。非常好理解,只統計能夠執行的代碼被執行了多少行。需要注意的是,單獨一行的花括號{} 也常常被統計進去。語句覆蓋常常被人指責為“最弱的覆蓋”,它只管覆蓋代碼中的執行語句,卻不考慮各種分支的組合等等。假如只要求達到語句覆蓋,那麼換來的確實測試效果不明顯,很難更多地發現代碼中的問題。
中文名
語句覆蓋
又    稱
行覆蓋

目錄

語句覆蓋簡介

語句覆蓋(StatementCoverage) 又稱行覆蓋(LineCoverage),段覆蓋(SegmentCoverage),基本塊覆蓋(BasicBlockCoverage),這是最常用也是最常見的一種覆蓋方式,就是度量被測代碼中每個可執行語句是否被執行到了。這裏説的是“可執行語句”,因此就不會包括像C++的頭文件聲明,代碼註釋,空行,等等。非常好理解,只統計能夠執行的代碼被執行了多少行。需要注意的是,單獨一行的花括號{} 也常常被統計進去。語句覆蓋常常被人指責為“最弱的覆蓋”,它只管覆蓋代碼中的執行語句,卻不考慮各種分支的組合等等。假如只要求達到語句覆蓋,那麼換來的確實測試效果不明顯,很難更多地發現代碼中的問題。

語句覆蓋舉例

這裏舉一個不能再簡單的例子,我們看下面的被測試代碼:
int foo(int a, int b)
{
return a / b;
}
假如我們的測試人員編寫如下測試案例:
TeseCase: a = 10, b = 5
測試人員的測試結果會告訴你,他的代碼覆蓋率達到了100%,並且所有測試案例都通過了。然而遺憾的是,我們的語句覆蓋率達到了所謂的100%,但是卻沒有發現最簡單的Bug,比如,當我讓b=0時,會拋出一個除零異常。
簡言之,語句覆蓋,就是設計若干個測試用例,運行被測程序,使得每一可執行語句至少執行一次。這裏的“若干個”,意味着使用測試用例越少越好。語句覆蓋率的公式可以表示如下:
語句覆蓋率=可執行的語句總數/被評價到的語句數量 x 100%