目錄
軟件與車(chē)輛:高度復(fù)雜
測(cè)試對(duì)象,測(cè)試用例和動(dòng)態(tài)測(cè)試
測(cè)試級(jí)別
測(cè)試環(huán)境
無(wú)論是MiL、SiL、PiL、HiL、單元測(cè)試、軟件測(cè)試還是集成測(cè)試: 汽車(chē)軟件測(cè)試的世界有很多技術(shù)術(shù)語(yǔ),所以可能會(huì)出現(xiàn)兩個(gè)人在同一個(gè)術(shù)語(yǔ)下理解不同的情況。誤解可能會(huì)發(fā)生,使有效的合作變得困難——我們也知道類(lèi)似的情況。讓我們把事情弄清楚一點(diǎn),從頭開(kāi)始講。
汽車(chē)世界在不斷發(fā)展,“軟件定義的汽車(chē)”等新術(shù)語(yǔ)證明了軟件對(duì)當(dāng)今汽車(chē)的重要性。
在發(fā)展過(guò)程中,以前純粹的機(jī)械領(lǐng)域逐漸擴(kuò)展到包括軟件和數(shù)字功能。汽車(chē)的功能和行為現(xiàn)在幾乎完全是通過(guò)軟件來(lái)實(shí)現(xiàn)的。伴隨著這一點(diǎn),當(dāng)人們談到軟件時(shí),測(cè)試也會(huì)立即被提及。但是為什么是軟件和測(cè)試呢? 軟件也只能在車(chē)上的硬件上運(yùn)行,它們一起組成了一個(gè)ECU(電子控制單元)。這些車(chē)輛配備了多達(dá)150個(gè)ECU,大約有1億行代碼(LOC)。ECU之間相互通信和交互,以實(shí)現(xiàn)車(chē)輛的特定功能,并使其對(duì)客戶(hù)具象化。
有這么多編程代碼,還能出什么問(wèn)題? 讓我們來(lái)看一個(gè)客戶(hù)可以直接體驗(yàn)的車(chē)輛功能示例:在儀表盤(pán)中顯示交通標(biāo)志。它是這樣工作的:
- 照相機(jī)拍攝照片并對(duì)其進(jìn)行評(píng)估。
- 檢測(cè)到的交通標(biāo)志被傳達(dá)到一個(gè)顯示控制單元,并進(jìn)行可視化。
- 此信息同時(shí)傳遞給其他控制單元上的其他功能,并進(jìn)行處理。
所有傳感器、執(zhí)行器和控制單元的連接被稱(chēng)為網(wǎng)絡(luò)架構(gòu),該架構(gòu)至少需要三年的時(shí)間來(lái)開(kāi)發(fā)一輛汽車(chē),直到準(zhǔn)備好量產(chǎn)。所有傳感器、執(zhí)行器和控制單元之間的正確交互自然會(huì)塑造車(chē)輛的功能和質(zhì)量。為了測(cè)試正確的交互作用,必須在多個(gè)階段重復(fù)和迭代地測(cè)試車(chē)輛。
最大的挑戰(zhàn)是,汽車(chē)的部件往往更多地是作為產(chǎn)品而不是作為項(xiàng)目來(lái)開(kāi)發(fā)的,因此,來(lái)自幾個(gè)公司和部門(mén)的許多人都參與到汽車(chē)的創(chuàng)造中來(lái)。
總之,這意味著汽車(chē)的開(kāi)發(fā)比人們最初想象的要復(fù)雜得多。這一方面是由于組織框架條件,另一方面是由于大量的系統(tǒng)組件具有軟件內(nèi)容。復(fù)雜性進(jìn)一步增加,因?yàn)榭梢酝ㄟ^(guò)幾個(gè)系統(tǒng)組件的交互來(lái)體驗(yàn)功能。
為了彌補(bǔ)這一切,需要對(duì)車(chē)輛進(jìn)行許多測(cè)試。測(cè)試什么,具體地說(shuō),在哪個(gè)測(cè)試級(jí)別上,以及如何進(jìn)行測(cè)試會(huì)在后文中提到。
什么是測(cè)試對(duì)象或被測(cè)試系統(tǒng)?
測(cè)試對(duì)象、被測(cè)系統(tǒng)和測(cè)試元素通常是同義詞。根據(jù)ISTQB,一個(gè)測(cè)試對(duì)象被非常一般地定義為“待測(cè)試的工作產(chǎn)品”。因此,測(cè)試對(duì)象可以是:
- 一個(gè)單元
- 幾個(gè)軟件部分的集合,
- 一個(gè)完整的軟件程序,
- 一個(gè)控制單元,
- 幾個(gè)控制單元組成的網(wǎng)絡(luò),
- 一整輛車(chē),
- 任何其他被測(cè)試的對(duì)象
在下文中,我們將術(shù)語(yǔ)“測(cè)試對(duì)象”和“被測(cè)試系統(tǒng)”同義地用于要測(cè)試的所有內(nèi)容。
什么是測(cè)試用例?
一個(gè)測(cè)試用例總是至少包含以下兩部分信息:
1. 定義如何刺激測(cè)試對(duì)象的測(cè)試數(shù)據(jù)。
2. 測(cè)試對(duì)象的期望值,它定義了測(cè)試對(duì)象在模擬過(guò)程中應(yīng)該假設(shè)哪些計(jì)算/狀態(tài)。
而且可以選擇用進(jìn)一步的相關(guān)信息來(lái)豐富測(cè)試用例。測(cè)試對(duì)象“ECU”的典型前提條件:ECU處于喚醒狀態(tài)并準(zhǔn)備接收消息。
測(cè)試數(shù)據(jù)和期望值是所有測(cè)試級(jí)別的測(cè)試用例和以這種形式執(zhí)行的測(cè)試用例所需要的。期望值是由各種各樣的信息來(lái)源給出的——也稱(chēng)為測(cè)試預(yù)言。測(cè)試預(yù)言可以是現(xiàn)有的系統(tǒng)(作為基準(zhǔn))、規(guī)范或個(gè)人的專(zhuān)業(yè)知識(shí)。在任何情況下,被測(cè)試的代碼都不應(yīng)該作為信息的來(lái)源。
什么是動(dòng)態(tài)測(cè)試?
動(dòng)態(tài)測(cè)試是測(cè)試對(duì)象的執(zhí)行。大多數(shù)人將測(cè)試與動(dòng)態(tài)測(cè)試聯(lián)系在一起。
在動(dòng)態(tài)測(cè)試中,創(chuàng)建并執(zhí)行測(cè)試用例,用測(cè)試數(shù)據(jù)刺激測(cè)試對(duì)象。刺激導(dǎo)致測(cè)試對(duì)象要么執(zhí)行計(jì)算,要么改變其狀態(tài)。在動(dòng)態(tài)測(cè)試中記錄測(cè)試對(duì)象的反應(yīng),并與期望值進(jìn)行比較。如果反應(yīng)與期望相等,則認(rèn)為測(cè)試用例已通過(guò)。如果不相等,就認(rèn)為失敗了。
與動(dòng)態(tài)測(cè)試相對(duì)的是靜態(tài)測(cè)試。在靜態(tài)測(cè)試中,測(cè)試對(duì)象不是模擬的,而是靜態(tài)分析的。靜態(tài)測(cè)試的一個(gè)例子是源代碼文件的審查。
什么是測(cè)試級(jí)別?
ASPICE間接地將測(cè)試級(jí)別分配給它的過(guò)程模型,并包含以下五個(gè)過(guò)程:
1.軟件單元驗(yàn)證(SWE.4)
2. 軟件集成與集成測(cè)試(SWE.5)
3. 軟件資質(zhì)測(cè)試(SWE.6)
4. 系統(tǒng)集成與集成測(cè)試(SYS.4)
5. 系統(tǒng)資質(zhì)測(cè)試(SYS.5)
當(dāng)根據(jù)ASPICE進(jìn)行分配時(shí),應(yīng)該注意:流程期望更多的活動(dòng)而不僅僅是動(dòng)態(tài)測(cè)試。
但是測(cè)試用例實(shí)際上是在哪個(gè)測(cè)試級(jí)別上執(zhí)行的,目的又是什么?我們從最小的層級(jí)開(kāi)始:編碼。這些是最早可以測(cè)試的測(cè)試對(duì)象。
軟件編程之后是與開(kāi)發(fā)相關(guān)的單元測(cè)試。它們也被稱(chēng)為模塊測(cè)試、功能測(cè)試或單元測(cè)試。在單元測(cè)試中,測(cè)試最小的軟件組件,即單元。
單元經(jīng)常變化,因此單元測(cè)試必須經(jīng)常調(diào)整、補(bǔ)充并再次執(zhí)行。單元測(cè)試有兩個(gè)主要目標(biāo):
- 早期質(zhì)量保證
- 快速檢測(cè)代碼更改中的交叉影響
單元測(cè)試通常是軟件開(kāi)發(fā)中首先自動(dòng)化的。
因?yàn)檐浖蜍浖M件是永久地調(diào)整和更改的,所以在持續(xù)集成方法框架內(nèi)的一致性是非常有用的,并且已經(jīng)建立起來(lái)了。無(wú)論測(cè)試級(jí)別如何,測(cè)試的重復(fù)總是被稱(chēng)為回歸測(cè)試,并且在A(yíng)SPICE中,軟件單元驗(yàn)證是必需的。實(shí)現(xiàn)回歸測(cè)試的最簡(jiǎn)單方法是自動(dòng)化測(cè)試并在持續(xù)集成環(huán)境中執(zhí)行它們。
單元測(cè)試之后是軟件集成測(cè)試。集成是單個(gè)軟件組件的組裝及其測(cè)試。這里的重點(diǎn)是軟件組件之間的兼容性。集成測(cè)試通常分幾個(gè)階段進(jìn)行。根據(jù)整個(gè)軟件的程度,在幾個(gè)中間階段到幾百個(gè)中間階段之間提供集成測(cè)試。中間階段的數(shù)量和選擇最終取決于軟件體系結(jié)構(gòu)和軟件設(shè)計(jì)。元素和級(jí)別越多,集成測(cè)試的中間階段就越多。
通常,集成測(cè)試是自底向上開(kāi)發(fā)的,首先相互集成和測(cè)試幾個(gè)單元(大約3-5個(gè))。然后,所得到的復(fù)合體與其他已經(jīng)測(cè)試過(guò)的復(fù)合體或其他單元集成在下一個(gè)中間階段,并再次測(cè)試。這個(gè)迭代鏈一直持續(xù)到ECU的整個(gè)軟件被構(gòu)建和測(cè)試完畢。
大量的集成測(cè)試一開(kāi)始聽(tīng)起來(lái)工作量很大,但它有一個(gè)明顯的優(yōu)勢(shì),就是可以更快更好地發(fā)現(xiàn)錯(cuò)誤。在我們的經(jīng)驗(yàn)中,在集成測(cè)試中建立一個(gè)額外的中間階段所需要的工作,可在最初建立測(cè)試階段時(shí),通過(guò)減少創(chuàng)建測(cè)試用例所需的工作來(lái)得到補(bǔ)償。
還有什么是支持集成測(cè)試的? 發(fā)現(xiàn)的錯(cuò)誤可以更容易地縮小到其原因,從而大大簡(jiǎn)化了分析。
最重要的是: 經(jīng)驗(yàn)表明,大多數(shù)軟件錯(cuò)誤都是在集成測(cè)試中發(fā)現(xiàn)的。
對(duì)于那些還不相信的人來(lái)說(shuō),任何持續(xù)集成方法都提供了這些測(cè)試階段。
集成測(cè)試完成后,軟件測(cè)試緊隨其后,軟件測(cè)試通常在目標(biāo)硬件上執(zhí)行。軟件測(cè)試中的測(cè)試對(duì)象與集成測(cè)試中的最后一個(gè)測(cè)試對(duì)象相同:它是完全集成的軟件。然而,它們各自的目的將兩個(gè)測(cè)試級(jí)別彼此區(qū)分開(kāi)來(lái)。
1.集成測(cè)試的目的:檢查軟件組件之間的兼容性。
2. 軟件測(cè)試目標(biāo):檢查軟件是否符合要求,例如與傳感器和執(zhí)行器的兼容性,
3.信號(hào)處理
4. 軟件行為改變參數(shù)等方面
軟件測(cè)試之后是進(jìn)一步的集成測(cè)試。但是,這一次不是在軟件級(jí)別,而是在系統(tǒng)組件級(jí)別。該過(guò)程與軟件集成測(cè)試相同。ECU與一個(gè)或多個(gè)傳感器或執(zhí)行器一起測(cè)試,然后一點(diǎn)一點(diǎn)地添加其他組件,直到系統(tǒng)就位。
最后的測(cè)試在系統(tǒng)測(cè)試中進(jìn)行。在此過(guò)程中,將所有系統(tǒng)組件集成到一個(gè)系統(tǒng)中并進(jìn)行測(cè)試。系統(tǒng)測(cè)試的重點(diǎn)是確定是否符合系統(tǒng)需求和系統(tǒng)的可交付性。
在汽車(chē)開(kāi)發(fā)中,現(xiàn)在有一些額外的組織挑戰(zhàn),例如: 什么是系統(tǒng)? 對(duì)于汽車(chē)OEM來(lái)說(shuō),它就是一輛車(chē)。但是,提供子系統(tǒng)(如動(dòng)力系統(tǒng)或軟件組件)的供應(yīng)商如何回答這個(gè)問(wèn)題呢? 在這種情況下,必須為測(cè)試階段更緊密地指定測(cè)試對(duì)象。
從合同的角度來(lái)看,還有一個(gè)進(jìn)一步的測(cè)試階段: 驗(yàn)收測(cè)試,由客戶(hù)進(jìn)行。從合同的角度來(lái)看,驗(yàn)收是對(duì)開(kāi)發(fā)(軟件、硬件、系統(tǒng)等)符合合同標(biāo)準(zhǔn)的聲明。驗(yàn)收合格后,剩余款項(xiàng)到期,保修開(kāi)始。
什么是測(cè)試環(huán)境?
測(cè)試環(huán)境就像測(cè)試對(duì)象及其參與者的訓(xùn)練場(chǎng)。它應(yīng)該盡可能接近真實(shí)的生產(chǎn)環(huán)境,以便測(cè)試在與其他玩家、狀態(tài)和信號(hào)交互時(shí)的重要性盡可能高。
在這種情況下,經(jīng)常會(huì)討論在環(huán)測(cè)試,例如
- 模型在環(huán)(Model-in-the-loop,MiL)
- 軟件在環(huán)(Software-in-the-loop,SiL)
- 處理器在環(huán)(Processor-in-the-loop,PiL)
- 硬件在環(huán)(Hardware-in-the-loop,HiL)
“in- in- loop”之前的術(shù)語(yǔ)代表測(cè)試對(duì)象的類(lèi)型?!霸诃h(huán)”指的是測(cè)試對(duì)象與模擬生產(chǎn)環(huán)境的組件之間的一種特殊類(lèi)型的交互。在“在環(huán)測(cè)試”中,環(huán)境對(duì)測(cè)試對(duì)象的狀態(tài)和計(jì)算做出反應(yīng)。因此,這些測(cè)試與開(kāi)環(huán)測(cè)試相反,開(kāi)環(huán)測(cè)試沒(méi)有模擬環(huán)境的反應(yīng)。
與開(kāi)環(huán)測(cè)試相比,“在環(huán)測(cè)試”的優(yōu)點(diǎn)是更接近真實(shí)的生產(chǎn)環(huán)境。但是,在環(huán)環(huán)境的設(shè)置更加復(fù)雜。
在汽車(chē)環(huán)境中,開(kāi)發(fā)通常是基于模型的。大多數(shù)模型是用MATLAB/Simulink或TargetLink創(chuàng)建的。這些模型通常在開(kāi)發(fā)環(huán)境中直接以單元和軟件集成測(cè)試的形式作為模型在環(huán)(MiL)進(jìn)行驗(yàn)證。
這種類(lèi)型的動(dòng)態(tài)測(cè)試可以發(fā)現(xiàn)控制策略和邏輯中的錯(cuò)誤。嵌入式系統(tǒng)的仿真是在同樣仿真的環(huán)境模型中執(zhí)行的。這種非常早期的測(cè)試的優(yōu)點(diǎn)是可以快速檢測(cè)到模型構(gòu)建中已經(jīng)存在的錯(cuò)誤,并有可能對(duì)其進(jìn)行修正。
在軟件在環(huán)測(cè)試(SiL)中,測(cè)試代碼是在PC上測(cè)試的。這要么是手寫(xiě)的,要么是從模型生成的。這兩種代碼的作用域是不同的。
1.測(cè)試生成的代碼:檢查代碼生成器是否正常工作。生成的代碼的功能應(yīng)該盡可能接近模型。
2.對(duì)于手動(dòng)代碼,SiL是第一個(gè)可能的測(cè)試級(jí)別。與MiL一樣,目標(biāo)是在早期階段發(fā)現(xiàn)錯(cuò)誤。
SiL用于測(cè)試階段的單元測(cè)試、集成測(cè)試,在某些情況下也用于軟件測(cè)試。硬件在這個(gè)階段還不適用。
在SiL中測(cè)試的代碼不能在嵌入式ECU上執(zhí)行。為了執(zhí)行,必須為目標(biāo)處理器編譯代碼。在這個(gè)過(guò)程中生成的代碼可以通過(guò)兩種方式進(jìn)行測(cè)試:
1. 通過(guò)一個(gè)評(píng)估板與有未來(lái)目標(biāo)環(huán)境的處理器。
2. 在PC上模擬處理器的虛擬環(huán)境中。
在這兩種情況下,都提到了處理器在環(huán)(PiL),實(shí)際上是指為目標(biāo)處理器架構(gòu)構(gòu)建的軟件測(cè)試。嚴(yán)格地說(shuō),測(cè)試階段因此也可以稱(chēng)為目標(biāo)軟件在環(huán)。
處理器在環(huán)測(cè)試的主要目標(biāo)是檢測(cè)編譯器錯(cuò)誤,或者在軟件組件非常接近硬件的情況下,例如驅(qū)動(dòng)程序或執(zhí)行器的控制,在早期階段檢查硬件和軟件組件的兼容性。
下一個(gè)邏輯步驟是測(cè)試硬件: 也就是說(shuō),在帶有外圍設(shè)備的物理ECU上完成軟件。現(xiàn)在的重點(diǎn)是輸入和輸出、通信總線(xiàn)和其他接口如何實(shí)時(shí)交互。這種測(cè)試的術(shù)語(yǔ)是硬件在環(huán)(Hardware-in-the-Loop,HiL)。HiL測(cè)試從ECU開(kāi)始,可以實(shí)現(xiàn)到系統(tǒng)網(wǎng)絡(luò)級(jí)別。HiL試驗(yàn)臺(tái)架可以對(duì)整車(chē)進(jìn)行測(cè)試,但設(shè)置和操作成本相應(yīng)較高。盡管如此,他們還是很成熟的,因?yàn)檫M(jìn)行手動(dòng)車(chē)輛測(cè)試也很昂貴,而且更費(fèi)時(shí)。
在車(chē)輛測(cè)試中,ecu、執(zhí)行器和傳感器組件在最終目標(biāo)環(huán)境中進(jìn)行測(cè)試。車(chē)輛大多在寒冷、溫暖和炎熱地區(qū)的不同環(huán)境條件下進(jìn)行測(cè)試。即使在今天,這些測(cè)試也主要是手動(dòng)執(zhí)行的。在某些情況下,測(cè)量結(jié)果會(huì)被自動(dòng)記錄,然后在工具的幫助下進(jìn)行評(píng)估。這個(gè)測(cè)試階段發(fā)生在每個(gè)OEM。要進(jìn)行車(chē)輛測(cè)試,車(chē)輛及其所有部件必須可用。然而,由于手動(dòng)測(cè)試需要訓(xùn)練有素的司機(jī)和車(chē)輛,測(cè)試的可擴(kuò)展性較差。
總結(jié)
術(shù)語(yǔ)和信息的密集使得一件事很清楚: 背景知識(shí)、過(guò)程和項(xiàng)目之間的溝通是有效和高效地開(kāi)發(fā)、測(cè)試和成功實(shí)現(xiàn)嵌入式系統(tǒng)的關(guān)鍵。
在汽車(chē)軟件測(cè)試中,有許多方法和方法,在我們看來(lái),沒(méi)有對(duì)與錯(cuò),而是有利與不利。當(dāng)然,這取決于各種參數(shù),涉及的組織,最終取決于一起工作的人。
我們是早期測(cè)試的支持者,我們建議直接從單元測(cè)試級(jí)別開(kāi)始。進(jìn)一步說(shuō)到集成測(cè)試,可以測(cè)試不同的功能以獲得開(kāi)發(fā)的直接反饋。所有這些都導(dǎo)致了快速、合作的產(chǎn)品開(kāi)發(fā)。
-
嵌入式
+關(guān)注
關(guān)注
5053文章
18915瀏覽量
300861 -
汽車(chē)電子
+關(guān)注
關(guān)注
3019文章
7790瀏覽量
165702 -
軟件
+關(guān)注
關(guān)注
69文章
4621瀏覽量
86998
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論