iT邦幫忙

鐵人檔案

2021 iThome 鐵人賽
回列表
Software Development

單元測試從入門到進階之路 (以 C# NUnit 3 X NSubstitute 為例) 系列

隨著軟體技術的高速發展,系統的複雜性也隨之增加。以我以往工作經歷,很常有上線系統發生不知名的臭蟲,追蹤問題後往往是發生在與此功能較沒直接相關的環節,例如輸入網址取得資料,資料出不來的問題出自於商業邏輯的撰寫問題;又或是網頁套件更新,導致延伸套件的功能出錯等。

因此,透過這次鐵人賽,了解測試的重要性,其理論、實作與應用等。測試領域有種常見的分法可分成單元測試、整合測試與端點測試,而單元測試是測試當中的基底,會隨著系統架構的不同,而需決策出適合的單元測試框架與目標,以達到最大效益。因此,鐵人賽文章會以 Roy Osherove 出版的「單元測試的藝術」為本賽事內主,再搭配線上教學資源為輔。

鐵人鍊成 | 共 30 篇文章 | 18 人訂閱 訂閱系列文 RSS系列文
DAY 1

Day 1-單元測試 (前言)

以往工作的經歷,身邊工程師對測試的認識 對於目前撰寫程式的開發員來說,「測試」一詞大多是不會感到陌生的。甚至很多人也可說出測試大致上的目的;然而,就我目前所接觸...

2021-09-01 ‧ 由 SunshineYen 分享
DAY 2

Day 2-什麼是單元測試及何謂優秀的單元測試? (基礎-1)

最初的單元測試傳統定義 在 Roy Osherove 撰寫的單元測試的藝術中,1970 年代就已經有單元測試的概念了。並且隨著時代的推移,對於單元測試也循序漸進...

2021-09-02 ‧ 由 SunshineYen 分享
DAY 3

Day 3-何時用單元測試?在這之前,要先釐清除了單元測試以外的測試 (基礎-2)

單元測試的好朋友—整合測試 (Integration Test) 在昨天 Day 2-什麼是單元測試及何謂優秀的單元測試? (基礎-1) 曾提到早期的測試開發,...

2021-09-03 ‧ 由 SunshineYen 分享
DAY 4

Day 4-Visual Studio 環境安裝與介紹第一隻測試專案 HelloBank (基礎-3)

工欲善其事,必先利其器—該先裝 Visual Studio 了 今天的內容會開始介紹我們要使用的整合開發環境 — Visual Studio,在維基百科是這樣簡...

2021-09-04 ‧ 由 SunshineYen 分享
DAY 5

Day 5-單元測試 3A 原則 (Arrange, Act 和 Assert) (基礎-4)

專案架構介紹 從圖中可以看到 HelloBank 方案當中有兩隻專案,一隻是 HelloBank 專案(對應於軟體開發就是商業邏輯開發的 Library);另一...

2021-09-05 ‧ 由 SunshineYen 分享
DAY 6

Day 6-單元測試 NUnit 更多常用的特性-1 (基礎-5)

Setup 和 Teardown 在單元測試的藝術提到:進行單元測試時,很重要的一點是確保之前測試過程中所遺留下來的資料或執行個體得以銷毀,新的測試執行時,狀態...

2021-09-06 ‧ 由 SunshineYen 分享
DAY 7

Day 7-單元測試 NUnit 更多常用的特性-2 (基礎-6)

如何撰寫測試驗證例外 — ExpectedExcetption 與 Assert.Throws(delegate) 我們在撰寫商業邏輯時,能夠準確預期功能在什麼...

2021-09-07 ‧ 由 SunshineYen 分享
DAY 8

Day 8-單元測試完善 HelloBank、基礎總結與核心技術概述 (基礎-7)

單元測試基礎的示範專案 HelloBank 收尾與現階段總結 我們在Day 4-Visual Studio 環境安裝與介紹第一隻測試專案 HelloBank (...

2021-09-08 ‧ 由 SunshineYen 分享
DAY 9

Day 9-假物件 (Fake) - 虛設常式 (Stub)-1 (核心技術-1)

虛設常式(Stub)簡介 今天的文章進入了新的系列,那因為接下來的概念是非常抽象的,所以會介紹數個核心技術的概念,接著探討如何使用。與前一系列最大的差別在於我們...

2021-09-09 ‧ 由 SunshineYen 分享
DAY 10

Day 10-假物件 (Fake) - 虛設常式 (Stub)-2 (核心技術-2)

看程式碼說故事 (Stub-2) 前景提要,昨天提到開發者要開發 Email 通知系統,於是他就利用 JJEmail 套件裡面的 SendEmail 方法解決...

2021-09-10 ‧ 由 SunshineYen 分享