99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

如何使用覆蓋率指標(biāo)進(jìn)行更有效的嵌入式軟件測試

星星科技指導(dǎo)員 ? 來源:嵌入式計算設(shè)計 ? 作者:John Thomas ? 2022-06-29 10:20 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

時間就是軟件開發(fā)中的一切。想想發(fā)現(xiàn)軟件缺陷的時間。在發(fā)布后發(fā)現(xiàn),這可能是一場災(zāi)難,危及人們的安全并造成數(shù)百萬美元的損失。在發(fā)布之前發(fā)現(xiàn),缺陷可以減少到僅僅是一個煩惱。

這就是為什么軟件測試已成為開發(fā)生命周期中不可或缺的一部分。事實上,根據(jù) Fraunhofter Esk 研究所 2012 年的一項調(diào)查,測試不僅是軟件開發(fā)過程的重要部分,對于大多數(shù)嵌入式系統(tǒng)開發(fā)人員來說,它也是最困難的部分。

由于許多原因,測試可能很困難,但最基本的挑戰(zhàn)之一是衡量進(jìn)度。在測試期間未能使用可靠的指標(biāo)跟蹤進(jìn)度可能會浪費時間并導(dǎo)致軟件質(zhì)量下降。試圖忽略指標(biāo)并以測試所有內(nèi)容為目標(biāo)是很誘人的,但這種方法很危險,因為軟件測試有可能成為一項無止境的工作。Glennford Myers 在 1976 年的《軟件可靠性:原則與實踐》一書中證明了這一點,當(dāng)時他表明一個 100 行的程序可以有多達(dá) 1018 條獨特的路徑。在現(xiàn)代軟件開發(fā)世界中,軟件可以增長到數(shù)百萬行代碼。這使得完全詳盡的測試不可行。

此外,通常不僅僅是軟件開發(fā)團隊需要對測試水平感到滿意。客戶可能會要求提供代碼經(jīng)過適當(dāng)測試的證據(jù),而航空電子、汽車和醫(yī)療領(lǐng)域等安全關(guān)鍵行業(yè)的監(jiān)管機構(gòu)將需要證明對缺陷進(jìn)行了充分檢查的證據(jù)。因此,有必要定義一種衡量“充分”測試的方式,并且需要以一種可以客觀衡量的方式來完成,以滿足開發(fā)過程中的所有利益相關(guān)者。

對于有效的軟件測試,開發(fā)人員需要解決如何衡量測試過程,如何確定多少測試足夠,以及開發(fā)團隊如何能夠最具戰(zhàn)略性地確保他們開發(fā)的軟件應(yīng)用程序已經(jīng)過充分測試。

什么是代碼覆蓋率?

結(jié)構(gòu)代碼覆蓋率分析是一種查看程序邏輯結(jié)構(gòu)的哪些部分在測試執(zhí)行期間已被執(zhí)行或“覆蓋”的方法。邏輯結(jié)構(gòu)取決于所使用的代碼覆蓋率指標(biāo)。例如,“入口點”覆蓋查看在測試中執(zhí)行了哪些函數(shù)調(diào)用或“入口點”。同樣,“動態(tài)數(shù)據(jù)流”覆蓋查看數(shù)據(jù)流的哪些部分已被執(zhí)行。雖然不同的結(jié)構(gòu)覆蓋率指標(biāo)從不同的角度檢查代碼,但它們都有一個共同的目的,即通過顯示測試了多少代碼以及執(zhí)行了代碼的哪些部分來對測試過程提供有意義的洞察。

專門的結(jié)構(gòu)覆蓋度量可以為特殊的測試用例提供服務(wù),例如分析數(shù)據(jù)和控制耦合。但是,為了衡量一般測試的有效性,三個代碼覆蓋率指標(biāo)已在行業(yè)中得到廣泛使用:

語句覆蓋率 (SC) –已執(zhí)行程序的多少語句

