隨著汽車行業(yè)的發(fā)展,軟件定義汽車已成為汽車產(chǎn)業(yè)達(dá)成的共識(shí)發(fā)展趨勢(shì),軟件在汽車產(chǎn)品中也承擔(dān)著越來(lái)越重要的角色,車身域各功能的實(shí)現(xiàn),少則幾千行代碼,動(dòng)輒百萬(wàn)行代碼。隨著汽車產(chǎn)業(yè)功能多樣性以及復(fù)雜度的增加,傳統(tǒng)的基于C代碼開發(fā)的模式已不能滿足某些特殊功能需求的實(shí)現(xiàn),需要向更高級(jí)別的語(yǔ)言進(jìn)化,實(shí)現(xiàn)復(fù)雜功能的開發(fā)。
1
C++語(yǔ)言的廣泛應(yīng)用
眾所周知,C代碼是面向過(guò)程的語(yǔ)言,具有執(zhí)行速度快以及效率高的特點(diǎn),在嵌入式開發(fā)領(lǐng)域占據(jù)很大的比重,是嵌入式系統(tǒng)、尤其面向底層的主要編程語(yǔ)言。但是隨著汽車行業(yè)智能化以及網(wǎng)聯(lián)化的發(fā)展,更多的是聚焦在復(fù)雜的應(yīng)用以及算法開發(fā)上,對(duì)性能的要求就會(huì)非常高,比如智能駕駛,智能網(wǎng)聯(lián)等這類項(xiàng)目,相比C語(yǔ)言,具有面向?qū)ο髾C(jī)制的C++更適合用于這類項(xiàng)目的開發(fā)。
此外,為適配SOA架構(gòu)和并行處理大數(shù)據(jù)等更復(fù)雜的需求,AP(Adaptive AUTOSAR)平臺(tái)正廣泛地應(yīng)用于諸如車載域控制器、自動(dòng)駕駛和車聯(lián)網(wǎng)等領(lǐng)域;而AP也是基于C++語(yǔ)言開發(fā)的,這也正是因?yàn)镃++所具備的特點(diǎn)更能滿足AP平臺(tái)對(duì)高安全性以及高計(jì)算能力的要求。
? C++兼容C語(yǔ)言的同時(shí)又引入了面向?qū)ο蟮臋C(jī)制。
? 封裝,繼承以及多態(tài)的特性使得C++中的類與對(duì)象呈現(xiàn)多樣性。
? C++中引入了一些特殊用法,比如const常量、智能指針、cast轉(zhuǎn)換、引用等,使得代碼更加安全。
? C++引入了模板概念,實(shí)現(xiàn)了將類型參數(shù)化的泛型編程,提升了代碼復(fù)用性;同時(shí),基于模板類或模板函數(shù)的STL(標(biāo)準(zhǔn)模板庫(kù))使得開發(fā)更便捷。
? C++中還提供了很多開源庫(kù),比如神經(jīng)網(wǎng)絡(luò)、加密、數(shù)學(xué)開源庫(kù)等,為復(fù)雜的應(yīng)用開發(fā)提供了更多便利。
POLELINK
2
如何高效地
實(shí)施C++代碼測(cè)試
隨著汽車軟件的復(fù)雜度以及代碼量級(jí)的增加,主機(jī)廠和零部件供應(yīng)商對(duì)代碼質(zhì)量的要求也越來(lái)越高,并尋求各種方式來(lái)提升代碼質(zhì)量,以盡早發(fā)現(xiàn)代碼問(wèn)題實(shí)現(xiàn)對(duì)項(xiàng)目的把控和交付。同時(shí),ISO 26262以及ASPICE也對(duì)軟件測(cè)試提出了明確的要求,即需要實(shí)施單元/集成測(cè)試。
在對(duì)軟件進(jìn)行單元測(cè)試和集成測(cè)試時(shí),除了要滿足相關(guān)需求測(cè)試的要求,還要考慮代碼整個(gè)結(jié)構(gòu)的覆蓋度,測(cè)試過(guò)程因而比較繁瑣。在面對(duì)復(fù)雜的C++代碼項(xiàng)目時(shí),如何才能高效地完成C++代碼的單元測(cè)試和集成測(cè)試,最大化地實(shí)現(xiàn)自動(dòng)化測(cè)試?北匯信息采用的自動(dòng)化測(cè)試工具是Vector旗下的代碼動(dòng)態(tài)測(cè)試工具----VectorCAST/C++。
VectorCAST/C++
VectorCAST/C++工具是德國(guó)Vector公司的一款白盒測(cè)試工具,主要用于實(shí)現(xiàn)代碼的單元測(cè)試和集成測(cè)試。它最大的特點(diǎn),同時(shí)也是相比于其它同類工具最大的優(yōu)勢(shì)就在于,經(jīng)受過(guò)多個(gè)大型量產(chǎn)項(xiàng)目實(shí)踐的對(duì)C++高階特性、Linux系統(tǒng)和CI平臺(tái)的強(qiáng)力支持。
支持C++11/14/17代碼解析
VectorCAST/C++工具內(nèi)置了權(quán)威的商業(yè)化前端解析工具EDG對(duì)代碼進(jìn)行解析,無(wú)論是基于C++11開發(fā)的,還是C++14又或者是C++17開發(fā)的,工具都可以完美支持C++11/14/17的特性。同時(shí),針對(duì)C++復(fù)雜數(shù)據(jù)類型的使用,比如STL、模板、智能指針等,可實(shí)現(xiàn)圖形化界面操作,無(wú)需過(guò)多添加測(cè)試代碼,有效地提高了C++代碼的測(cè)試效率。
1
類的實(shí)例化
類在使用之前都需要進(jìn)行類的實(shí)例化----對(duì)象創(chuàng)建,通過(guò)對(duì)象對(duì)類的成員屬性以及成員方法進(jìn)行訪問(wèn),所以在編寫測(cè)試用例時(shí),需要完成實(shí)例化對(duì)象的創(chuàng)建。工具可以解析類的所有構(gòu)造函數(shù),并在測(cè)試用例編輯區(qū)開辟對(duì)象實(shí)例化區(qū)域,測(cè)試人員可根據(jù)實(shí)際測(cè)試需求選擇匹配的構(gòu)造函數(shù)來(lái)實(shí)例化對(duì)象。
2
模板類/模板函數(shù)測(cè)試
在基于C++開發(fā)的代碼中,模板的應(yīng)用也非常廣泛,模板的出現(xiàn),實(shí)現(xiàn)了類型的參數(shù)化,真正做到代碼的重用性。在針對(duì)函數(shù)模板和類模板進(jìn)行測(cè)試時(shí),VectorCAST/C++支持對(duì)模板函數(shù)自動(dòng)插樁,實(shí)現(xiàn)圖形化界面操作,無(wú)需編寫測(cè)試代碼。
此外,在對(duì)模板類或者模板函數(shù)進(jìn)行測(cè)試之前需要先進(jìn)行實(shí)例化,然后再進(jìn)行模板的測(cè)試。
3
容器類型數(shù)據(jù)測(cè)試
C++ STL標(biāo)準(zhǔn)模板庫(kù)中的容器是用來(lái)存放各種數(shù)據(jù)結(jié)構(gòu)對(duì)象的集合。關(guān)于容器類型的數(shù)據(jù),在VectorCAST/C++中,工具支持對(duì)C++標(biāo)準(zhǔn)模板庫(kù)的測(cè)試,可以對(duì)標(biāo)準(zhǔn)容器(string/vector/list/set/map等)、迭代器等進(jìn)行解析,可直接在界面中進(jìn)行賦值操作。
4
智能指針測(cè)試
智能指針的使用解決了C++的內(nèi)存回收問(wèn)題。VectorCAST/C++支持解析智能指針,比如shared_ptr,unique_ptr等,可直接通過(guò)工具界面為參數(shù)賦值。
5
支持對(duì)第三方庫(kù)解析
在涉及到第三方庫(kù)的代碼測(cè)試中,VectorCAST/C++工具支持解析眾多第三方庫(kù),并可針對(duì)相關(guān)庫(kù)函數(shù)進(jìn)行自動(dòng)插樁,實(shí)現(xiàn)圖像化界面操作。
集成實(shí)際交叉編譯鏈
VectorCAST/C++可以在Windows和Linux平臺(tái)中穩(wěn)定運(yùn)行,且支持眾多主流的交叉編譯鏈,比如Green Hills,Hightec,IAR,Tasking,Keil等。之所以支持眾多主流編譯鏈,是因?yàn)閂ectorCAST/C++是基于實(shí)際編譯鏈進(jìn)行測(cè)試的。
自動(dòng)生成測(cè)試用例
VectorCAST/C++滿足ISO26262和ASPICE中不同安全等級(jí)項(xiàng)目對(duì)覆蓋度指標(biāo)的要求,包括語(yǔ)句、分支、MC/DC等。同時(shí)支持基于不同覆蓋度指標(biāo)要求自動(dòng)生成測(cè)試用例并自動(dòng)填充輸入值,可以有效的提高V2X項(xiàng)目的測(cè)試效率。
綜上所述,在汽車電子未來(lái)發(fā)展中,大量復(fù)雜C++代碼會(huì)得到廣泛使用。借助工具對(duì)C++代碼的完美解析,都可以在工具中找到對(duì)應(yīng)的解決方案,實(shí)現(xiàn)圖形化界面的操作,同時(shí)借助工具自身的測(cè)試優(yōu)勢(shì),可以有效地提高測(cè)試效率,實(shí)現(xiàn)C++代碼軟件的自動(dòng)化測(cè)試。
3
結(jié)束語(yǔ)
本文主要介紹了VectorCAST/C++工具在基于C++開發(fā)的汽車電子軟件項(xiàng)目中的應(yīng)用,當(dāng)前工具也被廣泛用于智能網(wǎng)聯(lián)、智能駕駛的量產(chǎn)項(xiàng)目中。VectorCAST/C++工具不僅適用于C++測(cè)試,也適用于C測(cè)試,且通過(guò)了南德認(rèn)證,是一款可用于功能安全認(rèn)證的高效的代碼動(dòng)態(tài)自動(dòng)化測(cè)試工具,已廣泛用于眾多國(guó)內(nèi)知名主機(jī)廠和零部件廠商。北匯信息作為Vector在中國(guó)的合作伙伴,致力于幫助中國(guó)客戶提升嵌入式控制系統(tǒng)的開發(fā)效率。如果你還在尋找合適的C/C++代碼測(cè)試工具,不妨來(lái)試一試VectorCAST/C++工具,定會(huì)讓你有心動(dòng)的感覺。此外,在過(guò)去的C++測(cè)試項(xiàng)目中,我們也積累了一些測(cè)試經(jīng)驗(yàn),期待與大家的交流與探討。
注:部分圖片來(lái)自于Vector。
-
汽車電子
+關(guān)注
關(guān)注
3029文章
8037瀏覽量
167938
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
源代碼加密、源代碼防泄漏c/c++與git服務(wù)器開發(fā)環(huán)境
![源<b class='flag-5'>代碼</b>加密、源<b class='flag-5'>代碼</b>防泄漏<b class='flag-5'>c</b>/<b class='flag-5'>c++</b>與git服務(wù)器開發(fā)環(huán)境](https://file1.elecfans.com/web2/M00/B2/A6/wKgaomVuxEeAGSf1AABba4Y-Iak289.png)
Spire.XLS for C++組件說(shuō)明
![Spire.XLS for <b class='flag-5'>C++</b>組件說(shuō)明](https://file1.elecfans.com/web3/M00/05/E7/wKgZO2eFwUuAbuoQAAAbn_khf8A091.png)
AKI跨語(yǔ)言調(diào)用庫(kù)神助攻C/C++代碼遷移至HarmonyOS NEXT
HighTec C/C++編譯器套件全面支持芯來(lái)RISC-V IP
![HighTec <b class='flag-5'>C</b>/<b class='flag-5'>C++</b>編譯器套件全面支持芯來(lái)RISC-V IP](https://file1.elecfans.com/web3/M00/03/5F/wKgZPGdot_6AdiTyAAAuxvV0qeo970.png)
同樣是函數(shù),在C和C++中有什么區(qū)別
C7000優(yōu)化C/C++編譯器
![<b class='flag-5'>C</b>7000優(yōu)化<b class='flag-5'>C</b>/<b class='flag-5'>C++</b>編譯器](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
ModusToolbox 3.2在c代碼中包含c++代碼的正確步驟是什么?
C++語(yǔ)言基礎(chǔ)知識(shí)
C++中實(shí)現(xiàn)類似instanceof的方法
![<b class='flag-5'>C++</b>中實(shí)現(xiàn)類似instanceof的方法](https://file1.elecfans.com/web2/M00/FE/0C/wKgaomaYe1CAQ31QAAAnf0IkoSU605.png)
OpenCV圖像識(shí)別C++代碼
任意波形發(fā)生器在汽車電子測(cè)試中的應(yīng)用
C/C++中兩種宏實(shí)現(xiàn)方式
![](https://file1.elecfans.com/web2/M00/CD/75/wKgaomYgmg2ADWcPAAFu55dKSPQ208.jpg)
C/C++代碼動(dòng)態(tài)測(cè)試工具VectorCAST插樁功能演示#代碼動(dòng)態(tài)測(cè)試 #C++
鴻蒙OS開發(fā)實(shí)例:【Native C++】
![鴻蒙OS開發(fā)實(shí)例:【Native <b class='flag-5'>C++</b>】](https://file1.elecfans.com/web2/M00/C8/31/wKgZomYZMTCAaDv3AAY5x13C324319.jpg)
為什么很少用C++開發(fā)單片機(jī)
![為什么很少用<b class='flag-5'>C++</b>開發(fā)單片機(jī)](https://file1.elecfans.com/web2/M00/C6/8F/wKgaomYBGYeAEfT2AAAsOmCJ4d8781.png)
評(píng)論