態(tài)測(cè)試中的應(yīng)用與實(shí)戰(zhàn)指南)
1. 項(xiàng)目概述當(dāng)Simulink模型測(cè)試遇上TPT在汽車電子、航空航天這些對(duì)安全要求極高的領(lǐng)域Simulink模型早已成為控制算法設(shè)計(jì)的標(biāo)準(zhǔn)語(yǔ)言。但模型建得再漂亮邏輯再清晰最終能不能在真實(shí)的ECU電子控制單元里跑得穩(wěn)、不出錯(cuò)還得靠測(cè)試說(shuō)了算。我見過(guò)太多項(xiàng)目前期建模風(fēng)風(fēng)火火一到測(cè)試驗(yàn)證階段就卡殼手動(dòng)寫測(cè)試用例耗時(shí)耗力覆蓋不全信號(hào)激勵(lì)不知道怎么給才合理測(cè)試執(zhí)行和結(jié)果分析更是兩眼一抹黑全憑感覺。這直接導(dǎo)致項(xiàng)目后期返工不斷甚至帶著潛在缺陷交付風(fēng)險(xiǎn)極高。這時(shí)候一個(gè)專業(yè)的、能跟Simulink深度打通的模型動(dòng)態(tài)測(cè)試工具就顯得至關(guān)重要。標(biāo)題里提到的TPTTime Partition Testing正是這個(gè)領(lǐng)域的佼佼者。它不是一個(gè)簡(jiǎn)單的腳本錄制回放工具而是一套基于時(shí)間分區(qū)測(cè)試方法的完整測(cè)試工程平臺(tái)。簡(jiǎn)單來(lái)說(shuō)TPT能幫你把測(cè)試這件事從“手工作坊”升級(jí)到“自動(dòng)化流水線”。它不僅能自動(dòng)分析你的Simulink/TargetLink模型接口還能支持你手動(dòng)設(shè)計(jì)高覆蓋率的測(cè)試用例更厲害的是它能基于模型本身的結(jié)構(gòu)和需求自動(dòng)生成海量的測(cè)試用例并通過(guò)TASMOTPT Automated Search-based Model Optimization這類優(yōu)化算法找到那些最有可能暴露缺陷的“刁鉆”測(cè)試場(chǎng)景。如果你正在為復(fù)雜的Simulink模型測(cè)試發(fā)愁感覺手動(dòng)測(cè)試效率低下、自動(dòng)化無(wú)從下手或者苦于測(cè)試用例的覆蓋率和質(zhì)量無(wú)法量化評(píng)估那么深入了解TPT如何為你的測(cè)試流程“助力”將是一個(gè)非常有價(jià)值的切入點(diǎn)。接下來(lái)我就結(jié)合多年的工程實(shí)踐拆解一下如何利用TPT高效地進(jìn)行Simulink模型測(cè)試。2. 核心思路構(gòu)建模型在環(huán)的自動(dòng)化測(cè)試閉環(huán)傳統(tǒng)的Simulink模型測(cè)試很多團(tuán)隊(duì)還停留在“模型仿真肉眼觀察波形”的階段。工程師在Simulink里搭建測(cè)試環(huán)境用Signal Builder或者手動(dòng)腳本構(gòu)造輸入運(yùn)行仿真后盯著Scope或者Data Inspector的曲線憑經(jīng)驗(yàn)判斷輸出是否符合預(yù)期。這種方法對(duì)于簡(jiǎn)單模型或許可行但對(duì)于動(dòng)輒上百個(gè)輸入輸出、邏輯狀態(tài)復(fù)雜的控制器模型其弊端顯而易見效率低、主觀性強(qiáng)、可重復(fù)性差、覆蓋率無(wú)法保證。TPT帶來(lái)的核心思路轉(zhuǎn)變是構(gòu)建一個(gè)“模型在環(huán)”Model-in-the-Loop, MiL的自動(dòng)化測(cè)試閉環(huán)。這個(gè)閉環(huán)的起點(diǎn)是你的Simulink/TargetLink模型終點(diǎn)是一份清晰、客觀、可追溯的測(cè)試報(bào)告。TPT在其中扮演了測(cè)試設(shè)計(jì)、執(zhí)行、評(píng)估和管理的中心角色。2.1 從“測(cè)試執(zhí)行”到“測(cè)試工程”TPT將測(cè)試提升到了“工程”的高度。它不僅僅關(guān)心“怎么跑測(cè)試”更關(guān)心“測(cè)試什么”、“為什么要這么測(cè)”以及“測(cè)得怎么樣”。其工作流通常包含以下幾個(gè)關(guān)鍵階段測(cè)試需求分析與管理雖然標(biāo)題未直接提及但這是高效測(cè)試的基石。TPT支持將文本需求或需求管理工具如DOORS中的條目導(dǎo)入并與后續(xù)的測(cè)試用例、評(píng)估準(zhǔn)則直接關(guān)聯(lián)。這意味著你可以清晰地追蹤每一個(gè)測(cè)試用例是為了驗(yàn)證哪一條需求實(shí)現(xiàn)了需求到測(cè)試的可追溯性。被測(cè)對(duì)象分析與接口建立這是TPT與Simulink無(wú)縫對(duì)接的第一步。TPT能自動(dòng)解析.slx或.mdl文件提取模型的所有輸入、輸出、參數(shù)接口包括信號(hào)名稱、數(shù)據(jù)類型、維度、采樣率等。這個(gè)自動(dòng)化的過(guò)程避免了手動(dòng)配置接口可能帶來(lái)的錯(cuò)誤確保了測(cè)試環(huán)境與模型定義的一致性。測(cè)試用例設(shè)計(jì)與實(shí)現(xiàn)這是TPT的核心能力區(qū)既支持圖形化的手動(dòng)設(shè)計(jì)也支持強(qiáng)大的自動(dòng)生成。測(cè)試自動(dòng)化執(zhí)行與評(píng)估TPT可以自動(dòng)調(diào)用Simulink進(jìn)行仿真注入設(shè)計(jì)好的測(cè)試用例并采集輸出結(jié)果。更重要的是它允許你定義自動(dòng)化的評(píng)估準(zhǔn)則Assessment用形式化的邏輯而非肉眼來(lái)判斷測(cè)試是否通過(guò)。測(cè)試報(bào)告與覆蓋率分析自動(dòng)生成詳細(xì)的測(cè)試報(bào)告并可以集成Simulink Design Verifier等工具進(jìn)行模型覆蓋率如條件覆蓋、判定覆蓋分析量化測(cè)試的完備性。這個(gè)閉環(huán)思路確保了測(cè)試活動(dòng)是系統(tǒng)化的、自動(dòng)化的、且質(zhì)量可度量的這正是“高效”二字的根本體現(xiàn)。2.2 為什么是TPT關(guān)鍵優(yōu)勢(shì)解析市面上也有一些其他測(cè)試工具為什么TPT在模型動(dòng)態(tài)測(cè)試領(lǐng)域備受青睞除了其開創(chuàng)性的時(shí)間分區(qū)測(cè)試方法還有幾個(gè)工程上的關(guān)鍵優(yōu)勢(shì)原生Simulink集成TPT通過(guò)MATLAB API與Simulink深度集成無(wú)需復(fù)雜的中間文件轉(zhuǎn)換。測(cè)試用例可以直接映射到Simulink模型的輸入端口仿真結(jié)果也能被直接采集。這種緊密集成大大減少了環(huán)境搭建的復(fù)雜度提高了測(cè)試執(zhí)行的可靠性。圖形化與形式化結(jié)合TPT的測(cè)試用例設(shè)計(jì)既支持直觀的圖形化拖拽時(shí)間分區(qū)圖、狀態(tài)機(jī)也支持編寫形式化的腳本如TPT的專屬語(yǔ)言。圖形化方式易于理解和溝通適合描述信號(hào)時(shí)序邏輯形式化腳本則提供了極高的靈活性和復(fù)雜性適合實(shí)現(xiàn)復(fù)雜的算法或數(shù)據(jù)處理。兩者結(jié)合滿足了不同層次、不同場(chǎng)景的測(cè)試設(shè)計(jì)需求。測(cè)試用例的復(fù)用性在TPT中設(shè)計(jì)的測(cè)試用例不僅可用于MiL測(cè)試在稍作適配主要是接口映射和時(shí)序調(diào)整后可以復(fù)用于軟件在環(huán)SiL、處理器在環(huán)PiL乃至硬件在環(huán)HiL測(cè)試。這種“一次設(shè)計(jì)多次使用”的特性極大地保護(hù)了測(cè)試資產(chǎn)提升了整個(gè)V流程的測(cè)試效率。專注于功能測(cè)試TPT的核心是功能行為測(cè)試。它通過(guò)設(shè)計(jì)各種輸入場(chǎng)景來(lái)驗(yàn)證模型在功能上是否表現(xiàn)正確。這與形式化驗(yàn)證、靜態(tài)代碼分析等手段形成了有效互補(bǔ)共同構(gòu)成了完整的模型驗(yàn)證體系。3. 實(shí)操流程拆解從模型導(dǎo)入到報(bào)告生成理解了核心思路我們來(lái)看具體的操作流程。我將以一個(gè)典型的汽車控制器模型比如一個(gè)簡(jiǎn)單的電機(jī)扭矩控制模塊為例演示如何使用TPT完成一個(gè)完整的測(cè)試周期。3.1 第一步項(xiàng)目創(chuàng)建與模型接口分析啟動(dòng)TPT后首先創(chuàng)建一個(gè)新項(xiàng)目。項(xiàng)目創(chuàng)建后最關(guān)鍵的一步就是導(dǎo)入被測(cè)對(duì)象。導(dǎo)入Simulink模型在TPT的“Platform”配置中選擇“Simulink”作為執(zhí)行平臺(tái)。然后通過(guò)“Import”功能直接選擇你的.slx模型文件。TPT會(huì)自動(dòng)啟動(dòng)MATLAB/Simulink需預(yù)先安裝并配置好路徑并加載該模型。自動(dòng)接口分析模型加載成功后TPT的“Interface”視圖會(huì)自動(dòng)列出模型的所有頂層輸入端口Inport、輸出端口Outport以及可調(diào)參數(shù)Tunable Parameters。你會(huì)看到每個(gè)信號(hào)的名稱、數(shù)據(jù)類型如double、uint16、維度如[1x1]標(biāo)量或[3x1]向量等信息。注意確保你的Simulink模型在導(dǎo)入前已經(jīng)成功編譯過(guò)CtrlD且所有模塊庫(kù)路徑都已解析。否則TPT可能無(wú)法正確識(shí)別所有接口。對(duì)于使用大量自定義庫(kù)或引用子系統(tǒng)的模型建議先在Simulink中完整運(yùn)行一次確保無(wú)錯(cuò)誤。接口檢查與映射自動(dòng)導(dǎo)入的接口通常不需要修改但你需要仔細(xì)檢查。特別是對(duì)于Bus總線信號(hào)TPT會(huì)將其展開為單個(gè)信號(hào)。你需要確認(rèn)這些展開是否符合你的測(cè)試意圖。確認(rèn)無(wú)誤后這些接口就成為了TPT測(cè)試用例中信號(hào)變量的基礎(chǔ)。3.2 第二步手動(dòng)設(shè)計(jì)測(cè)試用例——時(shí)間分區(qū)法實(shí)戰(zhàn)手動(dòng)設(shè)計(jì)測(cè)試用例是測(cè)試工程師的基本功TPT提供了強(qiáng)大的圖形化設(shè)計(jì)器其核心思想是“時(shí)間分區(qū)測(cè)試法”。這種方法將測(cè)試時(shí)間軸劃分為不同的區(qū)間分區(qū)在每個(gè)分區(qū)內(nèi)定義信號(hào)的行為。假設(shè)我們要測(cè)試一個(gè)電機(jī)的扭矩請(qǐng)求模塊輸入是踏板開度0-100%和車輛模式駕駛、經(jīng)濟(jì)、運(yùn)動(dòng)輸出是請(qǐng)求扭矩。創(chuàng)建測(cè)試用例在TPT的“Test Cases”視圖中新建一個(gè)測(cè)試用例命名為“正常駕駛_全踏板開度線性增加”。使用時(shí)間分區(qū)視圖在圖形化編輯器中你會(huì)看到一條水平的時(shí)間軸。首先在0秒處定義初始狀態(tài)車輛模式 駕駛踏板開度 0%。然后在時(shí)間軸上點(diǎn)擊創(chuàng)建一個(gè)時(shí)間分區(qū)比如從0秒到5秒。在這個(gè)分區(qū)內(nèi)你可以定義信號(hào)的變化規(guī)律。對(duì)于踏板開度你可以選擇“Ramp”斜坡函數(shù)設(shè)置從0%線性增加到100%。再創(chuàng)建一個(gè)從5秒到10秒的分區(qū)定義踏板開度從100%線性減少到0%。對(duì)于車輛模式這種離散信號(hào)你可以在特定時(shí)間點(diǎn)如第3秒插入一個(gè)階躍變化將其從“駕駛”切換到“運(yùn)動(dòng)”。定義評(píng)估準(zhǔn)則Assessment測(cè)試用例設(shè)計(jì)好后我們還需要定義如何判斷測(cè)試通過(guò)。在“Assessment”標(biāo)簽頁(yè)我們可以添加自動(dòng)檢查點(diǎn)。例如我們可以添加一條規(guī)則“在整個(gè)測(cè)試期間請(qǐng)求扭矩輸出必須始終大于等于0且小于等于最大扭矩值如300Nm”。這可以通過(guò)TPT的評(píng)估腳本語(yǔ)言來(lái)實(shí)現(xiàn)類似于always (Torque_Request 0 and Torque_Request 300)。還可以添加更復(fù)雜的規(guī)則比如“當(dāng)車輛模式為‘運(yùn)動(dòng)’時(shí)請(qǐng)求扭矩對(duì)踏板開度的響應(yīng)增益應(yīng)為經(jīng)濟(jì)模式的1.2倍”。這就需要結(jié)合信號(hào)在不同時(shí)間分區(qū)的值進(jìn)行邏輯判斷。圖形化的評(píng)估條件編輯器讓這些規(guī)則的編寫變得直觀。定義好的評(píng)估準(zhǔn)則會(huì)在測(cè)試執(zhí)行后自動(dòng)運(yùn)行并給出通過(guò)/失敗的結(jié)果。這種手動(dòng)設(shè)計(jì)的方式非常適合實(shí)現(xiàn)那些基于需求、已知場(chǎng)景或邊界條件的測(cè)試用例例如功能正常流、異常處理、邊界值測(cè)試等。3.3 第三步自動(dòng)生成測(cè)試用例——TASMO與優(yōu)化搜索對(duì)于復(fù)雜的模型手動(dòng)設(shè)計(jì)用例難以達(dá)到高覆蓋率尤其是要觸發(fā)某些深層次的、罕見的錯(cuò)誤條件。這時(shí)TPT的自動(dòng)測(cè)試生成功能就派上用場(chǎng)了其中TASMO是一個(gè)重要的技術(shù)。TASMOTPT Automated Search-based Model Optimization本質(zhì)上是一種基于搜索的優(yōu)化算法。它的目標(biāo)不是隨機(jī)生成大量測(cè)試數(shù)據(jù)而是有導(dǎo)向地生成能優(yōu)化特定目標(biāo)的測(cè)試用例。這個(gè)目標(biāo)可以是最大化模型覆蓋率如條件覆蓋率、判定覆蓋率、MC/DC覆蓋率。觸發(fā)特定的模型行為如讓某個(gè)Stateflow狀態(tài)機(jī)的某個(gè)特定狀態(tài)被激活。驗(yàn)證或否定某個(gè)屬性例如證明“系統(tǒng)永遠(yuǎn)不會(huì)進(jìn)入某個(gè)非安全狀態(tài)”。操作流程如下設(shè)置優(yōu)化目標(biāo)在TPT中你可以創(chuàng)建一個(gè)“Automated Test Case”并選擇“Optimization”方法。在配置中你需要指定優(yōu)化目標(biāo)。例如你可以鏈接Simulink Design Verifier將目標(biāo)設(shè)置為“最大化條件覆蓋率”。定義搜索空間與約束你需要告訴TASMO輸入信號(hào)可以在什么范圍內(nèi)變化。例如踏板開度的范圍是[0, 100]車輛模式是枚舉集合{駕駛 經(jīng)濟(jì) 運(yùn)動(dòng)}。你還可以施加約束比如“經(jīng)濟(jì)模式下最大請(qǐng)求扭矩不超過(guò)200Nm”這可以引導(dǎo)搜索避免生成大量無(wú)意義的違反物理約束的用例。運(yùn)行自動(dòng)生成啟動(dòng)TASMO。它會(huì)將你的Simulink模型當(dāng)作一個(gè)“黑盒”或“灰盒”如果能獲取內(nèi)部結(jié)構(gòu)信息運(yùn)行迭代搜索算法如遺傳算法、模擬退火等。在每一代迭代中它都會(huì)生成一批測(cè)試輸入運(yùn)行仿真計(jì)算覆蓋率或與目標(biāo)的距離然后根據(jù)結(jié)果生成下一批更有可能提高覆蓋率的測(cè)試輸入。結(jié)果分析與用例導(dǎo)出搜索完成后TPT會(huì)展示找到的能最優(yōu)實(shí)現(xiàn)目標(biāo)的測(cè)試用例集以及達(dá)到的覆蓋率。你可以審查這些自動(dòng)生成的用例它們往往包含一些意想不到的信號(hào)組合和時(shí)序能夠有效地補(bǔ)充手動(dòng)用例的不足。你可以將這些用例導(dǎo)出并固化到你的測(cè)試套件中。實(shí)操心得自動(dòng)生成測(cè)試用例非常強(qiáng)大但絕不能完全依賴。它生成的用例有時(shí)在業(yè)務(wù)邏輯上顯得“怪異”或不可解釋。最佳實(shí)踐是結(jié)合使用用手動(dòng)用例覆蓋核心功能、正常場(chǎng)景和關(guān)鍵異常用自動(dòng)生成用例去“查漏補(bǔ)缺”沖擊高覆蓋率發(fā)現(xiàn)那些難以預(yù)料的缺陷。同時(shí)自動(dòng)生成通常比較耗時(shí)適合在夜間或空閑的CI/CD流水線中運(yùn)行。3.4 第四步測(cè)試執(zhí)行、評(píng)估與報(bào)告設(shè)計(jì)好測(cè)試用例無(wú)論是手動(dòng)還是自動(dòng)后就可以批量執(zhí)行了。配置執(zhí)行環(huán)境確保TPT與MATLAB/Simulink的連接正常??梢耘渲梅抡鎱?shù)如固定步長(zhǎng)、仿真時(shí)長(zhǎng)等最好與模型本身的配置保持一致。批量執(zhí)行在TPT中可以選中一個(gè)或多個(gè)測(cè)試用例甚至整個(gè)測(cè)試文件夾一鍵執(zhí)行。TPT會(huì)自動(dòng)依次調(diào)用Simulink注入測(cè)試數(shù)據(jù)運(yùn)行仿真并收集輸出信號(hào)和評(píng)估結(jié)果。結(jié)果查看與分析信號(hào)視圖可以疊加查看所有測(cè)試用例的輸入輸出信號(hào)曲線方便對(duì)比分析。評(píng)估結(jié)果視圖清晰地列出每個(gè)測(cè)試用例中每條評(píng)估準(zhǔn)則的通過(guò)/失敗狀態(tài)。對(duì)于失敗的用例可以鉆取查看具體是哪個(gè)時(shí)間點(diǎn)、哪條規(guī)則未滿足。覆蓋率報(bào)告如果集成了Simulink Design VerifierTPT可以生成覆蓋率報(bào)告用紅綠色高亮顯示模型中哪些部分已被覆蓋哪些尚未被覆蓋為補(bǔ)充測(cè)試用例提供明確指導(dǎo)。生成測(cè)試報(bào)告TPT支持生成格式規(guī)范、內(nèi)容詳盡的測(cè)試報(bào)告HTML、PDF、Word等。報(bào)告內(nèi)容包括項(xiàng)目信息、測(cè)試環(huán)境、每個(gè)測(cè)試用例的詳細(xì)描述、輸入輸出信號(hào)圖、評(píng)估結(jié)果、覆蓋率摘要等。這份報(bào)告是測(cè)試活動(dòng)最重要的交付物之一可用于評(píng)審、審計(jì)和歸檔。4. 高級(jí)技巧與避坑指南在實(shí)際項(xiàng)目中用好TPT還需要掌握一些進(jìn)階技巧并避開常見的“坑”。4.1 測(cè)試用例的模塊化與復(fù)用對(duì)于大型項(xiàng)目測(cè)試用例會(huì)越來(lái)越多。良好的組織管理至關(guān)重要。使用測(cè)試用例目錄結(jié)構(gòu)按照功能模塊、測(cè)試類型正常流、異常流、邊界測(cè)試來(lái)組織測(cè)試用例文件夾。創(chuàng)建可復(fù)用的測(cè)試序列Sequence如果某個(gè)信號(hào)模式比如一個(gè)標(biāo)準(zhǔn)的PWM波形在多個(gè)測(cè)試用例中都會(huì)用到可以將其創(chuàng)建為一個(gè)獨(dú)立的“Sequence”。在其他測(cè)試用例中可以直接引用這個(gè)Sequence而不是重復(fù)繪制。這大大提升了設(shè)計(jì)效率和一致性。參數(shù)化測(cè)試TPT支持變量和參數(shù)。你可以將測(cè)試用例中的常量如時(shí)間點(diǎn)、信號(hào)幅值定義為參數(shù)。然后通過(guò)創(chuàng)建“測(cè)試集”Test Set并配置不同的參數(shù)組合來(lái)自動(dòng)衍生出多個(gè)具體的測(cè)試實(shí)例。這對(duì)于邊界值測(cè)試和等價(jià)類測(cè)試特別高效。4.2 處理復(fù)雜模型與總線信號(hào)嵌套子系統(tǒng)與模型引用對(duì)于包含多層嵌套子系統(tǒng)或使用Model Reference的復(fù)雜模型TPT在接口分析時(shí)可能需要更長(zhǎng)時(shí)間。建議在導(dǎo)入前在Simulink中確保所有引用模型路徑正確并且模型已成功編譯。對(duì)于非常龐大的模型可以考慮分模塊進(jìn)行測(cè)試??偩€Bus信號(hào)TPT能很好地處理Bus信號(hào)會(huì)將其扁平化展開。但在設(shè)計(jì)測(cè)試用例時(shí)你需要對(duì)總線內(nèi)的每個(gè)元素單獨(dú)賦值。為了清晰可以在TPT中創(chuàng)建與Simulink中對(duì)應(yīng)的Bus結(jié)構(gòu)變量這樣管理起來(lái)更直觀。注意總線信號(hào)采樣率的一致性。4.3 性能優(yōu)化與持續(xù)集成仿真加速當(dāng)測(cè)試用例成百上千時(shí)仿真執(zhí)行時(shí)間會(huì)成為瓶頸??梢钥紤]在Simulink中使用加速模式Accelerator或快速加速模式Rapid Accelerator。優(yōu)化模型本身減少不必要的顯示模塊如Scope和日志記錄。如果硬件允許利用TPT的分布式執(zhí)行功能將測(cè)試用例分發(fā)到多臺(tái)機(jī)器上并行執(zhí)行。集成到CI/CD流水線TPT支持命令行接口。你可以將TPT的測(cè)試工程、測(cè)試用例執(zhí)行和報(bào)告生成過(guò)程編寫成腳本如Python或批處理腳本。然后將其集成到Jenkins、GitLab CI等持續(xù)集成工具中。這樣每次模型代碼提交后都能自動(dòng)觸發(fā)一輪完整的MiL測(cè)試快速獲得質(zhì)量反饋。4.4 常見問題排查TPT無(wú)法啟動(dòng)Simulink或模型加載失敗檢查確認(rèn)MATLAB安裝路徑已正確添加到系統(tǒng)環(huán)境變量且TPT中配置的MATLAB版本與模型兼容。檢查在TPT中手動(dòng)執(zhí)行一次“Start MATLAB”命令看能否正常啟動(dòng)。確保MATLAB的許可證有效。檢查模型文件路徑不要包含中文或特殊字符。嘗試在MATLAB中直接打開該模型確保無(wú)報(bào)錯(cuò)。仿真結(jié)果與預(yù)期不符但模型在Simulink中單獨(dú)運(yùn)行正常檢查TPT中配置的仿真步長(zhǎng)、求解器類型是否與Simulink模型配置一致。不一致會(huì)導(dǎo)致數(shù)值積分結(jié)果出現(xiàn)微小差異可能被敏感的評(píng)估準(zhǔn)則捕捉到。檢查測(cè)試用例的初始值是否設(shè)置正確。TPT在仿真開始前會(huì)施加初始值如果與模型內(nèi)部狀態(tài)初始值沖突可能導(dǎo)致問題。檢查模型是否有隨機(jī)元素如隨機(jī)數(shù)生成器這會(huì)導(dǎo)致每次運(yùn)行結(jié)果不同。在測(cè)試中通常需要固定隨機(jī)種子以確保結(jié)果可復(fù)現(xiàn)。自動(dòng)生成的測(cè)試用例無(wú)法達(dá)到預(yù)期覆蓋率檢查搜索空間定義是否合理是否過(guò)于寬泛或過(guò)于狹窄導(dǎo)致算法難以搜索檢查優(yōu)化目標(biāo)是否設(shè)置得當(dāng)例如對(duì)于狀態(tài)機(jī)直接優(yōu)化“狀態(tài)覆蓋率”可能比優(yōu)化“條件覆蓋率”更有效。檢查模型本身是否存在不可達(dá)的邏輯有些代碼或狀態(tài)可能由于設(shè)計(jì)錯(cuò)誤而永遠(yuǎn)無(wú)法被執(zhí)行這時(shí)覆蓋率無(wú)法達(dá)到100%是正常的。Simulink Design Verifier的“Design Error Detection”功能可以幫助發(fā)現(xiàn)這類問題。嘗試增加迭代次數(shù)或調(diào)整優(yōu)化算法的參數(shù)如種群大小、變異率等。TASMO提供了這些高級(jí)參數(shù)供有經(jīng)驗(yàn)的用戶調(diào)優(yōu)。5. 從MiL到HiL測(cè)試資產(chǎn)的復(fù)用與擴(kuò)展TPT的價(jià)值不僅限于MiL測(cè)試。如前所述其測(cè)試用例設(shè)計(jì)是平臺(tái)無(wú)關(guān)的。當(dāng)你完成MiL測(cè)試后隨著項(xiàng)目推進(jìn)需要進(jìn)行軟件在環(huán)SiL將生成的代碼與模型在PC上聯(lián)合仿真、處理器在環(huán)PiL乃至硬件在環(huán)HiL測(cè)試時(shí)TPT測(cè)試用例可以高度復(fù)用。遷移的關(guān)鍵在于平臺(tái)適配接口映射在HiL測(cè)試中模型的輸入輸出可能變成了CAN信號(hào)、模擬量電壓或數(shù)字量IO。在TPT中你需要?jiǎng)?chuàng)建一個(gè)新的“Platform”配置例如選擇“CANoe”或“dSPACE”然后將TPT測(cè)試用例中的信號(hào)變量重新映射到HiL平臺(tái)上的真實(shí)物理通道或總線信號(hào)。時(shí)序調(diào)整MiL仿真是理想化的實(shí)時(shí)性要求不高。但在HiL中需要考慮真實(shí)的硬件IO延遲、總線通信周期等。你可能需要調(diào)整測(cè)試用例中的時(shí)間分區(qū)和信號(hào)變化時(shí)序以匹配HiL系統(tǒng)的實(shí)時(shí)性約束。評(píng)估準(zhǔn)則適配MiL中的評(píng)估準(zhǔn)則可能直接比較浮點(diǎn)數(shù)。在HiL中由于量化誤差、噪聲等因素可能需要引入容差Tolerance進(jìn)行比較或者使用更復(fù)雜的評(píng)估邏輯。盡管需要一些適配工作但測(cè)試用例的核心邏輯什么時(shí)間給什么激勵(lì)和評(píng)估意圖期望系統(tǒng)產(chǎn)生什么響應(yīng)是完全一致的。這種復(fù)用性避免了在V流程每個(gè)階段都從頭設(shè)計(jì)測(cè)試保證了測(cè)試的一致性并顯著提升了整體效率。在我經(jīng)歷過(guò)的多個(gè)量產(chǎn)車型項(xiàng)目中正是通過(guò)TPT構(gòu)建的這套從MiL到HiL的自動(dòng)化測(cè)試流水線將控制器軟件的系統(tǒng)測(cè)試周期縮短了40%以上并且極大地提升了缺陷發(fā)現(xiàn)的早期率和測(cè)試過(guò)程的可信度。工具本身是強(qiáng)大的但更關(guān)鍵的是將其融入一個(gè)規(guī)范、自動(dòng)化的測(cè)試流程中讓測(cè)試真正成為驅(qū)動(dòng)產(chǎn)品質(zhì)量前進(jìn)的引擎而不是項(xiàng)目后期的絆腳石。