決策覆蓋率 (DC) –已執(zhí)行了多少個決策分支;這實際上是語句覆蓋的超集,因為要覆蓋所有決策的所有分支,還必須覆蓋所有語句

修改的條件/決策覆蓋(MC/DC)——這建立在決策覆蓋的基礎(chǔ)上,確保復(fù)雜決策的每個子條件在其真假狀態(tài)下獨立執(zhí)行

這些指標(biāo)已被廣泛認(rèn)為是衡量測試徹底性的方法。特別是,汽車、航空電子和工業(yè)軟件等行業(yè)已經(jīng)在其軟件安全標(biāo)準(zhǔn)中采用了這些指標(biāo)。

更高的關(guān)鍵性需要更徹底的測試

值得注意的是,這些軟件安全標(biāo)準(zhǔn)并未強制要求在所有項目中統(tǒng)一使用聲明、決策和 MC/DC 覆蓋率。相反,每個主要的行業(yè)軟件安全標(biāo)準(zhǔn)都建議根據(jù)代碼的關(guān)鍵程度使用不同級別的結(jié)構(gòu)覆蓋,盡管關(guān)鍵級別通常以特定行業(yè)的方式確定。例如,航空電子行業(yè)的軟件安全標(biāo)準(zhǔn) DO-178C 使用軟件安全級別的概念,并要求對每個安全級別進(jìn)行不同級別的結(jié)構(gòu)覆蓋分析。

IEC 61508 是一種通用工業(yè)軟件安全標(biāo)準(zhǔn),它定義了安全完整性等級 (SIL),并根據(jù)每個等級推薦了不同的結(jié)構(gòu)覆蓋率指標(biāo)。

在所有這些標(biāo)準(zhǔn)中,可以看到一個共同的理念:代碼必須“越安全”,所需測試的徹底性就越高。軟件安全意味著什么的確切定義取決于特定行業(yè)的關(guān)注點、經(jīng)驗和監(jiān)管壓力,但這種將所需的更高級別的安全性與所需的更高級別的結(jié)構(gòu)覆蓋相匹配的一般原則在整個標(biāo)準(zhǔn)中保持不變。

測試應(yīng)源于需求

軟件安全標(biāo)準(zhǔn)中跨行業(yè)的另一個共同點是認(rèn)為測試應(yīng)該從需求中產(chǎn)生。軟件需求應(yīng)確定測試所需的輸入和輸出。如果他們不這樣做,測試可能會成為一組并行的需求,這會導(dǎo)致混亂和軟件錯誤。結(jié)構(gòu)覆蓋率不能取代需求作為測試的基礎(chǔ),因為覆蓋率指標(biāo)不能決定代碼的行為方式——只有在執(zhí)行期間可以訪問(并且,考慮到調(diào)試器的能力,在執(zhí)行期間可以訪問可以是一個靈活的概念)。

雖然是互補的,但測試執(zhí)行代碼的有效性和測試需求的完整性是兩件不同的事情。在結(jié)構(gòu)覆蓋分析中衡量的測試有效性著眼于代碼的哪些部分被執(zhí)行。測試完整性,有時稱為“需求覆蓋率”,查看代碼是否已經(jīng)針對所有需求的正確行為進(jìn)行了測試。如果一個軟件程序是根據(jù)其需求構(gòu)建的,并且如果它不包含與其需求無關(guān)的代碼,那么對需求的完整測試應(yīng)該會導(dǎo)致測試有效地執(zhí)行所有代碼。如果有代碼沒有被測試執(zhí)行,這可能是可以刪除的代碼,或者可能是缺少的需求,或者可能是測試中的缺陷。這樣,

執(zhí)行代碼和測試需求之間的這種關(guān)系也存在于單個需求的層面上。雖然從證據(jù)收集的角度來看,有多少需求和測試了多少代碼的高級總計更有趣,但更多的是在單個需求測試級別,以及該單個需求測試的結(jié)構(gòu)覆蓋分析,其中大多數(shù)缺陷被識別和修復(fù)。

