在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何利用Simulink Test工具箱對模型進行單元測試?

冬至子 ? 來源:MBD開發 ? 作者:dingxu ? 2023-07-22 10:25 ? 次閱讀
  • 單元測試的目的

創建完模型后,我們需要驗證模型的行為,即仿真結果,是否跟我們預期的一致,這樣才能保證由模型生成的代碼在嵌入式系統中執行得到結果跟我們預期的一致。單元測試主要是以模型或者模型內的子系統為單位進行測試。

雖然單元測試不能發現所有的問題,比如實際系統中的接口信號跟我們預期的不符,或者一些性能方面的需求。但是單元測試個人感覺還是必須的,測試用例設計的越全面,即把自己能想到的所有情況都測試一遍,后續在實車上出現非預期的情況就越少。

并且在模型單元測試中找問題會比在后續的集成測試,以及實車測試中找問題容易的多,所以盡量能在單元測試中發現的不能就不應該流出到后續的開發流程中。

做好單元測試會極大的提高開發效率。

現在MatlabSimulink Test工具箱做的也越來越完善,只需要簡單幾步就可以創建出測試環境,方便的修改測試用例,結果的可視化和報告功能也做得很好了,下面就具體介紹一下用法。

  • 創建Test Harness測試模型

Test Harness 模型可以理解為一個測試框架。由被測試模型,信號輸入和信號輸出組成。

如果一個模型不是很復雜的話,可以直接對一個模型整體創建一個Test Harness模型,進行測試。具體方法是在模型最外層的空白處,點擊鼠標右鍵,選擇Test Harness -> Create for Model…

圖片

如果模型很復雜的話,也可以對模型中的各個子系統分別創建Test Harness模型,然后分別單獨測試這些子系統。具體方法是選中想要測試的子系統,點擊鼠標右鍵,選擇Test Harness -> Create for 'subsystem name'

圖片

點擊后,就會出現如下的配置界面

圖片

其中,{Name}是給出Test Harness模型的名稱
{Save test harness extern}如果不勾選 ,那么這個test harness模型就不會單獨的生成一個文件,而是保存在原模型里面
{Save test harness extern}如果勾選,那么這個test harness模型就以一個單獨的文件保存

Test Harness模型的可以選擇的輸入輸出如下:

圖片

其中Harness模型的輸入,可以選擇為普通的Inport,Signal Builder,Signal Editor,From Workspace,From File,Test Sequence等
Harness模型的輸出,可以選擇為普通的Outport,Scope,To Workspace,To File,Terminator等
實際可以根據自己的習慣和需求進行選擇。
下圖是輸入為Inport,輸出為Outport的Test Harness模型,本篇文章主要介紹針對這種類型的Test Harness模型進行單元測試。這種模型的輸入信號以及期望的輸出信號可以通過excel的測試用例模板來給出。

圖片

其中,Signal spec and routing 里的內容如下,會按照原模型的設置,將所有的輸入信號的數據類型和采樣時間做一個轉換。

圖片

這樣一個Test Harness模型就創建完了,接下來就準備對這個模型做測試。

  • 自動創建excel格式的測試用例模板

首先打開Simulink Test Manager,可以在模型菜單的APPS里面搜索Simulink Test

圖片

然后點擊“Simulink Test Manager”

圖片

或者直接在窗口輸入命令:
sltest.testmanager.view

就會打開Test Manager的窗口

圖片

接下來用AUTO CREATE功能,新建一個Test File,并且自動生成測試用例的模板。點擊New -> Test File from Spreadsheet

圖片

然后會跳出如下界面,選擇“Create a test template file for specifying data”

圖片

點擊Next后跳出如下的界面,在Model中選擇要被測試的模型,Harness中選擇該模型中創建的需要被測試的Test Harness模型

圖片

然后會跳出如下界面,勾選想要在excel中想要包含的項目

圖片

Inputs:模型最外層的輸入。這個必須要選的,可以在excel表中編輯輸入的值
Parameters:模型中的參數。如果測試時不需要改變參數值的話,可以不勾選。
這邊推薦是弄清楚Parameters在excel頁中設置的格式后,這邊也都不用勾選了,如果需要修改參數值的話,按照格式,手動添加想要修改的參數值
Comparison signals:信號線上logged的信號。這個必須勾選,并且需要把希望被測試的信號對應的信號線設置為logged。

圖片

Include all attributes in the spreadsheet:信號的一些參數設置,比如插值方式,絕對允許誤差等,推薦勾選上。

下一步是設置測試用例的個數和測試用例的基本名稱

圖片

比如按照上面的設置,就會在測試用例的excel文件中,生成10個sheet,每一個sheet的名字為我們指定的名稱+序號

