隨著汽車行業(yè)的發(fā)展,軟件定義汽車已成為汽車產(chǎn)業(yè)達成的共識發(fā)展趨勢,軟件在汽車產(chǎn)品中也承擔著越來越重要的角色,車身域各功能的實現(xiàn),少則幾千行代碼,動輒百萬行代碼。隨著汽車產(chǎn)業(yè)功能多樣性以及復(fù)雜度的增加,傳統(tǒng)的基于C代碼開發(fā)的模式已不能滿足某些特殊功能需求的實現(xiàn),需要向更高級別的語言進化,實現(xiàn)復(fù)雜功能的開發(fā)。
1
C++語言的廣泛應(yīng)用
眾所周知,C代碼是面向過程的語言,具有執(zhí)行速度快以及效率高的特點,在嵌入式開發(fā)領(lǐng)域占據(jù)很大的比重,是嵌入式系統(tǒng)、尤其面向底層的主要編程語言。但是隨著汽車行業(yè)智能化以及網(wǎng)聯(lián)化的發(fā)展,更多的是聚焦在復(fù)雜的應(yīng)用以及算法開發(fā)上,對性能的要求就會非常高,比如智能駕駛,智能網(wǎng)聯(lián)等這類項目,相比C語言,具有面向?qū)ο髾C制的C++更適合用于這類項目的開發(fā)。
此外,為適配SOA架構(gòu)和并行處理大數(shù)據(jù)等更復(fù)雜的需求,AP(Adaptive AUTOSAR)平臺正廣泛地應(yīng)用于諸如車載域控制器、自動駕駛和車聯(lián)網(wǎng)等領(lǐng)域;而AP也是基于C++語言開發(fā)的,這也正是因為C++所具備的特點更能滿足AP平臺對高安全性以及高計算能力的要求。
? C++兼容C語言的同時又引入了面向?qū)ο蟮臋C制。
? 封裝,繼承以及多態(tài)的特性使得C++中的類與對象呈現(xiàn)多樣性。
? C++中引入了一些特殊用法,比如const常量、智能指針、cast轉(zhuǎn)換、引用等,使得代碼更加安全。
? C++引入了模板概念,實現(xiàn)了將類型參數(shù)化的泛型編程,提升了代碼復(fù)用性;同時,基于模板類或模板函數(shù)的STL(標準模板庫)使得開發(fā)更便捷。
? C++中還提供了很多開源庫,比如神經(jīng)網(wǎng)絡(luò)、加密、數(shù)學開源庫等,為復(fù)雜的應(yīng)用開發(fā)提供了更多便利。
POLELINK
2
如何高效地
實施C++代碼測試
隨著汽車軟件的復(fù)雜度以及代碼量級的增加,主機廠和零部件供應(yīng)商對代碼質(zhì)量的要求也越來越高,并尋求各種方式來提升代碼質(zhì)量,以盡早發(fā)現(xiàn)代碼問題實現(xiàn)對項目的把控和交付。同時,ISO 26262以及ASPICE也對軟件測試提出了明確的要求,即需要實施單元/集成測試。
在對軟件進行單元測試和集成測試時,除了要滿足相關(guān)需求測試的要求,還要考慮代碼整個結(jié)構(gòu)的覆蓋度,測試過程因而比較繁瑣。在面對復(fù)雜的C++代碼項目時,如何才能高效地完成C++代碼的單元測試和集成測試,最大化地實現(xiàn)自動化測試?北匯信息采用的自動化測試工具是Vector旗下的代碼動態(tài)測試工具----VectorCAST/C++。
VectorCAST/C++
VectorCAST/C++工具是德國Vector公司的一款白盒測試工具,主要用于實現(xiàn)代碼的單元測試和集成測試。它最大的特點,同時也是相比于其它同類工具最大的優(yōu)勢就在于,經(jīng)受過多個大型量產(chǎn)項目實踐的對C++高階特性、Linux系統(tǒng)和CI平臺的強力支持。
支持C++11/14/17代碼解析
VectorCAST/C++工具內(nèi)置了權(quán)威的商業(yè)化前端解析工具EDG對代碼進行解析,無論是基于C++11開發(fā)的,還是C++14又或者是C++17開發(fā)的,工具都可以完美支持C++11/14/17的特性。同時,針對C++復(fù)雜數(shù)據(jù)類型的使用,比如STL、模板、智能指針等,可實現(xiàn)圖形化界面操作,無需過多添加測試代碼,有效地提高了C++代碼的測試效率。

1
類的實例化
類在使用之前都需要進行類的實例化----對象創(chuàng)建,通過對象對類的成員屬性以及成員方法進行訪問,所以在編寫測試用例時,需要完成實例化對象的創(chuàng)建。工具可以解析類的所有構(gòu)造函數(shù),并在測試用例編輯區(qū)開辟對象實例化區(qū)域,測試人員可根據(jù)實際測試需求選擇匹配的構(gòu)造函數(shù)來實例化對象。

