0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

代碼覆蓋率分析是否必要

星星科技指導(dǎo)員 ? 來源:嵌入式計算設(shè)計 ? 作者:JAY THOMAS ? 2022-11-01 10:58 ? 次閱讀

當(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)該采用。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 飛行器
    +關(guān)注

    關(guān)注

    13

    文章

    723

    瀏覽量

    45538
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4791

    瀏覽量

    68694
收藏 人收藏

    評論

    相關(guān)推薦

    英諾達(dá)發(fā)布全新靜態(tài)驗證產(chǎn)品,提升芯片設(shè)計效率

    了重要一步,將為中國芯片產(chǎn)業(yè)的發(fā)展注入新的活力。 靜態(tài)驗證作為一種業(yè)界普遍使用的驗證方法,通過對設(shè)計的源代碼進(jìn)行深入分析,能夠發(fā)現(xiàn)設(shè)計中的潛在問題。與動態(tài)仿真驗證和形式化驗證相結(jié)合,靜態(tài)驗證可以顯著提高驗證的覆蓋率,幫助設(shè)計師在
    的頭像 發(fā)表于 12-24 16:53 ?344次閱讀

    synopsys 的design ware:DW_fpv_div,浮點(diǎn)數(shù)除法器,默認(rèn)32位下,想提升覆蓋率(TMAX),如果用功能case去提升覆蓋率呢?

    ,覆蓋率只有微微的提升,請問是否要遍歷很多數(shù)才能提升覆蓋率嗎?一般這種浮點(diǎn)數(shù)有什么方法去跑嗎? 每個數(shù)都跑豈不是天文數(shù)字,本人剛接觸不久,請大佬指教下,謝謝
    發(fā)表于 10-15 18:38

    利用靜態(tài)檢查工具完善功能安全中測試覆蓋率

    在功能安全中測試覆蓋率是比較重要的概念,也是在驗證過程中通常需要花費(fèi)時間較多的步驟,如果能借助于靜態(tài)檢查工具的死邏輯查找和聲明、測試用例自動補(bǔ)全等功能往往能取得事半功倍的效果。
    的頭像 發(fā)表于 09-05 09:15 ?354次閱讀
    利用靜態(tài)檢查工具完善功能安全中測試<b class='flag-5'>覆蓋率</b>

    智能網(wǎng)聯(lián)是否是自動駕駛落地的必要條件?

    ;另一種則是智能網(wǎng)聯(lián),主張通過車輛與外部環(huán)境的互聯(lián)互通來提升自動駕駛的安全性和可靠性。越來越多的業(yè)內(nèi)人士認(rèn)為,智能網(wǎng)聯(lián)是實現(xiàn)全面自動駕駛的關(guān)鍵路徑,但這是否意味著智能網(wǎng)聯(lián)是自動駕駛落地的必要條件? ? 什么是智
    的頭像 發(fā)表于 08-29 09:02 ?323次閱讀

    TL084方向比例放大器中的平衡電阻是否必要?

    在對一個20mVpp的正弦波做兩級10倍放大時,是否需要此電阻。如需要,是否對電路輸入阻抗造成影響。這個電阻在模電課程中是必要的,可是在Ti的模電工程師手冊中卻被省去。
    發(fā)表于 08-02 08:44

    2025年智能水表將覆蓋全北京!超聲波測量技術(shù)助力智能水表實現(xiàn)全天候高精度流量監(jiān)測

    北京日報報道,預(yù)計到“十四五”規(guī)劃期末,北京市將基本實現(xiàn)智能遠(yuǎn)傳水表的全覆蓋。據(jù)2023年3月22日的數(shù)據(jù)顯示,北京市自來水集團(tuán)已經(jīng)為用戶安裝了超過330萬支智能遠(yuǎn)傳水表,覆蓋率超過了50%。
    的頭像 發(fā)表于 07-19 16:05 ?687次閱讀
    2025年智能水表將<b class='flag-5'>覆蓋</b>全北京!超聲波測量技術(shù)助力智能水表實現(xiàn)全天候高精度流量監(jiān)測

    瑞薩RX MCU功能安全解決方案簡介(4-2)SIL3系統(tǒng)軟件包

    經(jīng)證明,功能安全平臺軟件執(zhí)行的自我診斷和交叉監(jiān)測的診斷覆蓋率可以達(dá)到90%。
    的頭像 發(fā)表于 07-08 18:33 ?1328次閱讀
    瑞薩RX MCU功能安全解決方案簡介(4-2)SIL3系統(tǒng)軟件包

    單元測試工具TESSY 新版本亮點(diǎn)速覽:提供測試駕駛艙視圖、超級覆蓋率代碼訪問分析、增強(qiáng)覆蓋率審查

    各種測試對象和方法的所有覆蓋率測量結(jié)果,并記錄在新的測試總結(jié)報告中。 了解更多TESSY新版本功能詳情或申請免費(fèi)試用,歡迎咨詢TESSY中國授權(quán)分銷商——龍智。 新版本功能亮點(diǎn)速覽: 1、超級覆蓋率 逐行評估源代碼。 基于標(biāo)準(zhǔn)
    的頭像 發(fā)表于 07-08 16:20 ?450次閱讀
    單元測試工具TESSY 新版本亮點(diǎn)速覽:提供測試駕駛艙視圖、超級<b class='flag-5'>覆蓋率</b>、<b class='flag-5'>代碼</b>訪問<b class='flag-5'>分析</b>、增強(qiáng)<b class='flag-5'>覆蓋率</b>審查

    該如何提高代碼容錯、降低代碼耦合度?

    提高RT-Thread代碼的容錯和降低耦合度是確保代碼質(zhì)量和可維護(hù)性的關(guān)鍵,下面列舉了幾種在編寫代碼時,提高代碼容錯
    的頭像 發(fā)表于 06-26 08:10 ?681次閱讀
    該如何提高<b class='flag-5'>代碼</b>容錯<b class='flag-5'>率</b>、降低<b class='flag-5'>代碼</b>耦合度?

    如何將SystemVerilog斷言屬性和覆蓋屬性置于在設(shè)計上?

    功能覆蓋、激勵生成和運(yùn)行管理是當(dāng)今功能驗證的三大相互關(guān)聯(lián)的任務(wù)。其中,功能覆蓋率可以說是最重要的,主要是因為覆蓋率收斂是tape的主要標(biāo)準(zhǔn)。
    的頭像 發(fā)表于 05-28 10:30 ?779次閱讀
    如何將SystemVerilog斷言屬性和<b class='flag-5'>覆蓋</b>屬性置于在設(shè)計上?

    在Flexible Safety RTOS安全應(yīng)用中集成X-CUBE-STL的步驟

    安全操作系統(tǒng)Flexible Safety RTOS提供了空間隔離保護(hù),簡化安全產(chǎn)品的設(shè)計,其安全插件可幫助用戶安全團(tuán)隊提高微控制器診斷覆蓋率。
    的頭像 發(fā)表于 03-15 12:16 ?1395次閱讀
    在Flexible Safety RTOS安全應(yīng)用中集成X-CUBE-STL的步驟

    AI(VSO)賦能的VCS驗證流程

    本質(zhì)是讓設(shè)計人員聚焦于修復(fù)BUG,而不是花時間發(fā)現(xiàn)BUG。將需要大量人力的工作交給AI,極大的推動了覆蓋率收斂的速度。
    發(fā)表于 03-01 14:04 ?1242次閱讀
    AI(VSO)賦能的VCS驗證流程

    手動檢測是否被入侵

    Gitlab代碼是否又被修改過,用gitdiff查看 查看代碼的日志 代碼是否有被改動過 查看服務(wù)器日志
    發(fā)表于 02-29 10:45 ?1048次閱讀

    PSOC4如何通過代碼修改串口波特?

    由于項目需要,需要實時改變串口波特,PSOC4如何通過代碼修改串口波特?謝謝
    發(fā)表于 02-19 07:40

    代碼靜態(tài)測試工具Helix QAC 2023.4新發(fā)布

    Helix QAC 2023.4 為新的 MISRA C++:2023 指南推出了 100% MISRA C++:2023? 規(guī)則覆蓋率。此版本還包括擴(kuò)展的 C++20 語言支持、數(shù)據(jù)流分析的性能改進(jìn)以及整個產(chǎn)品中的許多產(chǎn)品體驗增強(qiáng)功能。
    的頭像 發(fā)表于 01-13 12:25 ?514次閱讀
    <b class='flag-5'>代碼</b>靜態(tài)測試工具Helix QAC 2023.4新發(fā)布