• 招生咨詢熱線:4008-569-579 
  • 手機(jī)版
    用手機(jī)掃描二維碼直達(dá)商品手機(jī)版
招生咨詢熱線
4008-569-579
機(jī)構(gòu)主頁(yè) > 培訓(xùn)資料 > 嵌入式開發(fā):測(cè)量嵌入式軟件的代碼覆蓋率
機(jī)構(gòu)主頁(yè) > 培訓(xùn)資料>嵌入式開發(fā):測(cè)量嵌入式軟件的代碼覆蓋率

嵌入式開發(fā):測(cè)量嵌入式軟件的代碼覆蓋率

來(lái)源:廣州達(dá)內(nèi)教育        時(shí)間:2023-05-30        熱度:41℃        返回列表

很長(zhǎng)一段時(shí)間以來(lái),嵌入式軟件一直用于安全性非常重要的關(guān)鍵應(yīng)用。在嵌入式開發(fā)中,由于嵌入式設(shè)備通常是與物聯(lián)網(wǎng)(IoT)上的其他設(shè)備相連接的客戶端,因此還需要考慮安全性問(wèn)題。這意味著,無(wú)論是從安全角度還是從功能安全角度來(lái)看,嵌入式設(shè)備的質(zhì)量都極其重要。

 

對(duì)于安全可靠的嵌入式設(shè)備,測(cè)試是質(zhì)量保證不可或缺的一部分。安全關(guān)鍵軟件開發(fā)的標(biāo)準(zhǔn)為測(cè)試方法和測(cè)試覆蓋范圍設(shè)定了精確的要求,這不是沒有原因的。通常,應(yīng)用程序越重要,對(duì)代碼覆蓋率的要求就越高。

 

最重要的代碼覆蓋率是

報(bào)表覆蓋范圍確定測(cè)試執(zhí)行了哪些指令??梢詸z測(cè)死代碼以及還沒有為其創(chuàng)建合適測(cè)試的指令。

分支覆蓋記錄是否所有程序分支都已經(jīng)過(guò)測(cè)試。這是對(duì)測(cè)試的最低要求。分支覆蓋可以通過(guò)合理的努力來(lái)實(shí)現(xiàn)。

 

MC/DC(修改的條件/決策范圍)是標(biāo)準(zhǔn)要求的最高級(jí)別,相當(dāng)復(fù)雜。為了最小化測(cè)試工作,使用了復(fù)合條件的所有原子條件。在嵌入式開發(fā)中,對(duì)于每一個(gè)原子條件,測(cè)試用例對(duì)被測(cè)試,導(dǎo)致復(fù)合條件的整體結(jié)果的改變,但是只有考慮中的原子條件的真值改變。這里,其他原子條件的真值必須保持不變。


由于代碼檢測(cè),代碼大小增加了

為了測(cè)量軟件的哪些部分已經(jīng)被測(cè)試,代碼覆蓋分析器被使用。大多數(shù)覆蓋率分析器都是根據(jù)相同的原理工作的:它們?cè)趯⒋a傳遞給編譯器之前對(duì)代碼進(jìn)行檢測(cè)。這意味著它們向代碼添加計(jì)數(shù)器,這些計(jì)數(shù)器計(jì)算相關(guān)的代碼部分是否已經(jīng)被執(zhí)行。這些計(jì)數(shù)器通常存儲(chǔ)為全局?jǐn)?shù)組。這種檢測(cè)的副作用是代碼變得更加龐大。這給RAMROM都增加了額外的負(fù)載。

 

這個(gè)過(guò)程如圖1所示。代碼覆蓋率分析器Testwell CTC++向源代碼添加計(jì)數(shù)器(“插裝”)。關(guān)于計(jì)數(shù)器的信息存儲(chǔ)在名為符號(hào)數(shù)據(jù)的文件中。在測(cè)試期間(圖的右側(cè)),執(zhí)行的次數(shù)被計(jì)數(shù)并存儲(chǔ)在數(shù)據(jù)文件中。在過(guò)程的最后,Testwell CTC++報(bào)告生成器將來(lái)自符號(hào)數(shù)據(jù)數(shù)據(jù)文件的信息結(jié)合起來(lái),生成一個(gè)覆蓋報(bào)告。在嵌入式開發(fā)中,覆蓋率分析的副作用是更高的內(nèi)存消耗(通過(guò)比較使用和不使用工具時(shí)所需的內(nèi)存顯示在底部)。


即使用C編寫的While條件很小,也能以這種方式顯著增長(zhǎng)。

初始結(jié)構(gòu)

通過(guò)使用代碼覆蓋率分析器Testwell CTC++,變成了以下代碼:


