代碼覆蓋測試
 
 
概述
在做單元測試時,代碼覆蓋率常常被拿來作為衡量測試好壞的指標,甚至,用代碼覆蓋率來考核測試任務(wù)完成情況,比如,代碼覆蓋率必須達到80%或 90%。于是乎,測試人員費盡心思設(shè)計案例覆蓋代碼。用代碼覆蓋率來衡量,有利也有有弊。
代碼覆蓋是由系統(tǒng)化軟件測試所衍生的方式。第一份出版的相關(guān)參考資料是Miller及Maloney1963年在ACM通訊上發(fā)表的論文 。
覆蓋測試是衡量測試質(zhì)量的一個重要指標。在對一個軟件產(chǎn)品進行了單元測試、組裝測試、集成測試以及接口測試等繁多的測試之后,我們能不能就此對軟件的質(zhì)量產(chǎn)生一定的信心呢?這就需要我們對測試的質(zhì)量進行考察。如果測試僅覆蓋了代碼的一小部分,那么不管我們寫了多少測試用例,我們也不能相信軟件質(zhì)量是有保證的。相反,如果測試覆蓋到了軟件的絕大部分代碼,我們就能對軟件的質(zhì)量有一個合理的信心。
度量方式
函數(shù)覆蓋
函數(shù)覆蓋(Function Coverage),有執(zhí)行到程式中的每一個函數(shù)(或副程式)嗎。
語句覆蓋
語句覆蓋(Statement Coverage),又稱行覆蓋(Line Coverage),段覆蓋(Segment Coverage),基本塊覆蓋(Basic Block Coverage),這是最常用也是最常見的一種覆蓋方式,就是度量被測代碼中每個可執(zhí)行語句是否被執(zhí)行到了。這里說的是“可執(zhí)行語句”,因此就不會包括像C++的頭文件聲明,代碼注釋,空行,等等。非常好理解,只統(tǒng)計能夠執(zhí)行的代碼被執(zhí)行了多少行。需要注意的是,單獨一行的花括號{}也常常被統(tǒng)計進去。語句覆蓋常常被人指責為“最弱的覆蓋”,它只管覆蓋代碼中的執(zhí)行語句,卻不考慮各種分支的組合等等。假如你的上司只要求你達到語句覆蓋,那么你可以省下很多功夫,但是,換來的確實測試效果的不明顯,很難更多地發(fā)現(xiàn)代碼中的問題。
判斷覆蓋
判斷覆蓋(Decision Coverage),又稱分支覆蓋(Branch Coverage),所有邊界覆蓋(All-Edges Coverage),基本路徑覆蓋(Basic Path Coverage),判定路徑覆蓋(Decision-Decision-Path)。它度量程序中每一個判定的分支是否都被測試到了。這句話是需要進一步理解的,應該非常容易和下面說到的條件覆蓋混淆。因此我們直接介紹第三種覆蓋方式,然后和判定覆蓋一起來對比,就明白兩者是怎么回事了。
條件覆蓋
條件覆蓋(Condition Coverage),它度量判定中的每個子表達式結(jié)果true和false是否被測試到了。
路徑覆蓋
路徑覆蓋(Path Coverage),又稱斷言覆蓋(Predicate Coverage)。它度量了是否函數(shù)的每一個分支都被執(zhí)行了。 這句話也非常好理解,就是所有可能的分支都執(zhí)行一遍,有多個分支嵌套時,需要對多個分支進行排列組合,可想而知,測試路徑隨著分支的數(shù)量指數(shù)級別增加。
總結(jié)編輯
通過上面的學習,我們再回頭想想,覆蓋率數(shù)據(jù)到底有多大意義??偨Y(jié)如下幾個觀點:
覆蓋率數(shù)據(jù)只能代表你測試過哪些代碼,不能代表你是否測試好這些代碼。(比如上面第一個除零Bug)
不要過于相信覆蓋率數(shù)據(jù)。
不要只拿語句覆蓋率(行覆蓋率)來考核你的測試人員。
路徑覆蓋率 > 判定覆蓋 > 語句覆蓋
測試人員不能盲目追求代碼覆蓋率,而應該想辦法設(shè)計更多更好的案例,哪怕多設(shè)計出來的案例對覆蓋率一點影響也沒有。
廣州賽度檢測服務(wù)有限公司是經(jīng)廣州市工商行政管理局批準成立,是與國家實驗室及區(qū)域性地方實驗室展開合作的,覆蓋全國的軟、硬件檢測服務(wù)機構(gòu),以公平、公正、公開、科學的檢測服務(wù)要求,為國家鼓勵科技產(chǎn)業(yè)發(fā)展、民族經(jīng)濟建設(shè)提供專業(yè)的第三方檢測及第三方評估服務(wù)。主營業(yè)務(wù)范圍包括:軟件測試服務(wù) 無線通信網(wǎng)絡(luò)系統(tǒng)性能檢測服務(wù) 無損檢測 電子產(chǎn)品檢測 科技中介服務(wù) 科技項目評估服務(wù) 科技成果鑒定服務(wù) 科技信息咨詢服務(wù) 科技項目代理服務(wù) 科技項目招標服務(wù) 企業(yè)管理咨詢服務(wù) 教育咨詢服務(wù) 企業(yè)財務(wù)咨詢服務(wù) 專利服務(wù) 商標代理等服務(wù) 版權(quán)服務(wù) 軟件開發(fā) 信息系統(tǒng)集成服務(wù) 等經(jīng)
關(guān)于我們 | 友情鏈接 | 網(wǎng)站地圖 | 聯(lián)系我們 | 最新產(chǎn)品
浙江民營企業(yè)網(wǎng) peada.cn 版權(quán)所有 2002-2010
浙ICP備11047537號-1