国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

關于MATLAB單元測試的過程以及結果分析

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

掃碼添加小助手

加入工程師交流群

在inputParser章節中,我們通過不斷改進getArea函數對輸入參數的處理方法,引入這樣一個觀點:一個可靠的科學工程計算項目必須有一套測試系統,才能防止開發的過程中算法退化,工程項目的推進必須在算法開發和算法測試之間不斷迭代完。在inputParser章節的最后,還根據直覺提出了一個測試系統所應該有的基本功能。在本章中,我們將學習MATLAB提供的測試解決方案:MATLAB單元測試(MATLAB Unit Test)。

基于函數的(Function-Based)單元測試的構造

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

關于MATLAB單元測試的過程以及結果分析

圖1 單元測試Framework和測試函數

主測試函數和局部測試函數看上去和普通的MATLAB函數沒有區別,其結構如圖2所示,只是命名上有一些規定而已,這些特殊的規定是為了Framework可以和測試函數契合而規定的。

關于MATLAB單元測試的過程以及結果分析

圖2 簡單的主測試函數和若干局部的測試函數構成的一個單元測試

命名規則如下:

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

在主函數中,必須調用一個叫做functiontests的函數,搜集該函數中的所有局部函數,產生一個包含這些局部函數的函數局部的測試矩陣并返回給Framework

如下所示:

關于MATLAB單元測試的過程以及結果分析

其中localfunctions是一個MATLAB函數,用來返回所有局部函數的函數句柄。局部函數的命名必須以test開頭,局部函數只接受一個輸入參數,即測試對象,即下面例子中的形參testCase:

關于MATLAB單元測試的過程以及結果分析

其中testCase由單元測試Framework提供,即Framework將自動的調用該函數,并且提供testCase參數。按照規定,要運行單元測試中的所有測試,必須調用runtests函數:

關于MATLAB單元測試的過程以及結果分析

下面用我們用基于函數的單元測試來給getArea函數的構造其單元測試。

getArea函數的單元測試:版本 I

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

關于MATLAB單元測試的過程以及結果分析

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

關于MATLAB單元測試的過程以及結果分析

圖3 單元測試Framework和測試函數的相互作用

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

關于MATLAB單元測試的過程以及結果分析

我們先給這個getArea寫第一個測試點,確保測試getArea函數在接受兩個參數的時候,能給出正確的答案:

關于MATLAB單元測試的過程以及結果分析

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

關于MATLAB單元測試的過程以及結果分析

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

關于MATLAB單元測試的過程以及結果分析

Framework將給出詳盡的錯誤報告, 其中Test Diagnostic欄目中報告的就是verifyTrue函數中的第二個參數所提供的診斷信息。

關于MATLAB單元測試的過程以及結果分析

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

關于MATLAB單元測試的過程以及結果分析

我們可以利用lasterr函數得到了這個錯誤的Error ID,這個Error ID將在負面測試中用到。下面是這個負面測試,驗證在只有一個輸入的情況下,getArea函數能夠如預期報錯。我們給測試添加一個新的測試點,叫做testTwoInputsInvalid。

關于MATLAB單元測試的過程以及結果分析

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

關于MATLAB單元測試的過程以及結果分析

然后再把這個負面測試添加到testGetArea中去:

關于MATLAB單元測試的過程以及結果分析

運行一遍,一個正面測試,一個負面測試都全部通過。

關于MATLAB單元測試的過程以及結果分析

getArea函數的單元測試: 版本II & III

測試的準備和清理工作: Tests Fixtures

驗證方法: Types of Qualification

測試方法論和以測試驅動開發(Test-Driven Development)

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

    關注

    1

    文章

    596

    瀏覽量

    23166
  • 函數
    +關注

    關注

    3

    文章

    4417

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    半導體嵌入式單元測試的核心技術、工具選型與落地全流程

    函數能夠滿足實際業務需求。4.2.3 持續優化測試流程隨著項目的進展,測試流程需要不斷優化。要定期對測試用例庫進行維護,刪除無效的測試用例,添加新的
    發表于 03-06 14:55

    嵌入式軟件單元測試必要性與專業工具重要性的系統性專業研究報告

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

    資料] 汽車軟件質量躍遷的系統性路徑:基于ISO 26262標準的單元測試體系重構與中日實踐深度對比(2026學術研究報告)

    各位伙伴,請問一個問題,[資料] 汽車軟件質量躍遷的系統性路徑:基于ISO 26262標準的單元測試體系重構與中日實踐深度對比(2026學術研究報告),這份數據誰有源參考文獻,有酬感謝
    發表于 01-08 10:09

    汽車軟件質量躍遷的系統性路徑:基于ISO 26262標準的單元測試體系重構與中日實踐深度對比(2026學術研究報告)

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

    嵌入式軟件單元測試中AI自動化與人工檢查的協同機制研究:基于專業工具的實證分析

    ? ?摘要****? 本文系統探討嵌入式軟件相較于通用軟件在單元測試層面的特殊性,分析其對高覆蓋率、可追溯性與實時性驗證的嚴苛需求,并以專業工具winAMS為技術載體,深入研究AI驅動的自動化測試
    發表于 12-31 11:22

    C語言單元測試在嵌入式軟件開發中的作用及專業工具的應用

    功能包括: 測試通過/失敗統計 代碼覆蓋率可視化 執行時間分析 缺陷跟蹤和報告生成 winAMS的圖形化界面可以直觀展示測試結果和覆蓋率數據。 七、總結與展望 C語言
    發表于 12-18 11:46

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

    作為軟件開發過程中最早進行的測試活動,能夠有效隔離代碼片段,驗證其功能是否符合設計預期,從而在早期階段發現潛在缺陷,提升代碼質量。本文將系統探討嵌入軟件單元測試的標準流程、方法論、工具選擇、工程師能力要求、實際案例
    的頭像 發表于 12-01 14:31 ?536次閱讀

    新能源汽車質量保證體系與傳統汽車單元測試規范的融合研究

    摘要 隨著新能源汽車產業的快速發展,其質量保證體系面臨前所未有的挑戰。本文探討了將傳統汽車成熟的單元測試規范應用于新能源汽車領域的可行性,重點分析了ISO 26262標準體系在新能源汽車電子控制系統
    的頭像 發表于 11-07 10:10 ?275次閱讀

    單元測試專業工具在新能源開發中的作用研究

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

    邊聊安全 | 軟件單元測試的設計方法

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

    HarmonyOSAI編程單元測試用例

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

    新能源車軟件單元測試深度解析:自動駕駛系統視角

    分之一以下。 ? 案例分析: ? 2022年某車企因電機控制算法中的整數溢出未在單元測試中發現,導致車輛在高速行駛時突然動力中斷,引發大規模召回。該事件凸顯了單元測試在預防系統性故障中的核心作用
    發表于 05-12 15:59

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

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

    單元測試在嵌入式軟件中的關鍵作用及winAMS工具的卓越貢獻

    1.?單元測試概述 ?定義與核心目標? 單元測試是軟件開發過程中針對程序模塊(如函數、類或組件)的最小可測試單元進行的驗證活動。其核心目標在
    的頭像 發表于 04-11 14:31 ?1055次閱讀

    嵌入式軟件單元測試的必要性、核心方法及工具深度解析

    一、為什么嵌入式軟件必須重視單元測試? ?嵌入式系統的特殊性? 在汽車 ECU、醫療設備控制器等場景中,軟件直接操控硬件,?單比特錯誤可能導致剎車失靈或呼吸機故障?。不同于 PC?軟件可頻繁熱更新
    的頭像 發表于 03-21 14:53 ?1431次閱讀