Unit Test。
從踏入軟體工作就聽過的名詞~
但以往只知道是小小的測試,就是要補一堆很廢的文件
以示對自己程式碼的負責。
腦中浮現的就是很不想面對的名詞,但又好像聽起來很有道理必須面對。
回想過去,沒有好的工具、沒有明確的 Unit Test 定義,完全就是放給他爛
最近自己也開始著墨這個部份~ 上完課終於有全面的瞭解啦!!
什麼是 Unit Test?
- 最小的測試單位
- 外部相依性為零
- 不具備商業邏輯
- 測試案例之間相依性為零
- 一個測試案例只測一件事
※ 「一件事」並不一定是一個 Function,而是一個「工作單元」(Unit of Work)
※ Unit Test 是最小粒度測試,具最佳的健壯性
好的 Unit Test 特性:FIRST
- Fast
- Independent
- Repeatable
- Self-Validating
- Timely
※ Fast:除了表示效能高之外,更重要的是能夠維持 Coding 的節奏。
思緒不會被冗長、緩慢的測試中斷。「意圖導向」!
※ Independent:便於移植到其他環境測試
※ Self-Validating:該單元測試有確實針對精確的項目進行驗證
若該測試項目出現紅燈,可以馬上知道什麼功能因為某確切原因掛了!
不需要再透過某些方式一一查證確切因素。
※ Timely:測試程式與 Produciton code 同時完成並且上扣,而非單單只是拋上
Production Code,對自己的程式碼表示負責。
3A 原則
- Arrange
- 初始宣告
- 初始化目標物件
- 初始化方法參數
- 建立模擬物件行為
- 設定環境變數期望結果
- Act
- 實際呼叫測試目標物件方法
- Assert
- 驗證目標是否如同預期運作
※ 應於測試程式內依序撰寫三個部份,建立團隊的共同 Concept