色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

軟件代碼結構化覆蓋測試-MC/DC覆蓋

上海控安 ? 來源:鑒源實驗室 ? 作者:鑒源實驗室 ? 2023-12-15 15:22 ? 次閱讀

作者 | 李偉 上海控安安全測評部總監

來源 |鑒源實驗室

社群 | 添加微信號TICPShanghai”加入“上海控安51fusa安全社區”

前兩篇我們介紹了白盒測試中代碼結構覆蓋率測試的語句和分支覆蓋測試,本篇我們介紹MC/DC覆蓋測試。

01

關于定義

MC/DC的全稱是Modified Condition/Decision Coverage,修正條件判定覆蓋率。很多文章對于定義的解釋都比較專業,通常也會讓人感覺理解困難,本文我們用通俗易懂的說明給大家做介紹。從字面意思看這種覆蓋率是通過對條件覆蓋和判定覆蓋組合后進行了一定的修正達成的。我們都知道窮舉測試是不可取的,所以有等價類、邊界值等測試方法來選取典型情況做測試設計。MC/DC的情況也比較類似,隨著代碼判定條件的增多,判定內部每個條件的取值都會對判定結果產生作用,所有判定和所有條件的組合如果窮舉的話是不可取的,MC/DC就對組合的方式選擇進行了約束。

MC/DC涉及到了條件覆蓋和判定覆蓋,其中判定覆蓋(分支覆蓋)我們在上一篇中已經作了比較詳細的說明。本篇我們就先對條件覆蓋測試做簡單說明。

02

條件覆蓋

條件覆蓋測試要求測試設計時涉及邏輯判定的每個條件均要考慮到真假兩種情況。覆蓋時通常不考慮每個條件測試取值對整體判定路徑覆蓋的影響,也不考慮條件間的組合,只考慮每個條件要設計真假兩種情況。理論上在一次邏輯判定的路徑選擇由兩個及以上條件組合決定時,條件覆蓋的測試用例數要多于分支覆蓋測試。

2.1 條件覆蓋測試的舉例

我們繼續使用上篇中的一段簡單代碼來舉例說明:

wKgZomV7_fGAOG85AAA49-kSd0E902.png

這段代碼有一個邏輯判定,x < 10 && y > 10的結果是否為假,對應判定的兩個分支。這樣設計測試用例對應判定是基于分支覆蓋來進行的,可以用如下表進行條件取值來做到分支判定100%覆蓋率。

wKgaomV7_fmAf3QjAAAjLoZnn3Q848.png

基于條件覆蓋做測試設計時,我們測試用例應該要保證每個條件的真假都被覆蓋到,如下表所示。

wKgZomV7_gCAJ-oeAAAozkymk4w232.png

我們可以看到判定覆蓋時條件y并沒有取到假的情況,同樣滿足了判定覆蓋率100%,如果剛好此情景下存在故障,僅執行了100%的判定覆蓋是不能發現這個故障的。因此通過這個例子我們可以看到當參與路徑判定的條件足夠多時,條件覆蓋的測試充分程度是高于分支覆蓋的。

2.2 條件覆蓋的不足

從定義要求中我們可以看到,條件覆蓋只關注了每個條件的真假要覆蓋到,對于條件之間的組合或組合對最終判定的影響是不關注的,如果使用僅符合于條件覆蓋需要的測試設計,在某些情況下即使每個條件都做到了真假的覆蓋,由于條件之間的組合,也可能導致某些路徑不會被覆蓋到。

我們將前例中的判定增加一個條件,如下表中所示。

例:if (x < 10 && y > 10 && z == 0)

wKgaomV7_guAPIXfAAAuVqANKYg628.png

如上表所示我們根據條件覆蓋的要求,測試設計時考慮到了每個條件均做了真假兩種情況的取值,但是整體的路徑判定只覆蓋到了為真的情況,分支判定為假的路徑例中的測試設計并未覆蓋到。

