最近(jìn)的(de)工↓₩©(gōng)作(zuò)需要(yào)經常和(hé)測試打交道(dàoσ×≈),但(dàn)我并非這(zhè)個(gè)細分(fēn)領域的(de)行≠σδσ(xíng)家(jiā),看(kàn)著(zhe)幾>↔←千條測試用(yòng)例和(hé)五花(huā)八門(mén)的(de)測試設備與工(gō∞<ng)具,以及工(gōng)程師(shī)展示的(de)繁複曲 §線與圖表,著(zhe)實有(yǒu)些(xiē)眼花(huā)缭亂,✘∑↑$沒太看(kàn)懂(dǒng),不(bù)由得(de)陷入了(le)深深的(de£₩)思索......
1 T型人(rén)才與焦利氏稱
陷入思↓≈↓索有(yǒu)兩個(gè)原因:一(yī)是(shì)确實沒跟上(shàng)節奏,隻能(n™α>∞éng)佯裝沉思,以掩飾尴尬,保持風(fēng)度;二是(shì)汽車(chē)領域的(de)知(zhī)識太多(duō)了(le),沒能(nén÷φ"§g)力是(shì)一(yī)說(shuō),但(dàn)也(yě)實在沒必要(yào)事(shì)事(shì)跟上(shàng)節奏,守好(hǎ♥→o)自(zì)己碗裡(lǐ)的(de)飯就(jiù)不(bù)錯(cuò)了(lΩ≤e)。
可(kě)是(shì),我們不(bù) $✘₽是(shì)要(yào)構建T型知(zhī)識結構,成為(wèi)綜合性人(rén✘≤β§)才嘛。那(nà)怎麽辦呢(ne)?
φ€βδ 寫到(dào)這(zhè)裡(lǐ),想到(dào)多(duō)年(nián)前的(de)大(dà)學物(wù)理(lǐ) >•δ實驗課,絕大(dà)多(duō)數(shù)課意料之內(nèi)地(dì)忘得(de)幹幹淨淨,但π₹(dàn)倒是(shì)記住了(le)一(yī)堂——焦利氏稱,原因是(shì)老(lǎo)師(shī)說(shuō)的(de)一(yī)句話(huà),“ ♣÷'話(huà)我照(zhào)講,實驗你(nǐ)們照(zhào)做(zuò),但≥₽↕§(dàn)你(nǐ)們多(duō)年(nián)λ¥後肯定記不(bù)住我們今天做(zuò)了(le)什(shén)麽♥✔,隻要(yào)記住一(yī)點,焦利氏稱是(shì)測微(wē♦±↕i)小(xiǎo)力的(de)......”老(lǎo)師(s"☆ hī)的(de)反向操作(zuò)倒也(yě)是(shì)6,不(bù)肖弟(dì)子(zǐ)γ∑✘>把老(lǎo)師(shī)是(shì)誰都(d×∞¥ōu)忘了(le),還(hái)記著(zhe)這(zhè)句話(huà)。
這(zh✘♣è)堂課的(de)這(zhè)部分(fēn),于我,是(shì)最有(yǒu)價值的(de)內(Ω↕₩nèi)容,但(dàn)凡我遇到(dào)測微(wēi)小(xiǎo)力的(de)場(ch€πǎng)景,我就(jiù)可(kě)以快(kuài)速收集整理(lǐ)焦利氏稱的(de'∞)信息......否則,這(zhè)麽冷(lěng)門(mén)的(de)東€≈(dōng)西(xī)有(yǒu)幾個(gè)人(rén)曉得(de)呢(ne)?
回到(dào)我們的(€δ de)T型人(rén)才,這(zhè)涉及一(yī)個(gè)知(zhī)識結構搭≤€"ε建的(de)問(wèn)題,我們得(de)把T這↑≠(zhè)一(yī)橫裡(lǐ)的(de)那(nà)些(xiē)原則性、策$¥略性、共性的(de)東(dōng)西(xī)提煉出來✘≥∞(lái),完善自(zì)己的(de)知(zhī)識≠ 和(hé)認知(zhī)框架,細節嘛,擇需而取。
下(xià)面開(kāi)始正題,概要(yào)講幾個±¥(gè)ECU測試的(de)小(xiǎo)點。
2 系統與軟件(jiàn)測試的(de)區(qū)别
在ECU開¶✔✘(kāi)發測試中,通(tōng)常會(huì)把二者區(qū)分(f∞↔∑↑ēn)開(kāi)來(lái),我們從(cóng)以下(xià)幾個(gè≈α♦)角度來(lái)看(kàn)差異點:
- ε≤ 測試對(duì)象:軟件(jiàn)測試是(shì)面向集成在芯片上(shàng)的(de)軟件₹γ¥(jiàn);系統測試是(shì)針對(duì)包含軟件(jiàn)、硬件(jiàn)與♦•♠✘标定的(de)ECU。
&nbs≠₹∑p;- 測試目的(de):軟件(jiàn)測試是(shì)來(lái)尋找軟件(jiàn)中的(de)錯(cu→♠×↑ò)誤,證明(míng)軟件(jiàn)本身(shēn)符合軟件(β™jiàn)需求;系統測試是(shì)尋找軟件(jiàn)↕₽♠、硬件(jiàn)與标定以及結構件(jiàn)共同組成的 (de)ECU中的(de)錯(cuò)誤,證明(míng)系統符合系統需求。
- 測試環境:軟件(jiàn)測試要(yào)盡量獨立于硬件(jiàn),要(←γyào)通(tōng)過諸如(rú)CANoe發送信号的(de)模拟方式進行(xíng'™÷ε),盡量模拟;系統測試要(yào)盡量真實,真實的(de)線束,真實的(de)負載等。
3 測試的(de)次序
最好(hǎo)呢(ne),從(cóng)V模型的(de)最底層按次序逐♠©★層測上(shàng)來(lái),但(dàn)最好(hǎo)的(de)東(dōngΩ★)西(xī)一(yī)般不(bù)容易得(d≥ e)到(dào),我們基本沒有(yǒu)那(¥nà)麽多(duō)時(shí)間(jiān)來(lái)進行(xíng)這(zhè)™ ☆樣的(de)瀑布式開(kāi)發。
所以得(de)考慮一(yī)些(xiē)大(dà)¶↓&的(de)原則,然後,适當地(dì)并行(xíng)。
& ∏←nbsp; - 單元級測試這(zhè)種非典型測試,最好(hǎo™₹)首先完成,甚至要(yào)通(tōng)過工(gōng)具鏈和(hé)代碼生(₩ ≥φshēng)成進行(xíng)綁定,即不(bù)達到(dào)一(yī)定的(de)條件(™♥ 'jiàn)無法生(shēng)成代碼,早期一(yγ© ī)些(xiē)代碼邏輯的(de)覆蓋測試會(huì)極大(dà)地(dΩ®&ì)減少(shǎo)後期痛苦的(de)返工(gōng)。
- 冒煙(yān)或基本功能(néng)測試是(shì)第二優先級的(de)測試,基本可(kě)用(yòng)也(yě)是(shì)開(kāi)發人(rén)員(yu' ≠án)基本素養的(de)要(yào)求。
- 軟件(jiàn)功能(néng)、系統集成、系統測試可(kě)以在架構變化(huà)、接口曆史問(wèn)題等現(xiàn)實項目情±α®€況的(de)考慮下(xià),進行(xíng)适當的(de)并行(xíng)。
4 測試準入條件(jiàn)
測試≈✔'并不(bù)是(shì)想測就(jiù)能(néng)測的(de),需要(yào)達到(dào)∑σ一(yī)定的(de)條件(jiàn)才能(néng)交給測試團隊,這(zhè)就(jiù)是(☆♣✔shì)測試準入條件(jiàn)。這(zhè)些(xiē)規則對(duì)于大(dà)團隊協λ作(zuò)非常重要(yào)。
- €β® 首先要(yào)看(kàn)前面講的(de)必要(yào)測試次序及測試結果是™ ε(shì)不(bù)是(shì)滿足進行(xíng)更高(gāo)層級測試要(yà★☆ o)求。
- 硬件(jià♦ ₽&n)設備已就(jiù)位,比如(rú),ECU工(gōng)程樣件(jiàn"≠)、線束、外(wài)圍傳感器(qì)、對(duì)手件(jiàn)等。
- 測試台架≥¥可(kě)用(yòng),并已經過校(xiào)準。
- 測試信息輸入完成,比如(rú),軟硬件(jiàn)版本、配置參數(shù)、測試計(jì)劃、交付₩®₽×信息等。
- 标定已到(dào)位。
- 文(wén)檔(需求、測試規範等)完成review與基線化(huà)。
- 軟件(jiàn)交付按流程完成評審。
5 測試準出條件(jiàn)
測試不(bù)↕•↔✘是(shì)想來(lái)就(jiù)來(lái),也(yě)不(bù)是(shì)想走就(ji£βù)走的(de),我們還(hái)需要(yào)準出條件(₽≤jiàn)。
準出其實是(shì)有(yǒu)兩層π≠↔含義的(de),第一(yī)層是(shì)正常結束,第二層是(shì)異常終止。
5.1 正常結束
一(yī)般,我ו們要(yào)同時(shí)滿足以下(xià)條件(jiàn),才可(kě)&∞>進行(xíng)正常結束。
÷∑± - 所有(yǒu)計(jì)劃的(de)測試均已按計(jì)劃執行(xíng)。
- 測試結果的(de✔ β♦)異常項完成了(le)分(fēn)析與評審。
- ★ ✔←發現(xiàn)的(de)bug錄入相(xiàng)應ALM工(gōng)具。
5.2 異常終止
除了(le)流程強制(zhì)外(wài),終止的(de↑β≈)大(dà)部分(fēn)原因是(shì)考慮到(dào σ↔)成本與時(shí)間(jiān),有(yǒu)些(xiē)情況下(xià),測試沒必&>$ 要(yào)繼續進行(xíng)。
©₹- 軟件(jiàn)或ECU質量太差,不(bù)足以支撐測試。
- 測試開(kāi)始後,發現(xiàn)沒有(yǒu)滿足準入條件(jiàn)。
-•☆ 如(rú)果發現(xiàn)的(de)bug會(huì)≠"λ≤影(yǐng)響到(dào)某些(xiē)測試的(de)★∑>∑有(yǒu)效性,則這(zhè)些(xiē)測試要(yào)停下(x©→ià)來(lái)。
- 如(rú)果修複某些(xiē)bug後還(hái¶↔₽→)需要(yào)重測某些(xiē)case,則這(zhè)些(xiē)case在修複後再進行(xíπ☆§ng)。
- 如(rú)果新的(de)硬件(jiàn)或軟件(jiàn)很(hěn)快(kuài)就(jiù)可(k®∞ ě)用(yòng)(很(hěn)快(kuài)是(shì)多(duō)快(kuài)要(yào)具體(tǐ↔£≥€)定義了(le)),所有(yǒu)的(de)測試就(jiù)可(kě) ↕₩停下(xià)來(lái),等待新的(de)軟硬件(jiàn)。
6 測試用(yòng)例的(de)選擇
開(kāi)始測試↑≠✔↓之前,我們多(duō)數(shù)會(huì)有(yǒu)一(yī)α♥個(gè)測試用(yòng)例庫,每版本都(dōu)全測自(zì)然是(shì)帶來(lái)高(∞"'gāo)成本和(hé)長(cháng)周期,因此,用(yòng)例是(shì)需要(≥£yào)被選擇的(de),也(yě)就(jiù)是(shì'≈)我們總說(shuō)的(de)Delta測試。
- 産品本身(shēn)的(de)風(fēng)險高(gāo)低(dī),對(duì)于ASIL等級較高(gāo)的(de)産品,要(yào)>✘₩♥強制(zhì)做(zuò)一(yī)些(xiē)關鍵功能(néng)測試。
-©φ feature的(de)實現(xiàn)情況。
- 已知(zhī)的(de)軟硬件(jiàn)變化(huà)。
- 工(gōng)作(zuò)量評估。
- 前序版本、相(xiàng)關版本的(de)測試狀态。
- 變更對(duì)未更改部分(fēn)的(de)影(yǐng)響。
- 不(bù)同項目變體(tǐ)之間(jiān)的(de)調度策略。
- 對(duì)于這(zhè)類← σ∑主觀及經驗屬性較大(dà)的(de)決策×★♥,每個(gè)未執行(xíng)的(de)測試用(yòng)例最好(hε₽≤<ǎo)都(dōu)有(yǒu)一(yī)個(gè)的(de)記錄下(xià)來(lái)的(de)理(lǐ)由。
除了(le)Delta測試,全功能(néng)測試的(de)策略也(yě)應被制(zhì)定出來∑∏$(lái),比如(rú),一(yī)年(nián)至少(shǎo)一(yγε★ī)次全功能(néng),SOP前完成一(yī)次全功能(néng),平台軟件(jiàn>®φ)升級後進行(xíng)一(yī)次全功能(néng),發 ™₹版超過5版之後進行(xíng)一(yī)次全功能(néng),硬件(∑¥jiàn)有(yǒu)變化(huà)時(shí)要(yào)進行(xín<σg)一(yī)次全功能(néng)......
7 測試管理(lǐ)
測試是(shì)一(y©¥<←ī)項複雜(zá)冗長(cháng)的(de)工(gōng)作(zuò←✘),必要(yào)的(de)管理(lǐ)是(shì)必要(yào)的(de)。
7.1 測試管理(lǐ)
測試管±γ☆理(lǐ)的(de)目标是(shì),根據測試ε↔計(jì)劃獲取相(xiàng)應的(de)測試交付物(wù)(例如(rú),測試規範、測試執行(xíng)、測試報(Ω bào)告、測試評審、缺陷提交等),并且要(yào)保證交付能(néng)滿足項目進度∏®♥中定義的(de)裡(lǐ)程碑。
7.2 測試資源
交付物(w≈ù)能(néng)夠及時(shí)獲取的(de)一(yī)個(gè)大(dà)前提是(©ε←↓shì)測試資源能(néng)夠得(de)到(dào)滿足,而測試資源包括®↓人(rén)員(yuán)的(de)能(néng)力、測試≥↓÷π設備、測試樣件(jiàn)等。
7.3 測試調度
為(wèi)了(le)盡早确定可(kě)能(néng)的(de)退出∞≤<條件(jiàn),必須首先執行(xíng)失敗概率更高(gāo)的(de)測試,比如(rú),依次按照(zhào)以下(xià)次序進行(xíng)。
-¥ β₽ bug重新測試
- 測試新功能(néng)
- 測試修改或優化(huà)的(de)功能(néng)
∏ ↕∏ - 未改變feature的(de)測試(回歸測試)
7.4 測試計(jì)劃和(hé)監&÷控
基于項目進度要(yào)求δπ♠以及“測試評估”和(hé)“測試調度”的(de)結果,ε₽∏我們就(jiù)能(néng)夠給出測試階段完成的(de)截止日(r± ®ì)期,從(cóng)而得(de)出詳細的(de)計(jì)劃。
計(jì)λ→劃所需的(de)詳細程度取決于項目的(de)複雜(zá)性和(hé)所涉及的(d€ e)測試人(rén)員(yuán)的(de)數(shù)量。
8 雙向追溯性和(hé)測試覆蓋率
每一(yī)條系統或軟件(jiàn₩£¶)的(de)可(kě)測試需求都(dōu)需要(yào)被至少(shǎo&Ω∑>)一(yī)個(gè)測試用(yòng)例強制(zhì)覆蓋。為(wèi)了(le)檢查測試覆蓋率,測試報(bà→ o)告、測試規範和(hé)相(xiàng)應需求之間(jiān)的(de)可(kě)追溯性可ε$(kě)借助相(xiàng)應的(de)需求覆↓π↔←蓋率工(gōng)具,如(rú)Reqtify。
←∑™如(rú)果測試覆蓋不(bù)完整,則需要(yφ♣"ào)将信息暴露給項目層面,并完成風(fēng)險評估與偏差Ω 許可(kě)。
轉自(zì)汽車(chē)ECU開(kā•§±≤i)發