国产精品久久久久久久久久东京,亚洲视频免费播放,少妇人妻精品一区二区三区视频,日韩一级品

好房網(wǎng)

網(wǎng)站首頁 互聯(lián)網(wǎng) > 正文

測(cè)試覆蓋率是在嵌入式軟件測(cè)試中非常重要的一部分

2022-01-11 09:33:32 互聯(lián)網(wǎng) 來源:搜狐網(wǎng)
導(dǎo)讀 2022年1月11整理發(fā)布:隨著計(jì)算機(jī)行業(yè)的發(fā)展,嵌入式系統(tǒng)在通訊、網(wǎng)絡(luò)、工控、醫(yī)療、電子等領(lǐng)域都發(fā)揮著越來越重要的作用。尤其是在一些安

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)系刪除!


標(biāo)簽:

最新文章: