<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日 星期四 瀏覽人次: [5784]

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


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


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


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

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


    在這個范例,要選擇的是飛行器的空速(Airspeed)訊號??账儆嵦栠x擇演算法的要求如下:


    ? 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?;叵雸D1的模型,當時第一個送到Multiport Switch的輸入值為有效訊號的數值。由此可見,并沒有測試到所有的空速訊號皆為無效的案例。


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


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


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


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



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

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


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


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


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


    相關文章
    ? 工廠與服務業的新勞力:機器人的真實應用現場
    ? 用科技滅火:前線急救人員的生命徵象與環境監測
    ? 221e:從AI驅動感測器模組Muse獲得的啟發
    ? 以霍爾效應電流感測器簡化高電壓感測
    ? 利用邊緣運算節約能源和提升永續性
    comments powered by Disqus
      相關新聞
    » 承接18年臺積電智慧制造經驗 宇清數位以APS系統引領AI智慧工廠轉型
    » Intelligent Asia 2025 八月強勢登場 聚焦八大領域 展現全球智造力
    » 厚墻不擋、遠距穩控、功耗更低,泓格RFU-IO-433讓既有Modbus設備輕松無線化
    » 宜鼎推出LPCAMM2與CAMM2系列記憶體模組
    » 意法半導體公布 2025 年第二季財報
      相關產品
    » 意法半導體推出新款車用高電流、低電壓切換式穩壓器,有效支援各類嚴苛負載
    » 意法半導體推出先進的人體存在偵測解決方案 全面升級筆電與個人電腦使用體驗
    » 意法半導體推出適用於數位鑰匙應用的新一代車用 NFC 讀寫器 擴展 ST25R 高效能產品系列
    » 適用于高頻功率應用的 IXD2012NTR 高壓側和低壓側柵極驅動器
    » KSC XA輕觸開關提供聲音柔和的輕觸回??,增強用戶體驗


      主站蜘蛛池模板: 来宾市| 临沧市| 都昌县| 久治县| 石渠县| 沙洋县| 临澧县| 北流市| 翁源县| 崇左市| 绥滨县| 嫩江县| 武汉市| 阿拉尔市| 象州县| 花莲县| 通化市| 田阳县| 襄樊市| 平远县| 铜鼓县| 彭州市| 杭锦旗| 沭阳县| 湘潭市| 林口县| 永济市| 淳安县| 丁青县| 乐至县| 多伦县| 平果县| 贡嘎县| 大城县| 资阳市| 长宁县| 元谋县| 天全县| 吴忠市| 乐平市| 晋城|