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

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

    文章

    585

    瀏覽量

    20617
  • 函數
    +關注

    關注

    3

    文章

    4349

    瀏覽量

    63033
收藏 人收藏

    評論

    相關推薦

    嵌入式系統開發中的測試方法 嵌入式系統開發與AI結合應用

    嵌入式系統開發中的測試方法 嵌入式系統開發是一個復雜的過程,涉及到硬件和軟件的緊密結合。測試是確保系統可靠性和性能的關鍵步驟。以下是一些常用的測試方法:
    的頭像 發表于 12-09 10:22 ?592次閱讀

    開發者必讀!CircleCI?組件測試單元測試全解析

    在軟件開發中,測試是保證軟件質量和可靠性的關鍵環節。作為領先的 CI/CD 平臺,CircleCI 提供了支持自動化測試的強大工具。其中,單元測試和組件測試是兩種重要的
    的頭像 發表于 12-03 09:18 ?307次閱讀

    汽車軟件單元測試的重要性

    測試不充分密切相關,這引發了社會各界對汽車軟件健壯性的重要性進行深入思考。本文將探討汽車軟件的測試,尤其是單元測試的重要性,以及WinAMS單元測
    的頭像 發表于 11-29 10:57 ?231次閱讀

    嚴格的單元測試造就完美的軟件

    關鍵系統時,更是對軟件質量提出了極高的要求。而單元測試作為軟件開發過程中的核心環節,其重要性不言而喻。 單元測試的作用 單元測試是指對軟件中的最小可
    的頭像 發表于 11-26 13:22 ?256次閱讀

    嵌入軟件單元/集成測試工具專業分析

    引言 在現代軟件開發過程中,單元測試作為確保代碼質量的重要環節,得到了廣泛的關注和應用。隨著嵌入式系統的復雜性日益增加,對高效、可靠的單元測試工具的需求也愈加迫切。WinAMS作為一款專為嵌入
    的頭像 發表于 11-19 16:41 ?315次閱讀

    ESD HBM測試差異較大的結果分析

    ESD HBM測試結果差異較大的原因,通常包括設備/儀器差異、?校準和維護水平不同、?環境條件差異、?測試樣本差異、?測試操作員技能和經驗差異以及
    的頭像 發表于 11-18 15:17 ?626次閱讀
    ESD HBM<b class='flag-5'>測試</b>差異較大的<b class='flag-5'>結果</b><b class='flag-5'>分析</b>

    matlab神經網絡工具箱結果分析

    MATLAB神經網絡工具箱的使用和結果分析MATLAB神經網絡工具箱概述 MATLAB神經網絡工具箱提供了一系列的函數和工具,用于構建、
    的頭像 發表于 07-03 10:32 ?721次閱讀

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

    機能安全ISO26262軟件工具的認證 產品概要 [Coverage master winAMS]是以嵌入式軟件的函數為單位,實施模塊單元測試以及C
    的頭像 發表于 06-26 13:41 ?525次閱讀
    <b class='flag-5'>單元測試</b>、集成<b class='flag-5'>測試</b>自動化工具

    接口測試的工具有哪些種類

    單元測試框架 單元測試框架主要用于測試單個模塊或函數的功能。雖然它們主要用于開發階段,但也可以用于接口測試。 1.1 JUnit (Java) JUnit 是 Java 語言的
    的頭像 發表于 05-30 15:07 ?877次閱讀

    影響氣密性測試結果的原因分析及解決方案分享

    影響氣密性測試結果的原因分析及解決方案分享現在的制造業,對產品的氣密性能都是要求很高的,通過氣密性測試能檢測出產品在使用時是否會出現滲漏、漏氣等質量問題,確保產品的可靠性和安全性。不過
    的頭像 發表于 05-30 08:30 ?2059次閱讀
    影響氣密性<b class='flag-5'>測試</b><b class='flag-5'>結果</b>的原因<b class='flag-5'>分析</b>及解決方案分享

    嵌入軟件單元測試工具的作用

    嵌入軟件單元測試工具是現代軟件開發過程中不可或缺的一環。它的作用在于幫助開發人員對軟件中的各個單元進行測試,以確保其功能的正確性和穩定性。單元測試
    的頭像 發表于 04-23 15:31 ?481次閱讀
    嵌入軟件<b class='flag-5'>單元測試</b>工具的作用

    LitePoint推出其最新的5G O-RAN無線電單元測試技術

    無線測試解決方案先進供應商LitePoint宣布將參加于4月12日在臺北舉行的2024年D Forum移動通信論壇,展示其最新的5G O-RAN無線電單元測試技術。
    的頭像 發表于 04-11 15:26 ?569次閱讀

    鴻蒙OS開發實戰:【自動化測試框架】使用指南

    為支撐HarmonyOS操作系統的自動化測試活動開展,我們提供了支持JS/TS語言的單元及UI測試框架,支持開發者針對應用接口進行單元測試,并且可基于UI操作進行UI自動化腳本的編寫。
    的頭像 發表于 04-08 14:49 ?1578次閱讀
    鴻蒙OS開發實戰:【自動化<b class='flag-5'>測試</b>框架】使用指南

    單元/集成測試服務

    單元/集成測試旨在證明被測軟件實現其單元/架構設計規范、證明被測軟件不包含非預期功能。經緯恒潤測試團隊擁有豐富的研發經驗、嚴格的流程管控,依據ISO26262/ASPICE等開展符合要
    的頭像 發表于 02-29 13:27 ?442次閱讀
    <b class='flag-5'>單元</b>/集成<b class='flag-5'>測試</b>服務
    主站蜘蛛池模板: 国产成人一区二区在线不卡 | 5g成人影院 | 亚洲人成亚洲人成在线观看 | 人人干免费 | 欧美午夜性春猛xxxx | 美女午夜 | 日本黄色电影在线 | 免费看黄的视频网站 | 一级片特黄 | 天堂资源最新版在线官网 | 毛片在线播 | 九九精品在线 | 天天操你 | 天堂电影免费在线观看 | 天天干天天操天天舔 | 性猛交╳xxx乱大交 性免费视频 | 黄色欧美视频 | 日本久草网 | 九月色婷婷 | 亚洲免费色 | 四虎影院免费观看视频 | 色校园 | 欧美日韩中文字幕在线 | 亚洲午夜日韩高清一区 | 色综合中文字幕 | 久久影院午夜伦手机不四虎卡 | 77ee成人 | 最新亚洲人成网站在线影院 | 琪琪see色原在线20 | 国产午夜精品久久久久免费视小说 | 日本免费黄网站 | 天天插视频 | 综合久久99 | 天天射天天拍 | 全国最大色成免费网站 | 特级片毛片 | 67pao强力打造 | 国内91视频 | 美女一级一级毛片 | aika中文字幕永久在线 | 1024手机在线看片 |