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