2
模板類/模板函數(shù)測試
在基于C++開發(fā)的代碼中,模板的應(yīng)用也非常廣泛,模板的出現(xiàn),實現(xiàn)了類型的參數(shù)化,真正做到代碼的重用性。在針對函數(shù)模板和類模板進行測試時,VectorCAST/C++支持對模板函數(shù)自動插樁,實現(xiàn)圖形化界面操作,無需編寫測試代碼。

此外,在對模板類或者模板函數(shù)進行測試之前需要先進行實例化,然后再進行模板的測試。

3
容器類型數(shù)據(jù)測試
C++ STL標準模板庫中的容器是用來存放各種數(shù)據(jù)結(jié)構(gòu)對象的集合。關(guān)于容器類型的數(shù)據(jù),在VectorCAST/C++中,工具支持對C++標準模板庫的測試,可以對標準容器(string/vector/list/set/map等)、迭代器等進行解析,可直接在界面中進行賦值操作。

4
智能指針測試
智能指針的使用解決了C++的內(nèi)存回收問題。VectorCAST/C++支持解析智能指針,比如shared_ptr,unique_ptr等,可直接通過工具界面為參數(shù)賦值。

5
支持對第三方庫解析
在涉及到第三方庫的代碼測試中,VectorCAST/C++工具支持解析眾多第三方庫,并可針對相關(guān)庫函數(shù)進行自動插樁,實現(xiàn)圖像化界面操作。

集成實際交叉編譯鏈
VectorCAST/C++可以在Windows和Linux平臺中穩(wěn)定運行,且支持眾多主流的交叉編譯鏈,比如Green Hills,Hightec,IAR,Tasking,Keil等。之所以支持眾多主流編譯鏈,是因為VectorCAST/C++是基于實際編譯鏈進行測試的。

自動生成測試用例
VectorCAST/C++滿足ISO26262和ASPICE中不同安全等級項目對覆蓋度指標的要求,包括語句、分支、MC/DC等。同時支持基于不同覆蓋度指標要求自動生成測試用例并自動填充輸入值,可以有效的提高V2X項目的測試效率。

綜上所述,在汽車電子未來發(fā)展中,大量復(fù)雜C++代碼會得到廣泛使用。借助工具對C++代碼的完美解析,都可以在工具中找到對應(yīng)的解決方案,實現(xiàn)圖形化界面的操作,同時借助工具自身的測試優(yōu)勢,可以有效地提高測試效率,實現(xiàn)C++代碼軟件的自動化測試。
3
結(jié)束語
本文主要介紹了VectorCAST/C++工具在基于C++開發(fā)的汽車電子軟件項目中的應(yīng)用,當前工具也被廣泛用于智能網(wǎng)聯(lián)、智能駕駛的量產(chǎn)項目中。VectorCAST/C++工具不僅適用于C++測試,也適用于C測試,且通過了南德認證,是一款可用于功能安全認證的高效的代碼動態(tài)自動化測試工具,已廣泛用于眾多國內(nèi)知名主機廠和零部件廠商。北匯信息作為Vector在中國的合作伙伴,致力于幫助中國客戶提升嵌入式控制系統(tǒng)的開發(fā)效率。如果你還在尋找合適的C/C++代碼測試工具,不妨來試一試VectorCAST/C++工具,定會讓你有心動的感覺。此外,在過去的C++測試項目中,我們也積累了一些測試經(jīng)驗,期待與大家的交流與探討。
注:部分圖片來自于Vector。
-
汽車電子
+關(guān)注
關(guān)注
3045文章
8975瀏覽量
172897
發(fā)布評論請先 登錄
還在手寫C++測試用例? Parasoft白盒級AI正在接管代碼安全
keil實現(xiàn)c與c++混合編程
C語言與C++的區(qū)別及聯(lián)系
C語言單元測試在嵌入式軟件開發(fā)中的作用及專業(yè)工具的應(yīng)用
C與C++之間的聯(lián)系
C語言和C++之間的區(qū)別是什么
C/C++條件編譯
C++程序異常的處理機制
嵌入式C/C++回歸測試四大最佳實踐(附自動化測試工具TESSY使用教程)
C/C++代碼靜態(tài)測試工具Perforce QAC 2025.3的新特性
Perforce QAC產(chǎn)品簡介:面向C/C++的靜態(tài)代碼分析工具(已通過SO 26262認證)
在OpenVINO? C++代碼中啟用 AddressSanitizer 時的內(nèi)存泄漏怎么解決?
主流的 MCU 開發(fā)語言為什么是 C 而不是 C++?
VectorCAST在汽車電子C++代碼測試的應(yīng)用
評論