chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

關(guān)于MATLAB單元測試的過程以及結(jié)果分析

MATLAB ? 來源:djl ? 作者:oopmatlab ? 2019-09-17 17:26 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在inputParser章節(jié)中,我們通過不斷改進(jìn)getArea函數(shù)對(duì)輸入?yún)?shù)的處理方法,引入這樣一個(gè)觀點(diǎn):一個(gè)可靠的科學(xué)工程計(jì)算項(xiàng)目必須有一套測試系統(tǒng),才能防止開發(fā)的過程中算法退化,工程項(xiàng)目的推進(jìn)必須在算法開發(fā)和算法測試之間不斷迭代完。在inputParser章節(jié)的最后,還根據(jù)直覺提出了一個(gè)測試系統(tǒng)所應(yīng)該有的基本功能。在本章中,我們將學(xué)習(xí)MATLAB提供的測試解決方案:MATLAB單元測試(MATLAB Unit Test)。

基于函數(shù)的(Function-Based)單元測試的構(gòu)造

MATLAB基于函數(shù)的單元測試構(gòu)造很簡單,如圖1所示:用戶通過一個(gè)主測試函數(shù)和若干局部測試函數(shù)(也叫做測試點(diǎn),Local Function)來組織各個(gè)測試。而測試的運(yùn)行則交給MATLAB的單元測試架構(gòu)(以下簡稱Framework)去完成。

關(guān)于MATLAB單元測試的過程以及結(jié)果分析

圖1 單元測試Framework和測試函數(shù)

主測試函數(shù)和局部測試函數(shù)看上去和普通的MATLAB函數(shù)沒有區(qū)別,其結(jié)構(gòu)如圖2所示,只是命名上有一些規(guī)定而已,這些特殊的規(guī)定是為了Framework可以和測試函數(shù)契合而規(guī)定的。

關(guān)于MATLAB單元測試的過程以及結(jié)果分析

圖2 簡單的主測試函數(shù)和若干局部的測試函數(shù)構(gòu)成的一個(gè)單元測試

命名規(guī)則如下:

主函數(shù)的名稱由用戶任意指定,和其他的MATLAB函數(shù)文件一樣,該文件的名稱需要和函數(shù)的名稱的相同(如果主函數(shù)的名稱是testmainfunc,該文件名稱則是testmainfunc.m)

在主函數(shù)中,必須調(diào)用一個(gè)叫做functiontests的函數(shù),搜集該函數(shù)中的所有局部函數(shù),產(chǎn)生一個(gè)包含這些局部函數(shù)的函數(shù)局部的測試矩陣并返回給Framework

如下所示:

關(guān)于MATLAB單元測試的過程以及結(jié)果分析

其中l(wèi)ocalfunctions是一個(gè)MATLAB函數(shù),用來返回所有局部函數(shù)的函數(shù)句柄。局部函數(shù)的命名必須以test開頭,局部函數(shù)只接受一個(gè)輸入?yún)?shù),即測試對(duì)象,即下面例子中的形參testCase:

關(guān)于MATLAB單元測試的過程以及結(jié)果分析

其中testCase由單元測試Framework提供,即Framework將自動(dòng)的調(diào)用該函數(shù),并且提供testCase參數(shù)。按照規(guī)定,要運(yùn)行單元測試中的所有測試,必須調(diào)用runtests函數(shù):

關(guān)于MATLAB單元測試的過程以及結(jié)果分析

下面用我們用基于函數(shù)的單元測試來給getArea函數(shù)的構(gòu)造其單元測試。

getArea函數(shù)的單元測試:版本 I

首先給主測試文件起個(gè)名字叫做testGetArea,該名字是任意的,為了便于理解名字里面通常包含test,并包含要測試的主要函數(shù)的名字:

關(guān)于MATLAB單元測試的過程以及結(jié)果分析

在該主函數(shù)中,localfunctions將搜集所有的局部函數(shù),構(gòu)造函數(shù)句柄數(shù)組并返回測試矩陣。這里自然會(huì)有一個(gè)問題,這個(gè)tests句柄數(shù)組將返回給誰,這就要了解Framework是如何和測試相互作用的。如圖3所示,整個(gè)測試從runtests('testmainfunc.m')命令開始, 命令函數(shù),F(xiàn)ramework將首先調(diào)用testGetArea的主函數(shù),得到所有的局部函數(shù)的函數(shù)句柄,如空心箭頭線段所示,然后Framework再負(fù)責(zé)調(diào)用每一個(gè)測試局部函數(shù),并且把testCase當(dāng)做參數(shù)提供給每個(gè)局部函數(shù),如虛線線段所示。我們可以把Framework想象成一個(gè)流水線,用戶只需要通過runtests('testmainfunc.m')把“testmainfunc.m”放到流水線上并且“打開開關(guān)”就可以了。它是MATLAB的類matlab.unittest.FunctionTestCase的對(duì)象。