結(jié)構(gòu)覆蓋分析通常被認(rèn)為是實現(xiàn) 100% 指標(biāo)的簡單目標(biāo),但檢查單個測試及其產(chǎn)生的結(jié)構(gòu)覆蓋至關(guān)重要。當(dāng)正在執(zhí)行的代碼基于正在測試的需求時,尤其如此。通過檢查代碼的結(jié)構(gòu)覆蓋率,可以確定被測代碼的確切行為,并將其與基于被測需求的預(yù)期行為進(jìn)行比較。這種方法減少了由于環(huán)境因素或代碼的其他部分補償不正確代碼而導(dǎo)致的誤報。此外,如果存在不正確的行為,結(jié)構(gòu)覆蓋分析通常還可以提供對不正確行為原因的洞察。

當(dāng)使用結(jié)構(gòu)覆蓋分析以這種詳細(xì)的方式理解代碼行為時,能夠?qū)⒔Y(jié)構(gòu)覆蓋分析結(jié)果覆蓋在代碼結(jié)構(gòu)分析之上是至關(guān)重要的。此覆蓋有助于將原始結(jié)構(gòu)覆蓋信息轉(zhuǎn)換為對代碼中正在發(fā)生的事情的有意義的理解。

在單元和系統(tǒng)級別設(shè)置覆蓋目標(biāo)

通常,結(jié)構(gòu)覆蓋分析目標(biāo)可以在單元和系統(tǒng)級別設(shè)置。單元級別的結(jié)構(gòu)覆蓋是通過基于該單元要求的單元級別的測試來實現(xiàn)的。另一方面,系統(tǒng)級覆蓋目標(biāo)通常從更高級別需求的測試覆蓋開始。然而,如果僅使用高級測試進(jìn)行系統(tǒng)級覆蓋分析,則覆蓋中經(jīng)常會出現(xiàn)漏洞。這些漏洞的原因可能會有所不同。在某些情況下,覆蓋漏洞可能是由于編碼標(biāo)準(zhǔn)要求的防御性編程實踐造成的,但這些覆蓋漏洞也可能基于從需求中實現(xiàn)的重要功能。

特別是,當(dāng)代碼基于只能通過難以或不可能在高級別上創(chuàng)建的條件進(jìn)行測試的需求時,可能會出現(xiàn)結(jié)構(gòu)覆蓋漏洞。這種場景的一個例子是文件系統(tǒng)故障的功能級檢查。雖然通??赡軙?dǎo)致文件系統(tǒng)故障,但要對文件系統(tǒng)故障進(jìn)行計時以使其在該函數(shù)的執(zhí)行期間發(fā)生是非常具有挑戰(zhàn)性的。此外,以可重復(fù)的方式為將來的回歸測試執(zhí)行此操作可能會更加困難。在這種情況下,可能需要使用單獨檢查代碼的較低級別的測試。出于這個原因,在收集實現(xiàn)測試目標(biāo)的指標(biāo)時,從較高級別測試測量的結(jié)構(gòu)覆蓋率通常與來自較低級別測試的結(jié)構(gòu)覆蓋率相結(jié)合。

聲明、決策或 MC/DC 覆蓋率等指標(biāo)并不能保證軟件沒有缺陷。如前所述,真正詳盡的測試可能是不可能的,或者至少是不可行的。然而,結(jié)構(gòu)覆蓋率度量可以更好地了解代碼的可靠性和對測試的更大信心。

由于結(jié)構(gòu)覆蓋分析通過顯示測試了多少代碼以及執(zhí)行了代碼的哪些部分來深入了解測試活動,因此它可以在系統(tǒng)、模塊或單元級別執(zhí)行,并且可以累積到測試目標(biāo)。 代碼覆蓋率不應(yīng)與基于需求的測試隔離開來。此外,除了結(jié)構(gòu)覆蓋分析之外,可能還需要執(zhí)行一些測試。例如,測試競爭條件和整數(shù)限制邊緣條件對于檢測缺陷可能很有價值,但它們可能無助于您的結(jié)構(gòu)覆蓋目標(biāo)。結(jié)構(gòu)覆蓋分析旨在衡量您已完成的測試并指導(dǎo)您的測試計劃,但不應(yīng)將其視為目標(biāo)。