那我們為什么不將每種組合都做設計呢,設想一下如果參與路徑判定的條件有5個時,測試用例的設計將會多達10余條。程序中的判定越多,參與判定的條件越多,這樣設計的測試用例會迅速擴大至無法實際操作。MC/DC覆蓋能夠在兩者之間進行一個很好的平衡,既考慮分支路徑的判斷覆蓋又滿足參與判定的條件取值要求。

03

MC/DC覆蓋

MC/DC的覆蓋要求源于DO 178適航符合性方法。該標準由美國航空無線電技術委員會(RTCA)編制發布,并作為民用飛機機載軟件開發和適航認證的標準指南文件。由于民航適航認證過程的強制性,MC/DC覆蓋率測試也成為民用航空電子軟件適航測試過程的必須執行項。

DO 178標準首個版本于1982年發布,最新版本為2011年12月發布的第四版DO 178C。標準對MC/DC覆蓋的定義原文描述如下:

Modified Condition/Decision Coverage: Every point of entry and exit in the program has been invoked at least once, every condition in a decision in the program has taken all possible outcomes at least once, every decision in the program has taken all possible outcomes at least once, and each condition in a decision has been shown to independently affect that decision’s outcome. A condition is shown to independently affect a decision’s outcome by: (1) varying just that condition while holding fixed all other possible conditions, or (2) varying just that condition while holding fixed all other possible conditions that could affect the outcome.

定義要求:程序里的每一個輸入和輸出點要至少被調用一次,程序里一個判定中每個條件要至少一次考慮達到所有可能性的結果,程序里每個判定至少一次考慮達到了所有可能性結果,并且一次判定中的每個條件已體現獨立地影響該判定的結果。一個條件可以通過以下方式獨立地影響決策的結果:(1)只改變該條件,同時保持所有其他可能的條件不變;或(2)只改變該條件,同時保持所有其他可能影響結果的條件不變。

原文的專業定義大家可能覺得難以理解,我們繼續使用之前的例子來說明MC/DC的覆蓋設計要求。

以SIL A級要求為準,示例代碼的條件判斷組合如下:if (x < 10 && y > 10 && z == 0)

wKgZomV7_hWAP0EqAAA2FA1t0Gc486.png

示例中有一次判定,和3個對結果有影響的條件。設計的測試用例中,查看完整的示例代碼(示例代碼沒有補充輸入變量z)所有輸入輸出都做了考慮,每個條件的可能情況均做了取值,判定的兩種結果都做到了測試覆蓋,某條件取值變化時都保持了所有其他條件的不變。

04

MC/DC覆蓋測試的設計取值模型

通常根據安全要求的等級不同,覆蓋率設計要求也不同,下面我們簡單對不同情況下判定和條件測試設計考慮情況進行舉例。

4.1 MC/DC 測試設計 (SIL A)

wKgaomV7_h2AOscFAAAT2aWXJyw056.pngwKgZomV7_jqASGniAAAS6xbosLo357.pngwKgZomV7_kSAFmhzAAAaWkzOWoM276.pngwKgZomV7_kyAXo1yAAAZruLcZJs535.pngwKgZomV7_lmAKDbjAAAaUtjJklw784.pngwKgZomV7_lmAKDbjAAAaUtjJklw784.pngwKgaomV7_m6AO798AAAiwbukTSQ787.pngwKgZomV7_niASs4DAAAinoiJTvA085.png

其他SIL等級下的DC和SC測試設計時的情況組合我們就不列舉了,前篇文檔我們已做了說明,具體使用時大家也可以查閱相關的專業文檔和測試設計要求文檔。

05

測試小結

在執行MC/DC覆蓋測試時我們有以下建議供大家參考。

1.MC/DC覆蓋測試的條件取值組合有比較詳細的要求,不能簡單認為已完成分支的覆蓋率100%和某些條件的設計取值,就已經完成了MC/DC覆蓋率的設計要求。需要根據上一章節中的標準設計取值模型或實際項目中要求的標準,對所有條件的可能情況和分支覆蓋情況做整體考慮。

2.MC/DC覆蓋測試比其他結構的覆蓋測試復雜,測試設計時可以使用輔助工具來演算每個條件對判定的影響情況,從而更全面的完成用例編寫。