圖片

最后,指定Test Manager的測試文件名和測試用例的excel文件名和存儲位置。

圖片

這樣就會自動生成Test Manager的測試文件和測試用例的excel文件。
Test Manager的測試文件打開后,如下圖。

圖片

Test Suite:每一個測試文件中,都可以定義若干個Test Suite,可以把同一類型或同一功能的測試用例放到一個Test Suite中
Test Case:每一個Test Suite中,可以定義若干個Test Case,Test Case中規定了測試詳細的執行信息。實際測試執行的時候也針對每一個Test Case進行測試的
Create Test Case from External File:測試用例的具體信息從excel模板中提取,這篇文章重點介紹以這種形式來創建測試用例
小鎖標記:表示這些設置是通過excel文件中的設置固定的,無法在該頁面進行修改,只能通過excel文件進行修改。
*標記:提示這些設置是有過修改

下面詳細介紹測試用例的每一項設置的內容:
TAGS: 可以給一個標簽名,比如按照功能,測試類型等,方便以后批量查找測試用例
DESCRIPTION: 可以給描述測試用例的測試步驟,方法等,方便理解
REQUIREMENTS: 可以和需求關聯。Matlab現在有“Simulink Requirements”這個Toolbox,可以在里面寫需求文檔,將需求和模型,以及對應的測試用例關聯起來,以滿足A-ASPICE或者ISO26262所規定的軟件開發流程中的可追溯性的要求。
SYSTEM UNDER TEST: 里面設置了要被測試的模型,或者針對模型中所創建的某一個Test Harness模型進行測試。
另外,如果有需要的話,這邊也可以在進行單元測試時,覆蓋掉原模型的設置,比如常用的一個就是仿真時間,可以根據每個測試用例輸入數據的實際結束時間,覆蓋掉原模型的仿真結束時間

圖片

PARAMETER OVERRIDES: 這里如果是根據excel模板生成的測試用例的話,是鎖定不能修改的,里面列出了某個測試用例中,需要改變的參數

圖片

CALLBACKS: 里面分為3個不同時刻的,運行我們想要的腳本。
其中PER-LOAD是在讀取模型之前,POST-LOAD是在讀取完模型之后,CLEANUP是在測試仿真完成之后。
一種比較常見的用法是,在PER-LOAD中讀取測試模型的數據詞典里數據,在CLEANUP中清除這次測試的所有數據。

圖片

INPUTS: 定義測試的輸入信號,這里如果是根據excel模板生成的測試用例的話,是鎖定不能修改的。
另外這邊有兩個選項可以勾選,如果勾選“Include input data in test result”的話,在最后的結果中,也會顯示輸入信號。
如果勾選“Stop simulation at last time point”的話,仿真測試到最后一個輸入點的時候就會停止。

圖片

SIMULATION OUTPUTS: 可以在里面再選取模型中logged的信號作為觀測量
CONFIGURATION SETTINGS OVERRIDES: 可以在仿真測試的時候對原模型的設置進行覆蓋
BASELINE CRITERIA: 里面設置了期望值,以及比較仿真測試結果和期望值的一些參數。這里如果是根據excel模板生成的測試用例的話,是鎖定不能修改的。但可以點擊Edit在excel文件中修改。
對比數據時,可以設置絕對誤差,相對誤差,時序領先誤差和時序滯后誤差

圖片

這四個參數可以在excel中,對應變量的下方設置,具體格式和參數名稱如下

圖片

ITERATIONS: 迭代測試。這里如果是根據excel模板生成的測試用例的話,是鎖定不能修改的。會根據測試用例數自動生成,表示這個測試會根據不同的配置重復進行

圖片

COVERAGE SETTINGS: 統計覆蓋度的設置。如果需要統計模型的覆蓋度的話,就勾選“Record coverage for referenced models”和“Record coverage for system under test”

圖片

COVERAGE METRICS 的設置要在最外面的工程中設置,一般選擇Decision,Condition和MCDC這三個覆蓋度就夠應付各種檢查了。

圖片

點擊Run,就會執行測試

圖片

測試的結果會在Result and Artifacts中顯示。如果仿真結果和預期符合就是綠色的勾勾,否則是紅色的叉叉
Baseline Criteria Result里顯示的就是我們給定的信號期望值與實際值之間的比較。
上面的圖是把仿真結果和期望結果放在一張圖上顯示出來,下面的圖是兩者之差和允許誤差范圍
External Inputs里顯示的是輸入信號的值。(在{INPUTS}里勾選了Include input data in test result才會有)
Sim Output里顯示的是模型中logged信號的值