對(duì)于服務(wù)器或PC應(yīng)用程序,這種影響可以忽略。另一方面,對(duì)于嵌入式設(shè)備,儀器開銷可能會(huì)帶來(lái)挑戰(zhàn),因?yàn)槌鲇诔杀驹?,硬件資源通常計(jì)算得非常嚴(yán)格。在這里,必須小心使用具有相對(duì)較低檢測(cè)開銷的代碼覆蓋率分析器,否則計(jì)數(shù)器將很快超過(guò)可用內(nèi)存的限制。當(dāng)需要非??量痰臏y(cè)試覆蓋級(jí)別(如MC/DC)時(shí),尤其如此。為嵌入式系統(tǒng)優(yōu)化的專用分析儀,如Verifysoft TechnologyTestwell CTC++,是正確的選擇。

 

部分儀器

如果代碼覆蓋工具的插裝開銷太高,那么可以在RAM中使用部分插裝來(lái)繞過(guò)這個(gè)障礙。使用部分插裝,只有被測(cè)程序的一小部分被插裝和測(cè)試。對(duì)所有程序部分一個(gè)接一個(gè)地重復(fù)測(cè)試,并將結(jié)果數(shù)據(jù)組合在一起,形成一個(gè)整體圖。這允許確定整個(gè)程序的測(cè)試覆蓋率。

 

測(cè)量小目標(biāo)代碼覆蓋率的另一個(gè)可能的解決方案是限制計(jì)數(shù)器的大小。通常,代碼覆蓋率工具使用32位計(jì)數(shù)器。這些計(jì)數(shù)器可以減少到168位。但是,這里應(yīng)該小心,因?yàn)樵谀承┣闆r下,計(jì)數(shù)器可能會(huì)溢出。因此,必須非常小心地解釋所獲得的數(shù)據(jù)。在極端情況下,計(jì)數(shù)器也可以降低到一位。在嵌入式開發(fā)中,這種位覆蓋(Testwell CTC++提供)可能是有用的,例如,如果它與程序段運(yùn)行的頻率無(wú)關(guān)。

 

不幸的是,ROM中所需的額外空間幾乎是有限的。需要一個(gè)小的庫(kù)來(lái)捕獲代碼覆蓋率,它負(fù)責(zé)將計(jì)數(shù)器讀數(shù)傳輸?shù)街鳈C(jī)。

 

不要忘記:除了內(nèi)存之外,檢測(cè)還會(huì)給目標(biāo)中的處理器帶來(lái)負(fù)載。因此,可能會(huì)出現(xiàn)不再遵守規(guī)定時(shí)間的情況。特別是如果CPU已經(jīng)接近極限工作,可能會(huì)出現(xiàn)錯(cuò)誤的進(jìn)程??偩€通信尤其容易受此影響。在這里,測(cè)試人員應(yīng)該仔細(xì)監(jiān)控過(guò)程,并仔細(xì)檢查結(jié)果。然而,強(qiáng)大的代碼覆蓋工具可以保持檢測(cè)內(nèi)存需求和運(yùn)行時(shí)行為變化相對(duì)較低。

 

結(jié)論

安全性在物聯(lián)網(wǎng)計(jì)劃的長(zhǎng)期成功中發(fā)揮著重要作用。除了工業(yè)應(yīng)用,私營(yíng)部門的物聯(lián)網(wǎng)項(xiàng)目也必須以用戶和制造商風(fēng)險(xiǎn)可控的方式進(jìn)行開發(fā)和測(cè)試。雖然MC/DC保險(xiǎn)對(duì)汽車和飛機(jī)中的安全關(guān)鍵應(yīng)用是強(qiáng)制性的,但至少分支機(jī)構(gòu)保險(xiǎn)在所有其他領(lǐng)域應(yīng)該是標(biāo)準(zhǔn)的。目前,只有少數(shù)標(biāo)準(zhǔn)要求非安全關(guān)鍵軟件的測(cè)試覆蓋范圍證明,但標(biāo)準(zhǔn)化機(jī)構(gòu)和行業(yè)協(xié)會(huì)增加安全關(guān)鍵應(yīng)用之外的要求只是時(shí)間和市場(chǎng)滲透的問(wèn)題。在嵌入式開發(fā)中,更好的測(cè)試也符合制造商自身的利益,因?yàn)橛腥毕莸漠a(chǎn)品會(huì)導(dǎo)致高昂的后續(xù)成本,并會(huì)嚴(yán)重?fù)p害公司的聲譽(yù)。


電話咨詢

電話咨詢

咨詢電話:
4008-569-579
回到頂部

回到頂部