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