當(dāng)程序員討論測試時,經(jīng)常出現(xiàn)的一個問題是多少才足夠?我需要獲得100%的保險嗎?讓我們首先解決房間里的大象:完全測試一個軟件是不可能的。不相信我?一書中描述的100行程序有多達(dá)1018條獨(dú)特的路徑。實際上,當(dāng)您意識到當(dāng)代軟件通常超過數(shù)十萬甚至數(shù)百萬行代碼時,您很快就會意識到完全測試一個軟件是多么不切實際。
一次正在度假,接到一個來自世界偏遠(yuǎn)地區(qū)的衛(wèi)星電話,告訴我我正在執(zhí)行的任務(wù)是“在飲料中”——一種委婉的說法,表明預(yù)計飛行的飛行器在水下。最后,它被證明是由于生銹的螺母而導(dǎo)致的故障,但在調(diào)查該故障的過程中,我們通過安全關(guān)鍵代碼發(fā)現(xiàn)了許多路徑,這些路徑未被我們的測試制度所涵蓋。雖然在接下來的幾個月里解決了所有問題,但我的假期很難享受,因為我不知道發(fā)生了什么。
那么多少軟件測試才足夠呢?這是任務(wù)和安全關(guān)鍵型軟件項目解決的問題,可以從中吸取一些寶貴的經(jīng)驗教訓(xùn)。最基本的方法是測試,測量,重復(fù)。這里提到的測量是結(jié)構(gòu)覆蓋分析,或代碼覆蓋率。許多行業(yè)標(biāo)準(zhǔn)(例如,航空航天的DO-178和汽車的ISO 26262)要求使用代碼覆蓋率作為證明測試完整性的唯一手段。
結(jié)構(gòu)覆蓋率分析是對給定測試或一組測試執(zhí)行的代碼結(jié)構(gòu)的度量。最基本的指標(biāo)之一,語句覆蓋率 (SC),衡量通過測試執(zhí)行的代碼語句。更嚴(yán)格的度量是決策覆蓋率 (DC),它包括 SC 的目標(biāo)以及測量從代碼中的每個決策點(diǎn)獲取的決策路徑。更嚴(yán)格的是修改條件/決策覆蓋率(MC / DC),其中包括DC的目標(biāo)以及測量決策點(diǎn)中每個條件的值。所有這三種測量都是由DO-178標(biāo)準(zhǔn)強(qiáng)制要求的。
代碼覆蓋率通常以百分比表示,軟件測試越徹底,代碼覆蓋率越高,軟件包含缺陷的可能性就越小。
安全關(guān)鍵型軟件標(biāo)準(zhǔn)高度關(guān)注如何有效地測試軟件。他們指出,有效的軟件測試需要一種規(guī)范的方法,其中代碼覆蓋率用于提供有關(guān)迄今為止測試有效性的反饋。應(yīng)用于系統(tǒng)的測試嚴(yán)格程度必須由系統(tǒng)故障的影響決定。后果越嚴(yán)重,測試必須越嚴(yán)格。
然而,需要注意的是;100%的覆蓋率并不一定轉(zhuǎn)化為有效的測試。以最大化代碼覆蓋率為目標(biāo)的測試可能會遺漏代碼中的重要問題,而嚴(yán)格測試有助于識別這些問題,例如:
? 與需求相關(guān)的錯誤? 缺少代碼
? 與數(shù)據(jù)流相關(guān)的錯誤
? 爭用條件
? 硬件兼容性/配置
盡管如此,作為測試完整性和嚴(yán)謹(jǐn)性的衡量標(biāo)準(zhǔn),代碼覆蓋率是無與倫比的,每個軟件開發(fā)項目都應(yīng)該采用。
審核編輯:郭婷
-
飛行器
+關(guān)注
關(guān)注
13文章
723瀏覽量
45538 -
代碼
+關(guān)注
關(guān)注
30文章
4791瀏覽量
68694
發(fā)布評論請先 登錄
相關(guān)推薦
評論