圖片

另外如果設置了搜集覆蓋度,那么還可以看到針對被測模型,所有測試用例累積的覆蓋度

圖片

  • 手動創建excel測試用例模板

了解了Test Manager用的excel測試模板的格式后,有時候手動創建測試模板會更方便一些。被測對象有多個測試用例的話,可以寫多個excel文件,也可以在一個excel文件中的多個sheet上寫。

比如對于下圖的Test Harness模型,有7個輸入和兩個輸出,那我們就要給7個輸入賦值,以及給出對應時刻的輸出的值

圖片

首先定義輸入信號,時間序列{time}定義必須寫在最前面,然后在每一列跟著輸入信號的名稱。
對于輸入信號還推薦定義輸入信號的數據類型,用Type:<數據類型>來定義。
另外為了區分信號是輸入還是輸入,需要在輸入信號最開始的一列定義Source:Input

對于輸出信號,也是一樣,首先是時間序列{time},然后在后面的列跟著輸出信號的名稱。
輸出信號也要定義數據類型,以及定義該信號為輸出Source:Output
對于輸出信號還可以定義允許誤差,比較常用的是相對誤差和絕對誤差。一般對于浮點類型的數據,需要給一個相對誤差,因為浮點數沒法比較完全相等
對于輸出信號,還需要指定該信號在模型中的位置,是通過BlockPath加PortIndex來確定的。
比如對于上圖的兩個輸出信號,不但要指定信號名,還要指定連接信號線的模塊{BlockPath}和該模塊對應的端口號{PortIndex}(如果端口號是1的話可以忽略不填)
還可以指定信號的插值方式{Interp},如果時間序列不是最小步長的話,插值方式有兩種,一個是保持上一次時刻的值“zoh”和線性插值”linear

圖片

創建好測試用例的excel模板后,就可以手動創建一個以填寫好的excel模板,在Test Manager中創建Test Case。
點擊New -> Test File,然后給測試文件起一個名字

圖片

在{SYSTEM UNDER TEST}下面選擇要被測試的模型以及模型內的Harness模型,然后選中“Create Test Case from External File”,選擇之前創建的excel測試用例文件。系統就會把在excel模板中填寫的輸入和輸出的信息分別在{INPUTS}和{BASELINE CRITERIA}中自動創建好

圖片