關(guān)于MATLAB單元測試的過程以及結(jié)果分析

圖3 單元測試Framework和測試函數(shù)的相互作用

返回的testCase是類matlab.unittest.FunctionTestCase的對(duì)象,有很多成員驗(yàn)證方法可以提供給用戶調(diào)用,我們的第一版的getArea函數(shù)如下, 要求函數(shù)接受兩個(gè)參數(shù),并且都是數(shù)值類型:

關(guān)于MATLAB單元測試的過程以及結(jié)果分析

我們先給這個(gè)getArea寫第一個(gè)測試點(diǎn),確保測試getArea函數(shù)在接受兩個(gè)參數(shù)的時(shí)候,能給出正確的答案:

關(guān)于MATLAB單元測試的過程以及結(jié)果分析

我們給testGetArea.m添加一個(gè)局部函數(shù)叫做testTwoInputs,按照規(guī)定,該局部函數(shù)的名字要以test開頭,后面的名字要能夠盡量反應(yīng)該測試點(diǎn)的實(shí)際測試的內(nèi)容。verifyTrue是一個(gè)testCase對(duì)象所支持的方法,它用來驗(yàn)證其第一個(gè)參數(shù),作為一個(gè)表達(dá)式,是否為真。verifyTrue的第二個(gè)參數(shù)接受字符串,在測試失敗時(shí)提供診斷提示。一個(gè)很常見的問題是:getArea是一個(gè)極其簡單的函數(shù),內(nèi)部的工作就是把兩個(gè)輸入相乘,在這里驗(yàn)證getArea(10,22) == 220真的有必要嗎?請(qǐng)讀者記住這個(gè)問題,它是理解單元測試的精要之一。下面我們來運(yùn)行這個(gè)測試:

關(guān)于MATLAB單元測試的過程以及結(jié)果分析

測試返回一個(gè)matlab.unittest.TestResult對(duì)象,其中包括運(yùn)行測試的結(jié)果,不出意料我們的函數(shù)通過了這輪簡單的測試。如果函數(shù)沒有通過測試,比如我們故意要驗(yàn)證一個(gè)錯(cuò)誤的結(jié)果:getArea(10,22) ==0。

關(guān)于MATLAB單元測試的過程以及結(jié)果分析

Framework將給出詳盡的錯(cuò)誤報(bào)告, 其中Test Diagnostic欄目中報(bào)告的就是verifyTrue函數(shù)中的第二個(gè)參數(shù)所提供的診斷信息。

關(guān)于MATLAB單元測試的過程以及結(jié)果分析

我們再添加一個(gè)負(fù)面測試,回憶第一版的函數(shù)getArea不支持單個(gè)參數(shù),如下:

關(guān)于MATLAB單元測試的過程以及結(jié)果分析

我們可以利用lasterr函數(shù)得到了這個(gè)錯(cuò)誤的Error ID,這個(gè)Error ID將在負(fù)面測試中用到。下面是這個(gè)負(fù)面測試,驗(yàn)證在只有一個(gè)輸入的情況下,getArea函數(shù)能夠如預(yù)期報(bào)錯(cuò)。我們給測試添加一個(gè)新的測試點(diǎn),叫做testTwoInputsInvalid。

關(guān)于MATLAB單元測試的過程以及結(jié)果分析

在testTwoInputsInvalid中,我們使用了測試對(duì)象的verifyError成員函數(shù),它的第一個(gè)參數(shù)是函數(shù)句柄,即要執(zhí)行的語言(會(huì)出錯(cuò)的語句),第二個(gè)參數(shù)是要驗(yàn)證的MATLAB錯(cuò)誤的Error ID, 就是我們前面用lasterr函數(shù)得到的信息。verifyError內(nèi)部還有try和catch,可以運(yùn)行函數(shù)句柄,捕捉到錯(cuò)誤,并且把Error ID和第二個(gè)參數(shù)做比較。再舉一個(gè)例子,我們先在getArea函數(shù)中規(guī)定所有的輸入必須是數(shù)值類型,所以如果輸入的是字符串,getArea將報(bào)錯(cuò),先再命令行中實(shí)驗(yàn)一下,以便得到Error ID:

關(guān)于MATLAB單元測試的過程以及結(jié)果分析

然后再把這個(gè)負(fù)面測試添加到testGetArea中去:

關(guān)于MATLAB單元測試的過程以及結(jié)果分析

運(yùn)行一遍,一個(gè)正面測試,一個(gè)負(fù)面測試都全部通過。

關(guān)于MATLAB單元測試的過程以及結(jié)果分析

getArea函數(shù)的單元測試: 版本II & III

測試的準(zhǔn)備和清理工作: Tests Fixtures

驗(yàn)證方法: Types of Qualification

測試方法論和以測試驅(qū)動(dòng)開發(fā)(Test-Driven Development)

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

    關(guān)注

    1

    文章

    596

    瀏覽量

    23225
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4423

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    使用VectorCAST/C++的AI輔助測試功能

    從2026版本開始,VectorCAST/C++推出首批AI輔助測試功能,旨在幫助開發(fā)團(tuán)隊(duì)解決單元測試過程中的兩個(gè)核心難點(diǎn):
    的頭像 發(fā)表于 04-27 14:37 ?324次閱讀

    前端的單元測試

    https://www.bilibili.com/opus/1178756596191199237 從入門到會(huì)寫:前端單元測試最佳學(xué)習(xí)路徑 在當(dāng)今的互聯(lián)網(wǎng)開發(fā)江湖中,前端技術(shù)棧的更新迭代速度令人咋舌
    的頭像 發(fā)表于 03-19 16:05 ?624次閱讀

    半導(dǎo)體嵌入式單元測試的核心技術(shù)、工具選型與落地全流程

    函數(shù)能夠滿足實(shí)際業(yè)務(wù)需求。4.2.3 持續(xù)優(yōu)化測試流程隨著項(xiàng)目的進(jìn)展,測試流程需要不斷優(yōu)化。要定期對(duì)測試用例庫進(jìn)行維護(hù),刪除無效的測試用例,添加新的
    發(fā)表于 03-06 14:55

    嵌入式軟件單元測試必要性與專業(yè)工具重要性的系統(tǒng)性專業(yè)研究報(bào)告

    。?單元測試?作為在代碼編寫階段對(duì)最小功能單元(函數(shù)、模塊)進(jìn)行驗(yàn)證的實(shí)踐,成為突破這一困境的核心手段。 ?2. 必要性:實(shí)證數(shù)據(jù)與行業(yè)強(qiáng)制要求 ?2.1 缺陷修復(fù)成本的指數(shù)級(jí)差異 表格 階段 缺陷修復(fù)成本
    發(fā)表于 03-05 10:41

    資料] 汽車軟件質(zhì)量躍遷的系統(tǒng)性路徑:基于ISO 26262標(biāo)準(zhǔn)的單元測試體系重構(gòu)與中日實(shí)踐深度對(duì)比(2026學(xué)術(shù)研究報(bào)告)

    各位伙伴,請(qǐng)問一個(gè)問題,[資料] 汽車軟件質(zhì)量躍遷的系統(tǒng)性路徑:基于ISO 26262標(biāo)準(zhǔn)的單元測試體系重構(gòu)與中日實(shí)踐深度對(duì)比(2026學(xué)術(shù)研究報(bào)告),這份數(shù)據(jù)誰有源參考文獻(xiàn),有酬感謝
    發(fā)表于 01-08 10:09

    汽車軟件質(zhì)量躍遷的系統(tǒng)性路徑:基于ISO 26262標(biāo)準(zhǔn)的單元測試體系重構(gòu)與中日實(shí)踐深度對(duì)比(2026學(xué)術(shù)研究報(bào)告)

    %源于軟件邏輯錯(cuò)誤,其中32%因單元測試邊界條件未覆蓋(TüV SüD《2024汽車軟件召回分析》)。典型案例包括某新勢力車企因制動(dòng)模塊未測試導(dǎo)致1.2萬輛召回,損失超5億元。 1.2 軟件定義汽車
    發(fā)表于 01-05 14:58

    嵌入式軟件單元測試中AI自動(dòng)化與人工檢查的協(xié)同機(jī)制研究:基于專業(yè)工具的實(shí)證分析

    ? ?摘要****? 本文系統(tǒng)探討嵌入式軟件相較于通用軟件在單元測試層面的特殊性,分析其對(duì)高覆蓋率、可追溯性與實(shí)時(shí)性驗(yàn)證的嚴(yán)苛需求,并以專業(yè)工具winAMS為技術(shù)載體,深入研究AI驅(qū)動(dòng)的自動(dòng)化測試
    發(fā)表于 12-31 11:22

    C語言單元測試在嵌入式軟件開發(fā)中的作用及專業(yè)工具的應(yīng)用

    功能包括: 測試通過/失敗統(tǒng)計(jì) 代碼覆蓋率可視化 執(zhí)行時(shí)間分析 缺陷跟蹤和報(bào)告生成 winAMS的圖形化界面可以直觀展示測試結(jié)果和覆蓋率數(shù)據(jù)。 七、總結(jié)與展望 C語言
    發(fā)表于 12-18 11:46

    嵌入軟件單元測試的全面研究與實(shí)踐

    作為軟件開發(fā)過程中最早進(jìn)行的測試活動(dòng),能夠有效隔離代碼片段,驗(yàn)證其功能是否符合設(shè)計(jì)預(yù)期,從而在早期階段發(fā)現(xiàn)潛在缺陷,提升代碼質(zhì)量。本文將系統(tǒng)探討嵌入軟件單元測試的標(biāo)準(zhǔn)流程、方法論、工具選擇、工程師能力要求、實(shí)際案例
    的頭像 發(fā)表于 12-01 14:31 ?895次閱讀

    新能源汽車質(zhì)量保證體系與傳統(tǒng)汽車單元測試規(guī)范的融合研究

    摘要 隨著新能源汽車產(chǎn)業(yè)的快速發(fā)展,其質(zhì)量保證體系面臨前所未有的挑戰(zhàn)。本文探討了將傳統(tǒng)汽車成熟的單元測試規(guī)范應(yīng)用于新能源汽車領(lǐng)域的可行性,重點(diǎn)分析了ISO 26262標(biāo)準(zhǔn)體系在新能源汽車電子控制系統(tǒng)
    的頭像 發(fā)表于 11-07 10:10 ?416次閱讀

    單元測試專業(yè)工具在新能源開發(fā)中的作用研究

    單元測試的歷史由來與發(fā)展 單元測試的概念可以追溯到20世紀(jì)60年代,伴隨著計(jì)算機(jī)科學(xué)和軟件工程學(xué)科的發(fā)展而逐步形成。早期的計(jì)算機(jī)科學(xué)研究(20世紀(jì)60年代)中,程序員意識(shí)到僅依靠手工調(diào)試和集成測試
    的頭像 發(fā)表于 11-03 16:03 ?577次閱讀

    邊聊安全 | 軟件單元測試的設(shè)計(jì)方法

    上海磐時(shí)PANSHI“磐時(shí),做汽車企業(yè)的安全智庫”軟件單元測試的設(shè)計(jì)方法寫在前面:軟件單元測試的設(shè)計(jì)是一個(gè)系統(tǒng)化的過程,旨在驗(yàn)證代碼的最小可測試部分(通常是函數(shù)或方法)是否按預(yù)期工作。
    的頭像 發(fā)表于 09-05 16:18 ?9966次閱讀
    邊聊安全 | 軟件<b class='flag-5'>單元測試</b>的設(shè)計(jì)方法

    HarmonyOSAI編程單元測試用例

    根據(jù)選中的ArkTS方法名稱,CodeGenie支持自動(dòng)生成對(duì)應(yīng)單元測試用例,提升測試覆蓋率。 在ArkTS文檔中,光標(biāo)放置于方法名稱上或框選完整的待測試方法代碼塊,右鍵選擇CodeGenie
    發(fā)表于 08-27 14:33

    新能源車軟件單元測試深度解析:自動(dòng)駕駛系統(tǒng)視角

    分之一以下。 ? 案例分析: ? 2022年某車企因電機(jī)控制算法中的整數(shù)溢出未在單元測試中發(fā)現(xiàn),導(dǎo)致車輛在高速行駛時(shí)突然動(dòng)力中斷,引發(fā)大規(guī)模召回。該事件凸顯了單元測試在預(yù)防系統(tǒng)性故障中的核心作用
    發(fā)表于 05-12 15:59

    新能源車背后的隱形守護(hù)者:軟件單元測試的生死較量?

    。這個(gè)教科書級(jí)的避讓動(dòng)作背后,是超過8000萬行代碼的精密協(xié)作,而確保這些代碼絕對(duì)可靠的秘密武器,正是我們今天要揭秘的軟件單元測試。 ?一、代碼世界的顯微鏡:單元測試為何重要? 如果把整車軟件比作一座摩天大樓,單元測試就是檢查
    的頭像 發(fā)表于 05-12 11:00 ?731次閱讀