3.提高代碼的編寫和閱讀能力對測試會有很大的幫助,同樣此類測試執行多了對代碼編寫質量的提升也會有很大幫助。

參考文獻:

[1] RTCA DO-178C, “Software Considerations in Airborne Systems and Equipment Certification,” December 2011

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 軟件
    +關注

    關注

    69

    文章

    4973

    瀏覽量

    87730
  • 軟件代碼
    +關注

    關注

    0

    文章

    9

    瀏覽量

    6354
  • 結構化
    +關注

    關注

    0

    文章

    27

    瀏覽量

    10326
  • 覆蓋測試
    +關注

    關注

    0

    文章

    4

    瀏覽量

    1132
收藏 人收藏

    評論

    相關推薦

    代碼覆蓋測試工具BullseyeCoverage在嵌入式軟件系統中的應用研究

    代碼覆蓋分析是一種白盒測試方法,因為覆蓋分析需要訪問測試代碼本身,且經常需要重新編譯程序,以程序
    的頭像 發表于 09-21 17:36 ?3741次閱讀
    <b class='flag-5'>代碼</b><b class='flag-5'>覆蓋</b>率<b class='flag-5'>測試</b>工具BullseyeCoverage在嵌入式<b class='flag-5'>軟件</b>系統中的應用研究

    怎么設計基于路徑覆蓋的嵌入式軟件動態測試

    測試結果的有效性;而僅在目標機上進行測試,由于軟件運行的不可視性,又使得測試者難以知曉程序當前運行狀態,以及代碼
    發表于 08-26 07:45

    基于路徑覆蓋的嵌入式軟件動態該怎么測試

    測試結果的有效性;而僅在目標機上進行測試,由于軟件運行的不可視性,又使得測試者難以知曉程序當前運行狀態,以及代碼
    發表于 08-28 07:38

    如何對嵌入式軟件進行覆蓋測試

    嵌入式軟件覆蓋測試原理是什么?嵌入式實時操作系統的覆蓋測試工具是什么?Logiscope在嵌入式操作系統DeltaCORE
    發表于 05-13 07:30

    結構化P2P覆蓋網絡通信協議研究

    針對各種基于流言機制的通信協議在構造非結構化P2P覆蓋網絡中,其適用范圍缺乏廣泛的實證問題,提出了一個通用的協議框架--基于流言機制的節點采樣服務,以執行高效和可靠的節
    發表于 03-22 00:36 ?26次下載

    嵌入式代碼覆蓋率統計方法和經驗

    代碼覆蓋率是衡量軟件測試完成情況的指標,通常基于測試過程中已檢查的程序源代碼比例計算得出。
    的頭像 發表于 01-06 15:06 ?3179次閱讀
    嵌入式<b class='flag-5'>代碼</b><b class='flag-5'>覆蓋</b>率統計方法和經驗

    統計嵌入式代碼覆蓋率的方法和經驗

    代碼覆蓋率是衡量軟件測試完成情況的指標,通常基于測試過程中已檢查的程序源代碼比例計算得出。
    的頭像 發表于 03-29 11:58 ?1963次閱讀
    統計嵌入式<b class='flag-5'>代碼</b><b class='flag-5'>覆蓋</b>率的方法和經驗

    如何使用覆蓋率指標進行更有效的嵌入式軟件測試

      聲明、決策或 MC/DC 覆蓋率等指標并不能保證軟件沒有缺陷。如前所述,真正詳盡的測試可能是不可能的,或者至少是不可行的。然而,
    的頭像 發表于 06-29 10:20 ?1565次閱讀

    選擇代碼覆蓋工具的 10 個標準

    為了開發安全可靠的軟件測試是質量保證不可或缺的一部分。如果沒有充分的記錄測試,就不可能確定軟件是否安全且功能是否正確。在這種情況下,代碼
    的頭像 發表于 07-20 18:06 ?1382次閱讀
    選擇<b class='flag-5'>代碼</b><b class='flag-5'>覆蓋</b>工具的 10 個標準

    代碼覆蓋率工具的重要性

    測試覆蓋率是軟件質量的重要指標,也是軟件維護的重要組成部分。它通過提供不同承保項目的數據來幫助評估測試的有效性。這種洞察力允許通過為未經
    的頭像 發表于 12-08 15:13 ?1481次閱讀
    <b class='flag-5'>代碼</b><b class='flag-5'>覆蓋</b>率工具的重要性

    代碼覆蓋檢測

    1 代碼覆蓋率概述 覆蓋率(code coverage rate)是反映測試用例對被測軟件覆蓋
    的頭像 發表于 05-12 22:26 ?3005次閱讀
    <b class='flag-5'>代碼</b><b class='flag-5'>覆蓋</b>檢測

    MC/DC:與100%覆蓋率的斗爭

    軟件測試領域,MC/DC或許已經是一個耳熟能詳的詞匯了,但是我們還是要不斷強調如何正確使用MC/DC
    的頭像 發表于 11-07 10:11 ?2430次閱讀
    <b class='flag-5'>MC</b>/<b class='flag-5'>DC</b>:與100%<b class='flag-5'>覆蓋</b>率的斗爭

    軟件代碼結構化覆蓋測試-語句覆蓋

    本篇將深入到代碼層面,講解單元測試中的一項重要工作-軟件代碼測試
    的頭像 發表于 08-25 11:50 ?658次閱讀
    <b class='flag-5'>軟件</b><b class='flag-5'>代碼</b><b class='flag-5'>結構化</b><b class='flag-5'>覆蓋</b><b class='flag-5'>測試</b>-語句<b class='flag-5'>覆蓋</b>

    軟件代碼結構化覆蓋測試-分支覆蓋

    本篇我們介紹分支覆蓋,從測試技術對代碼測試程度上來說,在復雜代碼中,分支覆蓋比語句
    的頭像 發表于 09-01 11:34 ?687次閱讀
    <b class='flag-5'>軟件</b><b class='flag-5'>代碼</b><b class='flag-5'>結構化</b><b class='flag-5'>覆蓋</b><b class='flag-5'>測試</b>-分支<b class='flag-5'>覆蓋</b>

    代碼覆蓋率記錄

    為確保具體的產品(例如,醫療或航空電子市場)質量合格, 通常需要提供語句覆蓋與判定覆蓋認證證明。對于各種嵌 入式系統,規范要求高度優化的代碼需要實時測試。禁止
    發表于 11-03 11:02 ?0次下載
    <b class='flag-5'>代碼</b><b class='flag-5'>覆蓋</b>率記錄
    主站蜘蛛池模板: 国产骚妇BB网| 成人无码国产AV免费看| 中文亚洲大香伊蕉不卡一区| 岛国在线无码免费观| 欧美白妞大战非洲大炮| 伊人久久精品99热超碰| 好男人好资源在线观看| 亚洲zooz人禽交xxxx| 国产在线观看香蕉视频| 翁公吮她的花蒂和奶水| 国产成人精品自线拍| 四川少妇大战4黑人| 大稥焦伊人一本dao| 色多多污版app下载网站| 国产69TV精品久久久久99| 少妇伦子伦精品无码| 国产毛片女人高潮叫声| 亚洲精品久久无码AV片银杏| 好爽好深太大了再快一点| 亚洲一品AV片观看五月色婷婷| 精品高清国产a毛片| 一本一本之道高清在线观看| 久久精品视频在线看99| 在线亚洲精品国产一区麻豆| 美国69xxxx59| x69老师x日本| 色噜噜2017最新综合| 国产色婷婷精品人妻蜜桃成熟时| 亚洲a免费| 久久午夜伦理| G0GO人体大尺香蕉| 天堂岛www天堂资源在线| 国产亚洲精品久久久久久禁果TV| 亚洲精品无夜久久久久久久久 | 入禽太深免费视频10| 国产精品A久久777777| 亚洲欧美国产旡码专区| 美女脱光app| 国产精品久久精品视| 原神美女被超污app| 青青草A在在观免费线观看|