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

新能源車軟件單元測(cè)試深度解析:自動(dòng)駕駛系統(tǒng)視角
在cypress 3014進(jìn)行多種分辨率刷新率切換的操作,是否可行?
智行者蝸小白SC80地庫版開啟地下空間清潔新紀(jì)元
家用網(wǎng)線有必要買屏蔽的嗎
是否有必要將Cat5e網(wǎng)線升級(jí)為Cat6

STM32CubeMX生成代碼就會(huì)覆蓋CMakeLists.txt文件,怎么解決?
分析C語言代碼結(jié)構(gòu)的設(shè)計(jì)問題
英諾達(dá)發(fā)布全新靜態(tài)驗(yàn)證產(chǎn)品,提升芯片設(shè)計(jì)效率
synopsys 的design ware:DW_fpv_div,浮點(diǎn)數(shù)除法器,默認(rèn)32位下,想提升覆蓋率(TMAX),如果用功能case去提升覆蓋率呢?
利用靜態(tài)檢查工具完善功能安全中測(cè)試覆蓋率

評(píng)論