一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

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

冬至子 ? 來源:MBD開發(fā) ? 作者:dingxu ? 2023-07-22 10:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

  • 單元測試的目的

創(chuàng)建完模型后,我們需要驗證模型的行為,即仿真結(jié)果,是否跟我們預(yù)期的一致,這樣才能保證由模型生成的代碼在嵌入式系統(tǒng)中執(zhí)行得到結(jié)果跟我們預(yù)期的一致。單元測試主要是以模型或者模型內(nèi)的子系統(tǒng)為單位進行測試。

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

并且在模型單元測試中找問題會比在后續(xù)的集成測試,以及實車測試中找問題容易的多,所以盡量能在單元測試中發(fā)現(xiàn)的不能就不應(yīng)該流出到后續(xù)的開發(fā)流程中。

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

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

  • 創(chuàng)建Test Harness測試模型

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

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

圖片

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

圖片

點擊后,就會出現(xiàn)如下的配置界面

圖片

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

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

圖片

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

圖片

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

圖片

這樣一個Test Harness模型就創(chuàng)建完了,接下來就準(zhǔn)備對這個模型做測試。

  • 自動創(chuàng)建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中選擇該模型中創(chuàng)建的需要被測試的Test Harness模型

圖片

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

圖片

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

圖片

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

下一步是設(shè)置測試用例的個數(shù)和測試用例的基本名稱

圖片

比如按照上面的設(shè)置,就會在測試用例的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中規(guī)定了測試詳細的執(zhí)行信息。實際測試執(zhí)行的時候也針對每一個Test Case進行測試的
Create Test Case from External File:測試用例的具體信息從excel模板中提取,這篇文章重點介紹以這種形式來創(chuàng)建測試用例
小鎖標(biāo)記:表示這些設(shè)置是通過excel文件中的設(shè)置固定的,無法在該頁面進行修改,只能通過excel文件進行修改。
*標(biāo)記:提示這些設(shè)置是有過修改

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

圖片

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

圖片

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

圖片

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

圖片

SIMULATION OUTPUTS: 可以在里面再選取模型中l(wèi)ogged的信號作為觀測量
CONFIGURATION SETTINGS OVERRIDES: 可以在仿真測試的時候?qū)υP偷脑O(shè)置進行覆蓋
BASELINE CRITERIA: 里面設(shè)置了期望值,以及比較仿真測試結(jié)果和期望值的一些參數(shù)。這里如果是根據(jù)excel模板生成的測試用例的話,是鎖定不能修改的。但可以點擊Edit在excel文件中修改。
對比數(shù)據(jù)時,可以設(shè)置絕對誤差,相對誤差,時序領(lǐng)先誤差和時序滯后誤差

圖片

這四個參數(shù)可以在excel中,對應(yīng)變量的下方設(shè)置,具體格式和參數(shù)名稱如下

圖片

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

圖片

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

圖片

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

圖片

點擊Run,就會執(zhí)行測試

圖片

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

圖片

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

圖片

  • 手動創(chuàng)建excel測試用例模板

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

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

圖片

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

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

圖片

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

圖片

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

圖片

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 仿真器
    +關(guān)注

    關(guān)注

    14

    文章

    1037

    瀏覽量

    85418
  • MATLAB仿真
    +關(guān)注

    關(guān)注

    4

    文章

    176

    瀏覽量

    20387
  • simulink仿真
    +關(guān)注

    關(guān)注

    0

    文章

    75

    瀏覽量

    8777
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    matlab的其他工具箱SIMULINK

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

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

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

    Simulink中STM32工具箱一覽

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

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

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

    單元測試工具有哪些

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

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

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

    matlab的其他工具箱SIMULINK

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

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

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

    使用MATLAB遺傳算法工具箱實現(xiàn)控制系統(tǒng)的設(shè)計與仿真資料說明

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

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

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

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

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

    MCU如何進行單元測試

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

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

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

    利用Matlab工具箱設(shè)計FIR和IIR濾波器

    利用Matlab工具箱設(shè)計FIR和IIR濾波器
    的頭像 發(fā)表于 09-26 14:59 ?1392次閱讀

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

    HookCode?直接使用目標(biāo)機代碼進行單元測試 聯(lián)合靜態(tài)解析工具[CasePlayer2],提供C0(語句),C1(判定),MC/DC覆蓋率報告,優(yōu)化測試用例制作 已取得第三方認(rèn)證機
    的頭像 發(fā)表于 06-26 13:41 ?793次閱讀
    <b class='flag-5'>單元測試</b>、集成<b class='flag-5'>測試</b>自動化<b class='flag-5'>工具</b>