網(wǎng)站首頁 互聯(lián)網(wǎng) > 正文
2022年1月11整理發(fā)布:隨著計算機行業(yè)的發(fā)展,嵌入式系統(tǒng)在通訊、網(wǎng)絡(luò)、工控、醫(yī)療、電子等領(lǐng)域都發(fā)揮著越來越重要的作用。尤其是在一些安全關(guān)鍵領(lǐng)域,如航空航天等,軟件一旦出現(xiàn)故障,可能會產(chǎn)生災(zāi)難性的后果。這就要求在軟件投入使用前,必須對其進行嚴格的測試、確認和驗證。
測試覆蓋率是在嵌入式軟件測試中非常重要的一部分。它是一種測試技術(shù)指標,用來表明我們的測試用例是否真正完全覆蓋了程序執(zhí)行的各種可能以及運行這些測試用例時執(zhí)行了多少代碼塊。通過覆蓋率統(tǒng)計分析,得出軟件執(zhí)行的覆蓋情況,可以查看軟件中有哪些函數(shù)未執(zhí)行,函數(shù)中哪些分支未執(zhí)行。通過調(diào)整測試用例使盡可能多的函數(shù)和函數(shù)分支得到測試,同時可以分析代碼未執(zhí)行的原因,以便及時更正代碼,從而大大提高了軟件的穩(wěn)定性。
覆蓋率可以分為函數(shù)覆蓋率、語句覆蓋率、分支覆蓋率、MC/DC(Modified Condition/Decision Coverage,修正條件判定覆蓋率)等。每一種覆蓋率測試的力度和精確性都不一樣。比如語句覆蓋率達到100%,但是分支覆蓋率可能會只有50%,也就意味著分支覆蓋率能測出軟件問題的概率會更大。在眾多覆蓋率種類中,MC/DC是最高效的覆蓋率。它使用的測試用例最少,測試力度最大。所以在航空安全領(lǐng)域中,根據(jù)DO-178C(適航符合性方法)中描述:A級軟件必須獨立開展MC/DC測試。
▲DO-178C《機載系統(tǒng)合格審定過程中的軟件考慮》對軟件等級的描述
定義:
接下來我們看一下MC/DC的定義。在講MC/DC之前,我們首先要明確C(Condition)和D(Decision)的概念:
條件(Condition):除了一元運算符(NOT,“否”)之外,不含有任何布爾運算符(如&&、||)的布爾表達式。比如:a>0;b!=0等等,這些表達式不包含布爾運算符,但是他們屬于布爾表達式(結(jié)果為true或false)。
判定(Decision):由條件和布爾運算符組成的布爾表達式。如果一個條件在一個判定中出現(xiàn)不止一次,則每次出現(xiàn)都是一個不同的條件。我們將A,B視為條件,那么A&&B或A||B就是所謂的判定。
根據(jù)DO-178(適航符合性方法)中對MC/DC的描述:要求在一個程序中每一種輸入輸出至少出現(xiàn)一次,每一個判定中的每一個條件必須產(chǎn)生所有輸出結(jié)果至少一次,每一個判定必須產(chǎn)生所有可能的輸出結(jié)果至少一次,并且每一個判定中的每一個條件必須能夠獨立影響一個判定的結(jié)果。一個條件可以通過以下方式獨立地影響判定的結(jié)果:
(1)改變該條件,同時保持其他條件不變,
(2)改變該條件,同時保持其他影響結(jié)果的條件不變。
可能上述定義有點抽象,我們通過A||(B&&C)這個例子來明確概念:
▲A||(B&&C)判定所有的測試用例情況
每一種輸入輸出至少出現(xiàn)一次,也就意味A||(B&&C)這個判定必須測試用例執(zhí)行到。
每一個判定中的每一個條件必須產(chǎn)生所有輸出結(jié)果至少一次:A,B,C三個條件都必須產(chǎn)生true和false至少一次。如執(zhí)行了測試用例1和8(A=F,B=F,C=F與A=T,B=T,C=T),那么這個條件就滿足。
每一個判定必須產(chǎn)生所有可能的輸出結(jié)果至少一次:A||(B&&C)這個判定最終的結(jié)果至少有一次true,至少有一次false。如執(zhí)行了測試用例4和5(A=F,B=T,C=T與A=T,B=F,C=F),滿足上一條件,但是這個兩個測試用例的最終結(jié)果都是false,那么就不滿足這個條件。
每一個判定中的每一個條件必須能夠獨立影響一個判定的結(jié)果:該描述中強調(diào)了條件需要獨立影響,為了能找到某一個條件的獨立影響性,必須要找到兩個對應(yīng)的測試用例,才算符合獨立影響。如測試用例1和5(A=F,B=F,C=F與A=T,B=F,C=F),這兩個測試用例只改變了條件A,同時保持其他條件不變,但是最終的結(jié)果不同,這就是獨立影響的意思。
我們再深挖一下定義,MC/DC標準其實就是想要找到判定中每個條件的獨立影響性,其實也就意味著我們需要每個條件都找到一對符合獨立影響的測試用例對(Independent Pair)。以下是A||(B&&C)每個測試用例的獨立影響對的全部情況。
▲A||(B&&C)獨立影響對(Independent Pair)的全部情況
如上圖,測試用例1和5組成了條件A的獨立影響對;測試用例2和4組成了條件B的獨立影響對。如果測試用例在構(gòu)成獨立影響對時可以重復(fù)使用,如測試用例4,既能與測試用例2構(gòu)成條件B的獨立影響對,又能與測試用例3構(gòu)成條件C的獨立影響對。那么,在理論上,最少只需要n+1(n為條件數(shù)),最多需要2n個測試用例即可滿足MC/DC的標準。如測試用例2、3、4和7這四個測試用例就可以滿足MC/DC標準。
計算公式:
由于MC/DC是判定覆蓋率的一個標準,所以計算MC/DC就是計算滿足MC/DC標準的判定覆蓋率。
并且在未滿足MC/DC標準的判定(Decision)中,可以計算有多少條件的測試對是符合獨立影響的:
總結(jié):
目前為止,我們已經(jīng)了解了MC/DC的定義,MC/DC就是需要找出每個判定中每個條件的獨立影響對。所以我們在編寫測試用例時也需要多思考,怎么樣的測試用例是會滿足的MC/DC標準的。
由迪捷軟件自主研發(fā)的SkyEye全數(shù)字實時仿真軟件是基于可視化建模的硬件行為級仿真平臺,支持MC/DC覆蓋率統(tǒng)計功能。只需在SkyEye全數(shù)字實時仿真軟件中導(dǎo)入需要被驗證、分析的二進制程序,并在相應(yīng)的虛擬硬件平臺上運行,再使用MC/DC覆蓋率統(tǒng)計功能,即可得到MC/DC覆蓋率分析的結(jié)果。根據(jù)覆蓋率分析結(jié)果對二進制程序進行分析、校正,進而提高程序的可靠性和穩(wěn)定性。
版權(quán)說明: 本文由用戶上傳,如有侵權(quán)請聯(lián)系刪除!
猜你喜歡:
- 2022-10-04 七彩鐵長的快嗎(七彩鐵開花嗎 帶你深入了解它)
- 2022-10-04 做夢夢到黑豬是什么意思周公解夢(周公解夢夢見黑豬和針 夢見針和黑豬是什么意思)
- 2022-10-04 洋白蠟是速生白蠟嗎(白蠟和洋白蠟的區(qū)別 你區(qū)分出來嗎)
- 2022-10-04 硫酸鎂泡水的作用(用硫酸鎂泡手有什么.效果 硫酸鎂是什么)
- 2022-10-04 怎么在蘋果電腦上安裝steam(如何在蘋果電腦上安裝steam 只要四步即可安裝)
- 2022-10-04 麻是怎么做的(麻橢的做法 你會做嗎)
- 2022-10-04 驢肉丸子湯的家常做法竅門(驢肉丸子湯的做法 驢肉丸子湯怎么做)
- 2022-10-04 紙?zhí)禊Z的方法很簡單天鵝是怎么折疊的
最新文章:
- 2023-07-01 挑選生姜的方法(挑選優(yōu)質(zhì)生姜 挑選優(yōu)質(zhì)生姜方法有哪些)
- 2023-07-01 科技公司主要是做什么的?(科技公司是做什么的 關(guān)于科技公司是做什么的)
- 2023-07-01 早上激勵自己努力奮斗的語錄(激勵自己奮斗的句子)
- 2023-07-01 高考加油的祝福語四字成語(高考加油的祝福語)
- 2023-07-01 燃氣地上管道的檢漏方法有哪三種(撿地上的頭發(fā)有什么好方法)
- 2023-07-01 墨鏡如何辨別好壞(墨鏡好壞怎么區(qū)分 墨鏡好壞區(qū)分方法)
- 2023-07-01 清洗魚缸服務(wù)(新買的魚缸怎么清洗 新買的魚缸如何清洗)
- 2023-07-01 寶寶爬行墊(新買的爬行墊怎么清洗 新買的爬行墊清潔的方法)
- 2023-07-01 汽車上斑斑點點怎么去除(汽車表面斑點怎么清洗 汽車表面斑點如何清洗)
- 2023-07-01 掛杯的好壞是評價一款葡萄酒品質(zhì)優(yōu)劣的直接標準(怎么區(qū)分葡萄酒的好壞 區(qū)分葡萄酒的好壞方法)
- 2023-07-01 鹿場新鮮鹿茸怎么保存方法(新鮮的鹿茸怎樣長期保存 如何保存鹿茸才新鮮)
- 2023-07-01 衣物除菌液有必要使用嗎(衣物除菌液有必要用嗎)
- 2023-07-01 住房公積金是要交多少(住房公積金要交多少 住房公積金要交多少合適)
- 2023-07-01 公積金買多久才可以用來貸款買房(住房公積金怎么用來買房 住房公積金如何用來買房)
- 2023-07-01 辦理公積金凍結(jié)需要什么手續(xù)(辦公積金凍結(jié)需要的材料 辦公積金凍結(jié)需要的材料有哪些)
- 2023-07-01 如何使用公積金最劃算(住房公積金怎么用劃算 住房公積金如何用劃算)