1 引言
過(guò)去十年,,汽車(chē)電子行業(yè)的狀況發(fā)生了翻天覆地的變化,。起初,,在汽車(chē)上僅使用了幾個(gè)ECU,,但是現(xiàn)在某些豪華車(chē)安裝的ECU數(shù)量超過(guò)了60個(gè),。增加的電子系統(tǒng)提高了安全性,、舒適性并節(jié)約了能源。今天,,更多的創(chuàng)新依賴于電子技術(shù),,并且很多功能的實(shí)現(xiàn)日益依賴于軟件。
復(fù)雜度的增長(zhǎng)使得全面而高效的測(cè)試變得比以往任何時(shí)候都更加重要,。大量電子元件的廣泛使用導(dǎo)致潛在錯(cuò)誤源的數(shù)量急劇增多,。測(cè)試可以極早發(fā)現(xiàn)并改正錯(cuò)誤、盡可能降低成本,,在ECU開(kāi)發(fā)的所有階段它都是不可或缺的,。只有將部件集成起來(lái)并運(yùn)行于真實(shí)環(huán)境和實(shí)時(shí)條件下時(shí),一些系統(tǒng)缺陷才會(huì)暴露出來(lái),。這讓測(cè)試成為了一門(mén)跨部門(mén)和跨廠商的學(xué)科,。
早期發(fā)生的大量電子故障說(shuō)明在不考慮上述事實(shí)、忽視系統(tǒng)測(cè)試的情況下會(huì)發(fā)生什么問(wèn)題,。在開(kāi)發(fā)過(guò)程中問(wèn)題發(fā)現(xiàn)的越晚,,那么對(duì)成本增長(zhǎng)產(chǎn)生的影響就越嚴(yán)重。極端情況下由于修正錯(cuò)誤而引起的產(chǎn)品召回更加清楚地說(shuō)明了這一點(diǎn),。雖然汽車(chē)工業(yè)的成員吸取了這些教訓(xùn),,現(xiàn)在對(duì)測(cè)試極為重視,然而可以通過(guò)利用現(xiàn)有的資源進(jìn)一步提高效率,。雖然測(cè)試成本占用了相當(dāng)?shù)捻?xiàng)目預(yù)算,,但是保證了ECU的正確功能,。因此,使用明晰的概念(比如使用現(xiàn)代方法和工具代替不恰當(dāng)?shù)淖詣?dòng)測(cè)試步驟)達(dá)到最高的測(cè)試質(zhì)量和測(cè)試深度是非常重要的,。
2 分析,、仿真和測(cè)試工具
ECU網(wǎng)絡(luò)是汽車(chē)電子的中樞。在這里,,殘余總線仿真方法為進(jìn)行ECU測(cè)試建立了重要基礎(chǔ),。如果沒(méi)有對(duì)ECU環(huán)境的初步模擬,那么大多數(shù)ECU都不能有意義地運(yùn)行,。比如,,很多ECU只有在提供網(wǎng)絡(luò)管理功能的條件下才能正常運(yùn)轉(zhuǎn)。
不同的分析功能,、仿真組件和測(cè)試序列依賴于以數(shù)據(jù)庫(kù)形式集成在工具中的模型,。它們可能是用于CAN的DBC格式的通信矩陣、用于FlexRay的FIBEX文件,、用于MOST的XML功能目錄或用于LIN的LDF文件。同樣地,,可使用CDD和ODX描述文件來(lái)描述ECU的診斷功能,。測(cè)試描述文件除了包含系統(tǒng)的基本信息外,還包含了信號(hào),、報(bào)文和診斷服務(wù)等的符號(hào)化名稱,。這簡(jiǎn)化了測(cè)試人員和測(cè)試開(kāi)發(fā)者的工作,并且在測(cè)試和通信描述之間創(chuàng)建了一個(gè)抽象層,。
任何運(yùn)行Windows操作系統(tǒng)的簡(jiǎn)單PC工作站都可運(yùn)行CANoe,。使用實(shí)時(shí)配置系統(tǒng)可以建立具備高實(shí)時(shí)性能的、更為強(qiáng)大的測(cè)試站,。實(shí)時(shí)配置系統(tǒng)由兩部分組成(圖2):一臺(tái)運(yùn)行實(shí)時(shí)操作系統(tǒng)(Windows CE)的專用電腦,,用于執(zhí)行殘余總線仿真和實(shí)際的測(cè)試;另一臺(tái)獨(dú)立的PC機(jī),,用作圖形用戶界面和進(jìn)行評(píng)估,。在該設(shè)置中,系統(tǒng)也可用作進(jìn)行部件HIL測(cè)試的測(cè)試執(zhí)行環(huán)境,。
?。蹐D2:雙機(jī)運(yùn)行的CANoe Real-Time提供了更高的實(shí)時(shí)性]
3 測(cè)試與開(kāi)發(fā)的集成
如今的開(kāi)發(fā)模型在多個(gè)開(kāi)發(fā)階段都要求進(jìn)行測(cè)試(圖3)。通常,,個(gè)體測(cè)試是獨(dú)立的,、分離的活動(dòng),是由專門(mén)的人使用專門(mén)的工具,、語(yǔ)言和方法在正確裝備的專用工作站上完成的,。這里,,創(chuàng)建測(cè)試通常是一項(xiàng)獨(dú)立的工作,與其它開(kāi)發(fā)活動(dòng)是分開(kāi)的,。
?。蹐D3:測(cè)試在所有開(kāi)發(fā)階段都是不可或缺的]
這種分段式的工作方法產(chǎn)生于將開(kāi)發(fā)過(guò)程中眾多不同的任務(wù)分配給專門(mén)的工作組。但是,,如果對(duì)任務(wù)分割的要求太嚴(yán)格,,那么存在于不同開(kāi)發(fā)和測(cè)試任務(wù)間的眾多關(guān)聯(lián)點(diǎn)將很有可能不能被優(yōu)化利用。比如,,只有很好地協(xié)調(diào)部件測(cè)試和系統(tǒng)測(cè)試才能避免開(kāi)發(fā)大量?jī)?nèi)容相同的冗余測(cè)試用例,。當(dāng)使用兼容工具時(shí),已經(jīng)開(kāi)發(fā)出來(lái)的測(cè)試用例可以作為其它不同領(lǐng)域的開(kāi)發(fā)基礎(chǔ),。避免冗余開(kāi)發(fā)釋放了占用的資源,,比如可以將其投入到現(xiàn)有測(cè)試用例及其高級(jí)開(kāi)發(fā)的確認(rèn)工作中。全面的測(cè)試管理為協(xié)作提供了堅(jiān)實(shí)的基礎(chǔ),,共用相同的測(cè)試用例優(yōu)化了測(cè)試的廣度和深度,。協(xié)調(diào)也有助于發(fā)現(xiàn)和填補(bǔ)測(cè)試缺口。
除了連接不同的測(cè)試階段,,開(kāi)發(fā)和測(cè)試活動(dòng)也必須相互聯(lián)系并互相適應(yīng),。應(yīng)當(dāng)將測(cè)試?yán)斫鉃殚_(kāi)發(fā)的組成部分,需要使用恰當(dāng)?shù)姆椒ê凸ぞ邔?duì)其進(jìn)行廣泛的支持,。這必須從程序上和組織上得到保證,。這里,重要的是測(cè)試與開(kāi)發(fā)一起進(jìn)行,,而不是只在要求的正式確認(rèn)階段進(jìn)行,。理想的情況是,可以直接在ECU開(kāi)發(fā)者的工作地點(diǎn)利用現(xiàn)有的資源直接進(jìn)行測(cè)試,。
為此,,CANoe提供了一個(gè)用來(lái)執(zhí)行測(cè)試的運(yùn)行時(shí)環(huán)境,并可以與殘余總線仿真和分析功能并行使用 ,。該流程非常容易建立,,尤其是在開(kāi)發(fā)者已經(jīng)使用CANoe進(jìn)行殘余總線仿真和總線通信分析的情況下。
CANoe的測(cè)試組件可以手動(dòng),、半自動(dòng)和完全自動(dòng)化的完成測(cè)試,。開(kāi)發(fā)者可以從簡(jiǎn)單測(cè)試入手,然后對(duì)它們進(jìn)行擴(kuò)展和完善,。通常,,復(fù)雜測(cè)試的創(chuàng)建過(guò)程是確認(rèn)部門(mén)的任務(wù),他們要在開(kāi)發(fā)者的測(cè)試上建立他們的測(cè)試,。
這種測(cè)試的重要基礎(chǔ)是殘余總線仿真,。在理想情況下,,這種仿真不是手工建立的,而是從系統(tǒng)的描述數(shù)據(jù)庫(kù)中自動(dòng)生成和參數(shù)化的,。實(shí)際工作由所謂的建模DLL(比如交互層,、網(wǎng)絡(luò)管理等)完成,它們是隨工具一起提供的或者是由Vector作為OEM專用建模包提供的,。殘余總線仿真為模擬節(jié)點(diǎn)提供的信號(hào)可以直接從測(cè)試腳本獲取,,或者以手工方式激勵(lì)或添加。
與在測(cè)試階段系統(tǒng)進(jìn)行的計(jì)劃,、執(zhí)行和歸檔活動(dòng)相比,,伴隨開(kāi)發(fā)的測(cè)試通常省略了正式的執(zhí)行和歸檔。然而,,這些測(cè)試對(duì)提高整體質(zhì)量做出了實(shí)際貢獻(xiàn),,因?yàn)樗麄冏岄_(kāi)發(fā)者能夠?yàn)楹罄m(xù)的測(cè)試階段提供更穩(wěn)定的產(chǎn)品。
4 成熟度評(píng)估和誤差分析
在開(kāi)發(fā)過(guò)程中,,為了評(píng)估ECU的成熟度,,需要對(duì)所有執(zhí)行過(guò)的測(cè)試進(jìn)行全面的評(píng)價(jià)。必須考慮個(gè)體測(cè)試結(jié)果在可靠性和相關(guān)性方面的質(zhì)量,,而更加重要的是采用恰當(dāng)?shù)臏y(cè)試全面覆蓋所要求的特性,。因此,不怎么正式執(zhí)行的測(cè)試,,其結(jié)果對(duì)成熟度分析也是有幫助的。前提條件是(除了記錄測(cè)試過(guò)程外)使用兼容的配置管理,。從完成面向質(zhì)量的,、結(jié)構(gòu)化的開(kāi)發(fā)過(guò)程的角度來(lái)說(shuō),這也是十分必要的,。
不論在何時(shí)何地(測(cè)試實(shí)驗(yàn)室或開(kāi)發(fā)場(chǎng)所),,使用CANoe執(zhí)行測(cè)試時(shí)都會(huì)生成一個(gè)測(cè)試記錄,該記錄創(chuàng)建時(shí)不需要用戶或測(cè)試用例開(kāi)發(fā)者進(jìn)行干涉,。這樣在進(jìn)行伴隨開(kāi)發(fā)的測(cè)試時(shí)就不需要做額外的工作,。用于測(cè)試記錄的XML是一種開(kāi)放格式,可供其它工具使用以對(duì)結(jié)果進(jìn)行更深入的處理,。例如,,在進(jìn)行成熟度分析時(shí)可以使用一個(gè)測(cè)試管理系統(tǒng)來(lái)評(píng)價(jià)測(cè)試記錄。
該工作的本質(zhì)是測(cè)試結(jié)果到測(cè)試用例,、測(cè)試用例到需求的映射,。使用唯一的標(biāo)識(shí)符(比如一個(gè)需求ID)可以很容易地實(shí)現(xiàn)這一點(diǎn),測(cè)試用例開(kāi)發(fā)者在個(gè)體測(cè)試用例中會(huì)引用它,。CANoe會(huì)自動(dòng)將該標(biāo)識(shí)符復(fù)制到測(cè)試記錄中,,這樣所有測(cè)試用例,、測(cè)試結(jié)果和需求就可以明確地關(guān)聯(lián)起來(lái)(圖4)。
?。蹐D4:測(cè)試用例和測(cè)試結(jié)果由ID明確地引用]
分析實(shí)際發(fā)生錯(cuò)誤的原因至少與記錄和評(píng)估測(cè)試結(jié)果同樣重要,。大多數(shù)測(cè)試工具都不會(huì)提供任何這樣的功能或者僅僅提供不完善的功能。一個(gè)重要原因就是錯(cuò)誤分析經(jīng)常被當(dāng)作開(kāi)發(fā)者的一項(xiàng)完全獨(dú)立的任務(wù),。首先,,他們面臨理解測(cè)試中檢測(cè)到的錯(cuò)誤并跟蹤其原因的問(wèn)題。尤其是,,當(dāng)測(cè)試實(shí)驗(yàn)室報(bào)告錯(cuò)誤時(shí),,開(kāi)發(fā)者常常甚至不能使用測(cè)試中用到的系統(tǒng)。
因此,,會(huì)強(qiáng)制要求準(zhǔn)確記錄測(cè)試臺(tái)上的測(cè)試步驟并記錄每一個(gè)與DUT間的交互動(dòng)作,,尤其是總線通信。在分析階段,,CANoe允許重放和分析任何需要的記錄(日志記錄),。從而有可能在開(kāi)發(fā)場(chǎng)所使用與測(cè)試臺(tái)上相同的測(cè)試系統(tǒng)并從中受益,因此開(kāi)發(fā)者可以獨(dú)立地重新執(zhí)行錯(cuò)誤生成測(cè)試用例,。在很多情況下,,甚至是有必要進(jìn)行簡(jiǎn)化時(shí)(比如為了避免選擇不存在的測(cè)量硬件)都可以執(zhí)行相關(guān)測(cè)試用例。
5 信號(hào)抽象和診斷
抽象是處理軟件開(kāi)發(fā)和系統(tǒng)設(shè)計(jì)中復(fù)雜度問(wèn)題時(shí)普遍采用的重要方法,。也可用它來(lái)處理測(cè)試,。ECU中增長(zhǎng)的功能不僅增加了系統(tǒng)的復(fù)雜度,而且需要更加廣泛和復(fù)雜的測(cè)試,。選擇正確的抽象層組成測(cè)試不僅會(huì)影響創(chuàng)建測(cè)試用例所需要的工作量,、進(jìn)而影響成本,而且會(huì)影響測(cè)試用例的質(zhì)量,。就像所有其它軟件組件一樣,,測(cè)試用例本身也可能會(huì)存在錯(cuò)誤,應(yīng)該在使用之前進(jìn)行檢查,。另一方面是必要的維護(hù)任務(wù),,比如適應(yīng)需求的改變和修訂測(cè)試用例。
信號(hào)層抽象是測(cè)試ECU功能的常用方法,,這也是為什么在ECU中實(shí)際的應(yīng)用程序通常會(huì)基于信號(hào)抽象的原因(圖5),。例如,在一個(gè)CAN系統(tǒng)中,,ECU交互層提供了信號(hào)抽象,。這正是CANoe使用交互層的方式;它從網(wǎng)絡(luò)描述包含的信息中將自身參數(shù)化,,而網(wǎng)絡(luò)描述也用于創(chuàng)建ECU軟件,。這保證了ECU和測(cè)試環(huán)境使用相同的抽象層從而在相互間形成最佳的協(xié)調(diào),。
同時(shí),信號(hào)抽象也表示了——至少在協(xié)議層——?dú)堄嗫偩€仿真,。比如,,它保證周期性信號(hào)實(shí)際是按周期發(fā)送的。在測(cè)試中,,ECU是運(yùn)行在有關(guān)總線通信的現(xiàn)實(shí)環(huán)境下的,。此外,當(dāng)修改了系統(tǒng)通信矩陣時(shí),,通??梢岳^續(xù)使用保持不變的測(cè)試用例。對(duì)相同的應(yīng)用程序,,抽象使得相似項(xiàng)目中的測(cè)試用例得到重用,。
在ECU測(cè)試中,重要的并不僅僅是信號(hào)接口,。只有在對(duì)ECU進(jìn)行較深層訪問(wèn)時(shí),,對(duì)許多ECU功能的測(cè)試才會(huì)有意義。這樣的訪問(wèn)是由診斷和標(biāo)定接口提供的,,它們通過(guò)ECU的現(xiàn)有總線接口接入,。使用簡(jiǎn)單的消息序列對(duì)這些接口進(jìn)行訪問(wèn)是沒(méi)有意義的,因?yàn)樵谕ㄐ胚M(jìn)程下面存在著規(guī)定的協(xié)議,。使用合適的診斷和標(biāo)定抽象 會(huì)更加便捷和可靠,。
在CANoe中,由來(lái)自CANdela工具的描述文件或者ODX描述文件負(fù)責(zé)診斷訪問(wèn)層的參數(shù)化,。如果沒(méi)有對(duì)ECU實(shí)際診斷能力的描述文件,,那么可以使用CANoe提供的針對(duì)KWP2000和UDS的一般描述。ECU專用的一般描述文件或診斷描述文件都為方便地訪問(wèn)那里定義的診斷服務(wù)提供了便利,。有可能獲得與前文所述的信號(hào)抽象一樣的抽象和優(yōu)點(diǎn)。
通過(guò)CANoe中的測(cè)試腳本就可以使用測(cè)量和標(biāo)定協(xié)議CCP和XCP訪問(wèn)ECU的內(nèi)部變量,。測(cè)量和標(biāo)定工具CANape處理這些協(xié)議和需要的ECU描述文件(A2L),。
CANoe通過(guò)COM接口控制CANape。這樣就達(dá)到了與前面所描述的信號(hào)和診斷抽象相同的目標(biāo),。
6 高效的測(cè)試生成
對(duì)測(cè)試用例的精密研究顯示:很多測(cè)試用例可以僅從幾個(gè)循環(huán)模式中生成,。在網(wǎng)關(guān)ECU中這一點(diǎn)更為明顯:大多數(shù)測(cè)試用例用于檢查信號(hào)和報(bào)文的路由。最終,,使用大量測(cè)試用例的唯一原因是存在大量可能的輸入和輸出數(shù)據(jù),。但是同樣類型的模式也存在于其他類型的ECU中。抽象地說(shuō),,這意味著許多功能是如此進(jìn)行測(cè)試的:首先使用合適的激勵(lì)使ECU進(jìn)入一個(gè)特殊狀態(tài),,然后檢查進(jìn)入的狀態(tài),。這種測(cè)試用例的循環(huán)模式是:設(shè)置信號(hào)(激勵(lì)),等待最大容許響應(yīng)時(shí)間,,然后檢查新ECU狀態(tài)下的信號(hào),。根據(jù)使用測(cè)試模式的經(jīng)驗(yàn),用戶可能識(shí)別幾個(gè)附加的運(yùn)行時(shí)模式,,并從中生成許多測(cè)試用例,。
這些模式表示有進(jìn)一步優(yōu)化測(cè)試用例生成的機(jī)會(huì)。CANoe除了提供典型的測(cè)試用例編程外,,還為用戶提供了基于測(cè)試模式定義測(cè)試用例的方式,。因?yàn)闇y(cè)試步驟是已知的而且永久集成在了提供的模式中,所以就沒(méi)有必要再對(duì)模式內(nèi)容進(jìn)行編程了(圖6),。測(cè)試用例的生成被簡(jiǎn)化為定義目標(biāo)行為,,包括任何需要的補(bǔ)充數(shù)據(jù),比如允許的建立時(shí)間,。
很明顯,,提供的測(cè)試模式位于前文所述的信號(hào)抽象之上,借助關(guān)聯(lián)的數(shù)據(jù)庫(kù)允許對(duì)信號(hào),、報(bào)文等的符號(hào)化訪問(wèn),。也可能使用診斷服務(wù)或I/O信號(hào)。簡(jiǎn)而言之:整個(gè)CANoe的測(cè)試基層結(jié)構(gòu)可與測(cè)試模式共用,。如果有的需求超出了這些能力,,仍然可以選擇測(cè)試用例編程。
?。蹐D6:使用模式抽象了測(cè)試用例的實(shí)際執(zhí)行從而簡(jiǎn)化了測(cè)試開(kāi)發(fā)]
測(cè)試用例的自動(dòng)生成是在有合適信息源的情況下有效創(chuàng)建測(cè)試的另一種方法,。生成的測(cè)試內(nèi)容必然受限于描述水平和來(lái)源的深度。然而,,生成提供了有價(jià)值的支持,,主要是當(dāng)通過(guò)測(cè)試覆蓋正式定義的ECU基本特性時(shí)。生成測(cè)試需要相當(dāng)?shù)偷墓ぷ髁?,這導(dǎo)致能更快地進(jìn)行測(cè)試從而可能更早地發(fā)現(xiàn)不良的動(dòng)向,。
[圖7: 使用生成器可以從完全不同的來(lái)源創(chuàng)建測(cè)試]
Vector的工具鏈利用了這種測(cè)試生成器方法,。諸如DBC數(shù)據(jù)庫(kù)或CANdela定義等描述文件被用作生成器的來(lái)源(圖7),。生成器使用這些文件生成測(cè)試用例,然后由CANoe執(zhí)行,。因?yàn)闇y(cè)試腳本可能使用整個(gè)工具的基層結(jié)構(gòu),,所以測(cè)試生成器通常都設(shè)計(jì)的非常簡(jiǎn)單。比如,只需少量的工作,,生成器就可以從用戶定義的網(wǎng)關(guān)描述(例如數(shù)據(jù)庫(kù)形式或Excel電子表格)中創(chuàng)建恰當(dāng)?shù)臏y(cè)試用例,。借助前面講到的測(cè)試模式,從客戶的特定數(shù)據(jù)到測(cè)試模式格式只需要簡(jiǎn)單的轉(zhuǎn)換,。用戶可直接創(chuàng)建這樣的生成器,。Vector以項(xiàng)目服務(wù)的方式提供進(jìn)一步的支持。
7 總結(jié)
汽車(chē)OEM和供應(yīng)商應(yīng)對(duì)增長(zhǎng)的ECU測(cè)試需求的唯一途徑是高效地創(chuàng)建測(cè)試和自動(dòng)化執(zhí)行測(cè)試,。本文介紹的測(cè)試工具提供了一種被證明的使用信號(hào)抽象,、集成的診斷、標(biāo)定和I/O接口,、測(cè)試模式概念和測(cè)試用例生成器來(lái)實(shí)現(xiàn)測(cè)試任務(wù)的解決方案,。CANoe是一個(gè)高性能的測(cè)試ECU和網(wǎng)絡(luò)的運(yùn)行時(shí)環(huán)境。使用該工具在開(kāi)發(fā)者的工作地點(diǎn),、不需要做多少工作就能在早期創(chuàng)建和執(zhí)行測(cè)試,。CANoe的開(kāi)放接口促進(jìn)了全面的測(cè)試策略和受工具支持的測(cè)試管理的無(wú)縫集成。盡管一些用戶還把它當(dāng)作一種遠(yuǎn)景設(shè)想,,然而恰當(dāng)?shù)丶蒀ANoe可能在今天就可以確定成熟度了,。Vector正在持續(xù)地開(kāi)發(fā)CANoe適應(yīng)這些領(lǐng)域的使用,并為用戶提供現(xiàn)代而高效的測(cè)試平臺(tái)支持,。