最后再修改一些其他想要修改的設置,就能進行測試了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 仿真器
    +關注

    關注

    14

    文章

    1034

    瀏覽量

    85098
  • MATLAB仿真
    +關注

    關注

    4

    文章

    176

    瀏覽量

    20328
  • simulink仿真
    +關注

    關注

    0

    文章

    75

    瀏覽量

    8748
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    matlab的其他工具箱SIMULINK

    matlab的其他工具箱SIMULINK1 信號處理 SP 工具箱2 控制 Control 工具箱3 圖像處理 Images 工具箱4 通
    發表于 09-04 08:16

    跪求NI LabVIEW Unit Test Framework Toolkit (單元測試架構工具包)

    跪求NI LabVIEW Unit Test Framework Toolkit(單元測試架構工具包)!!哪位大哥大姐有的話給一份啊!可以發我郵箱879633181@qq.com,或是知道怎么下載教我下,感激不盡啊!
    發表于 11-05 15:45

    Simulink中STM32工具箱一覽

    師和模型工程師都必定會采用這種方式,以前傳統的手動底層碼代碼會被淘汰。 話不多說,我先從目前嵌入式開發王者級芯片STM32基于模型一鍵式代碼生成研究起,對各種外設都有了詳細的測試研究,目前簡單介紹一下:
    發表于 08-17 07:29

    基于Simulink的STM32工具箱外設一鍵式代碼該如何去生成呢

    Simulink中的STM32工具箱該怎樣去安裝呢?基于Simulink的STM32工具箱外設一鍵式代碼該如何去生成呢?
    發表于 11-18 06:00

    單元測試工具有哪些

    代碼,具有使用芯片仿真器進行仿真功能的測試工具.不僅可以對C語言編寫的程序進行邏輯水平的測試,還可以對嵌入式軟件特有的依存于芯片的問題點進行
    發表于 12-17 07:22

    單元測試/集成測試自動化工具--WinAMS

    直接使用目標機代碼進行單元測試聯合靜態解析工具[CasePlayer2],提供C0(語句),C1(判定),MC/DC覆蓋率報告,優化測試用例制作已取得第三方認證機構TUVSUD對適用
    發表于 06-17 18:26

    matlab的其他工具箱SIMULINK

    matlab其他工具箱SIMULINK9.1 信號處理 SP 工具箱9.2 控制 Control 工具箱9.3 圖像處理 Images 工具箱
    發表于 09-03 12:19 ?0次下載

    什么是單元測試_單元測試的目的是什么

    工廠在組裝一臺電視機之前,會對每個元件都進行測試,這,就是單元測試單元測試是開發者編寫的一小段代碼,用于檢驗被測代碼的一個很小的、很明確的功能是否正確。通常而言,一個
    發表于 12-21 13:44 ?3.3w次閱讀

    使用MATLAB遺傳算法工具箱實現控制系統的設計與仿真資料說明

    本文介紹了基于MATLAB 的遺傳算法工具箱( GAOT ) , 闡述了如何利用遺傳算法工具箱結合SIMUlink 平臺來實現控制系統的設計和仿真, 并給出
    發表于 09-23 17:40 ?10次下載
    使用MATLAB遺傳算法<b class='flag-5'>工具箱</b>實現控制系統的設計與仿真資料說明

    普查工具箱有哪些以及植保儀器工具箱系列的匯總

    ,一是病蟲測報工具箱;二是檢疫工具箱;病蟲測報工具箱(II型/III型)也叫測報工具箱,是專為植保工作配置的工具箱,可協助植保工作者更順利的
    發表于 01-06 11:26 ?1670次閱讀

    什么是單元測試,為什么要做單元測試

    。 什么是單元測試單元測試(unit testing),是指對軟件中的最小可測試單元進行檢查和驗證。通常而言,一個
    的頭像 發表于 04-28 17:21 ?1w次閱讀

    MCU如何進行單元測試

    背景MCU軟件不同于常規的PC機或基于SOC的嵌入式軟件,其一般情況下,與底層硬件耦合度高,資源有限,如何進行單元測試的問題困擾我很久。解決方案根據目前已知如下3種類型的方案:在目標板上運行此方案下,在程序代碼中加入單元測試的代
    發表于 10-26 10:06 ?35次下載
    MCU如何<b class='flag-5'>進行</b><b class='flag-5'>單元測試</b>

    RT-Thread上的單元測試:什么是單元測試單元測試的作用是什么?

    RT-Thread上的單元測試:什么是單元測試單元測試的作用是什么? ? ? ? ? ? 審核編輯:彭靜
    的頭像 發表于 05-27 16:06 ?1959次閱讀
    RT-Thread上的<b class='flag-5'>單元測試</b>:什么是<b class='flag-5'>單元測試</b>?<b class='flag-5'>單元測試</b>的作用是什么?

    利用Matlab工具箱設計FIR和IIR濾波器

    利用Matlab工具箱設計FIR和IIR濾波器
    的頭像 發表于 09-26 14:59 ?1299次閱讀

    單元測試、集成測試自動化工具

    HookCode?直接使用目標機代碼進行單元測試 聯合靜態解析工具[CasePlayer2],提供C0(語句),C1(判定),MC/DC覆蓋率報告,優化測試用例制作 已取得第三方認證機
    的頭像 發表于 06-26 13:41 ?743次閱讀
    <b class='flag-5'>單元測試</b>、集成<b class='flag-5'>測試</b>自動化<b class='flag-5'>工具</b>
    主站蜘蛛池模板: 性大特级毛片视频 | 亚洲精品播放 | 国产成在线观看免费视频 | 国内精品视频在线 | 日本黄色激情视频 | 久久www免费人成_看 | 一级毛片在线免费视频 | 大量真实偷拍情侣视频野战 | 永久免费看www色视频 | 两性色视频 | 三级黄网站 | 岛国毛片一级一级特级毛片 | 天堂网中文 | 午夜高清在线 | 亚洲一区中文字幕在线观看 | 天天摸天天舔天天操 | 日韩精品一区二区三区免费视频 | 狠狠操夜夜爱 | 色婷婷激婷婷深爱五月小说 | 久久久午夜精品 | 欧美色视频在线观看 | 中文永久免费看电视网站入口 | 欧美网站视频 | 男男失禁play 把尿bl | 色费女人18女人毛片免费视频 | 韩国男女无遮挡高清性视频 | 久久久久久全国免费观看 | 欧美色视频网站 | 黄色一级片播放 | 国产精品三级在线播放 | 国产精品夜夜春夜夜爽久久 | 色爱区综合激月婷婷激情五月 | 三级在线观看免播放网站 | 国语自产免费精品视频一区二区 | 狠狠色丁香婷婷综合久久片 | 久久精品免费观看久久 | 国产成人一区二区在线不卡 | vr性资源在线观看 | 日本www免费| 久久精品免费观看久久 | 亚洲第一永久在线观看 |