回覆列表
  • 1 # 盛夏遇晚秋

    為什麼單元測試如此重要,但你卻感受不到。

    首先要知道,程式碼的終極目標有兩個,第一個是實現需求,第二個是提高程式碼質量和可維護性。

    單元測試是為了提高程式碼質量和可維護性,是實現程式碼的第二個目標的一種方法。

  • 2 # 醬飯好劇

    是什麼?單元測試(模組測試)是開發者編寫的一小段程式碼,用於檢驗被測程式碼的一個很小的、很明確的功能是否正確。

    首先要知道,我們寫程式碼有兩個目標:

    實現功能需求提高程式碼質量和可維護性

    所以程式碼寫完後並不是直接就可以交付,在規範的開發流程中,必須要對程式碼進行測試。而單元測試是第一步。

    一般來說,每一個函式或方法都是一個小的功能單元,一般是以函式/方法為最小單位進行測試,開發者編寫完程式碼後,會有很多個這樣的功能單元,在面向物件思想中,一個類中可以有很多個方法,當代碼寫完後,其邏輯性、正確性、執行結果、執行效率等等都需要進行測試才能知道編寫的程式碼是否符合要求。

    在面向過程中,需要對每個函式進行測試。

    在面向物件中,一般要對應著被測試的類建立一個單元測試類,在測試類中編寫測試方法對被測類的方法進行測試。

    單元測試是測試編寫的程式碼程式的正確性的,因此應該要程式設計師自己來完成,因為程式設計師最懂自己寫的程式碼邏輯是怎麼樣的,單元測試執行通過後,才可以交付,交付時測試程式碼要同功能程式碼一併提交。

    怎麼做?

    要編寫測試文件,為每個被測程式碼函式/方法寫好測試用例,根據測試用例來進行測試,測試用例要覆蓋每一個條件分支,要保證輸入的資料的多樣性,每個迴圈、if的條件都要覆蓋,程式碼塊內部的每一行程式碼都要確保能夠在特定輸入條件下能夠執行。

    針對被測試的單元(功能函式或者類方法),建立對應的測試單元(函式或測試類)

    編寫測試方法,要確保根據測試用例,呼叫被測函式/方法執行,然後根據測試用例來判斷執行結果是否符合預期。

    單元測試一般涉及的都是白盒測試,是以人能夠想到的可能的正確的結果或者錯誤的結果進行預期,在給定的輸入條件下,輸出都符合編寫人對功能單元的預期(有錯誤結果的預期,也有正確結果的預期),就表示測試透過。

    測試過程中,可以有很多的方法可以引入進來,提高測試效率:

    利用合適的測試框架/套件;

    使用Mock框架,透過模擬物件,來減少被測試類所需的依賴;

    使用程式碼覆蓋率測試工具,它能夠檢測測試用例的分支覆蓋情況,可以減少人為因素漏掉某個分支;

    編寫完功能程式碼後,立即編寫單元測試,不要拖著後面去做;

    同時還有其他可以提高測試質量/效率的幾個點:

    儘可能將測試資料外部化,因為測試用例提供的輸入是固定性的,硬編碼到測試用例中,會造成一些限制,比如在更改測試輸入時,需要重新修改測試程式碼,帶來返工,將輸入輸出資料放在外部檔案來儲存,可以執行測試時動態改變測試用例。

    自動化測試生成,很多大部分的功能測試用例的資料都是有跡可循的,有一些工具能夠自動生成多種多樣的測試用例,省去了人工的麻煩,同時,不光測試用例可以自動生成,甚至測試程式碼也可以自動生成,自動生成測試程式碼,然後再交給DevOps進行自動化測試執行(包括迴歸測試)。自動化測試生成也是目前我在研究的方向。

    對單元測試進行評估分析,需要對測試程式碼的質量進行監督和把握,不光要保證功能程式碼的質量,也要保證測試程式碼的質量,有很多的評價的指標資料,其中程式碼分支覆蓋率就是一個非常重要的評估指標。

  • 3 # 駿馬賓士666

    單元測試是指你這單元學習的怎麼樣,透過考試,看一看自己有沒有不會的,和學的不好的是那一部分,透過考試,在去複習一下不會的地方。

  • 4 # 呼呼哈小童鞋

    單元測試,是以一個知識點或一個章節為單位,設計相應的題目,題型以期末考試為要求設定,知識點以剛剛學的為主,題量一般以期1653末考試為準,一般初中數學100分鐘。測試的目的就是檢查學內生最近學習和掌握的情況,以便及時查漏補缺,具體的可以去優就業學習瞭解

  • 中秋節和大豐收的關聯?
  • 科比為什麼是最被高估的球員?