謹(jǐn)防!

在不了解測試的情況下積累結(jié)構(gòu)覆蓋可能會提供一種錯誤的安全感,這比不充分的測試更危險。結(jié)構(gòu)覆蓋分析不是靈丹妙藥,而是需要智能和謹(jǐn)慎使用的工具。但是,如果使用得當(dāng),它是一種工具,可以使測試更有用、更有效,并為測試過程提供證據(jù)。

審核編輯:郭婷

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

    關(guān)注

    8

    文章

    5706

    瀏覽量

    128886
  • 嵌入式
    +關(guān)注

    關(guān)注

    5152

    文章

    19675

    瀏覽量

    317645
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    嵌入式軟件開發(fā)常用的軟件有哪些?

    軟件功能。 2. Visual Studio 簡稱VS: 它是一個IDE,集成開發(fā)環(huán)境。驗證C程序或是進(jìn)行c#程序開發(fā),可以用它。一些與嵌入式相關(guān)的模擬器也是基于VS的。幫助開發(fā)人員更穩(wěn)定,
    發(fā)表于 07-03 17:06

    嵌入式軟件行業(yè)增長驅(qū)動因素

    嵌入式軟件在物聯(lián)網(wǎng)應(yīng)用中至關(guān)重要,因為它管理設(shè)備操作、控制傳感器、支持連接并確保數(shù)據(jù)安全。例如,在智能家居中,恒溫器、安全攝像頭和燈光等設(shè)備使用嵌入式系統(tǒng)獨立運行,并通過云平臺或本地網(wǎng)絡(luò)與其他智能
    的頭像 發(fā)表于 05-09 11:26 ?345次閱讀

    嵌入式主板開發(fā)詳細(xì)指南

    嵌入式主板開發(fā)涉及硬件設(shè)計、軟件集成、系統(tǒng)優(yōu)化等多個環(huán)節(jié),需要結(jié)合具體應(yīng)用場景進(jìn)行深度定制。以下是嵌入式主板開發(fā)的詳細(xì)指南,涵蓋關(guān)鍵步驟、工具、挑戰(zhàn)及實際案例:一、開發(fā)流程與關(guān)鍵步驟1
    的頭像 發(fā)表于 04-02 11:35 ?554次閱讀
    <b class='flag-5'>嵌入式</b>主板開發(fā)詳細(xì)指南

    嵌入式軟件單元測試的必要性、核心方法及工具深度解析

    一、為什么嵌入式軟件必須重視單元測試? ?嵌入式系統(tǒng)的特殊性? 在汽車 ECU、醫(yī)療設(shè)備控制器等場景中,軟件直接操控硬件,?單比特錯誤可能導(dǎo)
    的頭像 發(fā)表于 03-21 14:53 ?468次閱讀

    嵌入式軟件測試技術(shù)深度研究報告

    嵌入式軟件測試技術(shù)深度研究報告 ——基于winAMS的全生命周期質(zhì)量保障體系構(gòu)建 一、行業(yè)技術(shù)瓶頸與解決方案框架 2025年嵌入式軟件
    的頭像 發(fā)表于 03-03 13:54 ?361次閱讀

    嵌入式機器學(xué)習(xí)的應(yīng)用特性與軟件開發(fā)環(huán)境

    設(shè)備和智能傳感器)上,這些設(shè)備通常具有有限的計算能力、存儲空間和功耗。本文將您介紹嵌入式機器學(xué)習(xí)的應(yīng)用特性,以及常見的機器學(xué)習(xí)開發(fā)軟件與開發(fā)環(huán)境。 嵌入式機器學(xué)習(xí)的應(yīng)用特性與優(yōu)勢 由于嵌入式
    的頭像 發(fā)表于 01-25 17:05 ?663次閱讀
    <b class='flag-5'>嵌入式</b>機器學(xué)習(xí)的應(yīng)用特性與<b class='flag-5'>軟件</b>開發(fā)環(huán)境

    如何提高嵌入式代碼質(zhì)量?

    嵌入式代碼的質(zhì)量是至關(guān)重要的。本文將探討如何通過有效的開發(fā)方法和工具來提高嵌入式代碼的質(zhì)量,以確保系統(tǒng)的可靠性和可維護性。 理解嵌入式系統(tǒng)的特點和需求
    發(fā)表于 01-15 10:48

    嵌入式系統(tǒng)開發(fā)中的測試方法 嵌入式系統(tǒng)開發(fā)與AI結(jié)合應(yīng)用

    嵌入式系統(tǒng)開發(fā)中的測試方法 嵌入式系統(tǒng)開發(fā)是一個復(fù)雜的過程,涉及到硬件和軟件的緊密結(jié)合。測試是確保系統(tǒng)可靠性和性能的關(guān)鍵步驟。以下是一些常用
    的頭像 發(fā)表于 12-09 10:22 ?1362次閱讀

    嵌入式系統(tǒng)開發(fā)與硬件的關(guān)系 嵌入式系統(tǒng)開發(fā)常見問題解決

    嵌入式系統(tǒng)開發(fā)與硬件的關(guān)系 嵌入式系統(tǒng)是專為特定應(yīng)用設(shè)計的計算機系統(tǒng),它們通常嵌入在所控制的設(shè)備中。這些系統(tǒng)的關(guān)鍵特點是它們與硬件的緊密集成,這意味著軟件必須為特定的硬件平臺量身定制。
    的頭像 發(fā)表于 12-09 09:38 ?973次閱讀

    嵌入式學(xué)習(xí)建議

    對廣大渴望學(xué)習(xí)嵌入式系統(tǒng)的學(xué)子提出幾點基礎(chǔ)階段的學(xué)習(xí)建議: ①嵌入式系統(tǒng)軟件硬件密切相關(guān),一定要打好軟硬件基礎(chǔ)。其實,只要找到正確的方法,加上努力,任何理工科學(xué)生,甚至非理工科學(xué)生,都能學(xué)好
    發(fā)表于 10-22 11:41

    什么是嵌入式?一文讀懂嵌入式主板

    在現(xiàn)代科技浪潮中,嵌入式技術(shù)已成為支撐各種智能設(shè)備和系統(tǒng)運行的核心力量。那么,究竟什么是嵌入式?嵌入式系統(tǒng),顧名思義,是將計算機的硬件和軟件嵌入
    的頭像 發(fā)表于 10-16 10:14 ?2616次閱讀

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

    公司某個項目用到了這個DW:DW_fpv_div,但是scan跑完,這個模塊覆蓋率只有60%多,現(xiàn)在要我用TMAX軟件,通過功能去覆蓋,我看了下rpt報的faults點,嘗試去寫了幾個特殊值去做除法
    發(fā)表于 10-15 18:38

    嵌入式開發(fā)常用軟件有哪些?

    的擴展程序商店安裝擴展以拓展軟件功能。 2.Visual Studio 簡稱VS: 它是一個IDE,集成開發(fā)環(huán)境。驗證C程序或是進(jìn)行c#程序開發(fā),可以用它。一些與嵌入式相關(guān)的模擬器也是基于VS的。幫助
    發(fā)表于 09-09 15:22

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

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

    嵌入式軟件開發(fā)與AI整合

    嵌入式軟件開發(fā)與AI整合是當(dāng)前技術(shù)發(fā)展的重要趨勢之一。隨著人工智能技術(shù)的快速發(fā)展,嵌入式系統(tǒng)越來越多地集成了AI算法,以實現(xiàn)更復(fù)雜的智能功能。以下是關(guān)于嵌入式
    的頭像 發(fā)表于 07-31 09:25 ?1370次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>軟件</b>開發(fā)與AI整合