<li id="wkceg"></li>
<rt id="wkceg"><delect id="wkceg"></delect></rt>
<bdo id="wkceg"></bdo>
<strike id="wkceg"><acronym id="wkceg"></acronym></strike>

  • 帳號:
    密碼:
    智動化 / 文章 /

    收集模型測試覆蓋程度度量資料的理由
    [作者 Pat Canny]   2021年07月22日 星期四 瀏覽人次: [5355]

    在以要求為基礎的模擬測試當中,有一部分的設計可能會因為細微的設計錯誤、不完整的測試、或者遺漏的要求而沒有運行。本文以範例闡述三重選擇演算法的設計測試,因為要求的遺漏而被認定為不完整的重要環節。


    對Simulink設計進行有系統的測試,可以幫助確保在產生程式碼之前能夠對設計的預期與非預期行為更有把握。在以要求為基礎的模擬測試當中,有一部分的設計,可能會因為細微的設計錯誤、不完整的測試、或者遺漏的要求而沒有運行。模型測試的覆蓋度可以藉由測量有多少的Simulink設計確實在測試過程中執行,來協助確認這些測試的缺口。


    要求遺漏是在以要求為基礎測試過程中模型測試覆蓋不完整的一種常見的原因。這種類型的模型測試覆蓋遺漏,通常是因為有些設計元件無法被追溯到更高層級要求。收集模型測試覆蓋可以協助處理這樣的情況。本文將闡述範例,其中的三重選擇(triplex selection)演算法的設計測試,因為要求的遺漏而被認定為不完整。


    三重選擇演算法:概述與要求

    三重的訊號選擇演算法常使用於航太控制系統軟體。在三重訊號選擇,會由三個獨立感測器「投票」選出一個訊號,然後在飛行器的控制使用這個被選擇出來的訊號。當一個感測器沒有被偵測出任何故障,則該感測器會被視為「有效」。


    在這個範例,要選擇的是飛行器的空速(Airspeed)訊號。空速訊號選擇演算法的要求如下:


    ? HLR_1 從三個感測器選擇空速訊號:當三個空速感測器皆為有效時,飛行控制電腦應選擇三個感測訊號的中間值。


    ? HLR_2 從兩個感測器選擇空速訊號:當只有兩個空速感測器有效時,飛行控制電腦應選擇兩個感測訊號的平均值。


    ? HLR_3 從單一感測器選擇空速訊號:當只有一個空速感測器有效時,飛行控制電腦應選擇有效的訊號。


    圖1呈現了這三項要求在Simulink的執行。



    圖1 : Simulink執行空速訊號選擇演算法。
    圖1 : Simulink執行空速訊號選擇演算法。

    執行演算法並收集模型測試覆蓋測量資料

    在模型內一個專用的子系統執行每一項要求,並且為每一次的執行撰寫單獨的測試案例。在執行這些測試之前,需要確認模型測試覆蓋的測量資料有被記錄下來。


    模型測試覆蓋的測量資料可以是個別的(為單一測試收集)或累計的(多次測試的總計)。我們會收集以要求為基礎的測試的累計覆蓋來衡量設計是否在完整的測試套件完全地執行。


    模型測試覆蓋的衡量有許多類型,像是執行覆蓋(execution coverage)、判斷覆蓋(decision coverage)、訊號範圍覆蓋(signal rage coverage)、以及關係邊界覆蓋(relational boundary coverage)。在這個範例,我們關心的是判斷覆蓋,也就是一種測量在模型中執行所有可能的邏輯結果來進行判斷的結構覆蓋。如果所有被送到切換開關(switch)的輸入值,在模擬當中至少被選擇了一次,則像是Switch blocks等Simulink模型物件會接收完整的判斷覆蓋。


    我們使用Simulink工具列Apps頁籤下的Coverage Analyzer app啟動模型測試覆蓋的收集(圖2)。



    圖2 : Simulink工具列的Apps頁籤。
    圖2 : Simulink工具列的Apps頁籤。

    開啟了Coverage Analyzer app,可以使用Coverage頁籤下Coverage ON/OFF按鈕來的開啟覆蓋資料的收集。此外,也使用Cumulative Collection按鈕來啟動累計的覆蓋。接著在覆蓋的收集被啟動的狀態下按下現在被標記為Analyze Coverage 的Play按鈕來模擬模型(圖3)。在每一次的模擬使用不同的測試向量來模擬數次。



    圖3 : 覆蓋收集已被啟用的Coverage Analyzer app。
    圖3 : 覆蓋收集已被啟用的Coverage Analyzer app。

    圖4為覆蓋的結果。綠色標示的區域表示模型測試覆蓋完整,包含每一個子系統內的所有的模型物件,紅色區域則代表覆蓋完整度不足。



    圖4 : 空速訊號選擇演算法的測試覆蓋結果。
    圖4 : 空速訊號選擇演算法的測試覆蓋結果。

    判斷覆蓋似乎在Multiport Switch block遺漏了。為了了解發生的原因,打開Simulink的覆蓋細節(Coverage Details)窗格,檢查個別模塊模型測試覆蓋細節(圖5)。



    圖5 : 打開Simulink覆蓋細節窗格。
    圖5 : 打開Simulink覆蓋細節窗格。

    圖6 : Multiport Switch模塊的覆蓋細節窗格
    圖6 : Multiport Switch模塊的覆蓋細節窗格

    第一個送到Multiport Switch的輸入值在模擬當中從未為0。回想圖1的模型,當時第一個送到Multiport Switch的輸入值為有效訊號的數值。由此可見,並沒有測試到所有的空速訊號皆為無效的案例。


    這項遺漏的模型測試覆蓋是因為缺少了更高層級的要求。沒有要求指出在未有任何空速訊號為有效的情況下,仍然必須選擇出訊號。然而,看起來設計已經納入了處理這類情況的邏輯。


    因此,加上了這項遺漏的要求:


    ? HLR_4 無有效感測器時的空速訊號選擇:當三個空速訊號皆為無效時,飛行控制電腦應暫停空速訊號的選擇。


    接下來,加上一個新的測試案例並重新執行測試。這時達到完整的判斷覆蓋(圖7)。



    圖7 : 加上新的要求後的覆蓋結果。
    圖7 : 加上新的要求後的覆蓋結果。

    如同這個範例所示,模型測試的覆蓋是一項確認在以要求為基礎的測試當中是否有要求遺漏的可靠方法。可以使用模型測試覆蓋的結果,以確保設計之中正確部位的運行。


    另一種模型測試覆蓋不完整常見的原因為死邏輯(dead logic)。「死邏輯」指的是Simulink模型或Stateflow圖表,其中任何一個部分從未在模擬過程中被執行,例如一個送到Switch模塊的輸入值可能從未被選擇,或者一個狀態機的轉換可能從未被採用。


    最佳的實作途徑是在編寫或執行以要求為基礎的測試之前,先使用Simulink Design Verifier(為Simulink設計驗證工具)來分析模型,並且解決死邏輯的情況。也可以使用Simulink Check(為Simulink驗證標準檢測工具)裡面的Model Slicer功能,進行死邏輯的調整或除錯。


    (本文由鈦思科技提供;作者Pat Canny任職於MathWorks公司)


    相關文章
    ? 用科技滅火:前線急救人員的生命徵象與環境監測
    ? 221e:從AI驅動感測器模組Muse獲得的啟發
    ? 以霍爾效應電流感測器創新簡化高電壓感測
    ? 利用邊緣運算節約能源和提升永續性
    ? NASA太空飛行器任務開發光學導航軟體
    comments powered by Disqus
      相關新聞
    » 臺達攜手珍古德協會與海科館 三方合作推動珊瑚復育教育
    » IPAC'25國際粒子加速器會議首度在臺灣登場
    » 杜邦公佈其計畫分拆的電子業務獨立公司Qnity品牌識別
    » 意法半導體推出高整合低位電流感測放大器,簡化高精度量測設計
    » 意法半導體推出創新記憶體技術,加速新世代車用微控制器開發與演進
      相關產品
    » 意法半導體推出適用於數位鑰匙應用的新一代車用 NFC 讀寫器 擴展 ST25R 高效能產品系列
    » 適用于高頻功率應用的 IXD2012NTR 高壓側和低壓側柵極驅動器
    » KSC XA輕觸開關提供聲音柔和的輕觸回饋,增強用戶體驗
    » 首款採用 DO-214AB 緊湊型封裝的 2kA 保護晶閘管
    » 意法半導體推出新款智慧型功率開關,具備小巧外型、高效率與高度可靠性

    ?
    刊登廣告 新聞信箱 讀者信箱 著作權聲明 隱私權聲明 本站介紹

    Copyright ©1999-2025 遠播資訊股份有限公司版權所有 Powered by O3
    地址:臺北數位產業園區(digiBlock Taipei) 103臺北市大同區承德路三段287-2號A棟204室
    電話 (02)2585-5526 #0 轉接至總機 / E-Mail: webmaster@hope.com.tw
    主站蜘蛛池模板: 金平| 葫芦岛市| 隆安县| 龙江县| 格尔木市| 鄂尔多斯市| 柳河县| 临沂市| 滁州市| 泰来县| 民乐县| 慈溪市| 永靖县| 普兰县| 大荔县| 津市市| 竹北市| 杭锦旗| 龙江县| 赤壁市| 大化| 高阳县| 贵德县| 天峨县| 京山县| 巴林右旗| 凌源市| 宜兰县| 喀什市| 绥滨县| 长沙县| 富蕴县| 历史| 鄂州市| 普定县| 关岭| 阿拉尔市| 鹤山市| 呼和浩特市| 平潭县| 扎囊县|