課程簡介
本課程的內(nèi)容是講師十余年軟件開發(fā)實踐的總結,講師從端到端的軟件開發(fā)角度來對單元測試的關鍵問題和解決方案進行探究,能給學員和軟件開發(fā)組織帶來較大的收益,其內(nèi)容遠遠超出了一般性的技能講解范疇。
目標收益
通過培訓,學員可以掌握單元測試所必須的接口設計、自動化用例編寫及相關的xUnit框架、Stub/Mock框架的使用,編寫易于理解、易于復用和易于擴展的單元測試。此外,學員還能學到已經(jīng)被證實有效的單元測試相關模式和方法,以及遺留代碼的單元測試編寫等技能。
通過培訓,軟件開發(fā)組織能夠?qū)τ谑裁词呛玫膯卧獪y試建立一致的認知,建立利于理解、利于維護的、可長期持續(xù)演進的單元測試基線,為軟件設計改善、代碼質(zhì)量提升及產(chǎn)品的質(zhì)量保證建立有效的保障機制。
培訓對象
本課程的培訓面向的對象以從事軟件開發(fā)實踐的工程師和軟件團隊的技術負責人為主,課程具備Java、C#、C/C++等多個語言版本,講師具備為特定領域定制的豐富經(jīng)驗和能力。
課程大綱
單元測試的目標和本質(zhì) |
內(nèi)容一:從端到端角度看單元測試 1. 單元測試到底要解決的是什么問題 2. 單元測試的基本價值觀 3. 第一個單元測試演示 4. 理解單元測試中的核心概念 |
單元測試工具 |
內(nèi)容二:熟練運用單元測試工具和基本模式 1. 單元測試框架 2. 四階段測試模式 3. 數(shù)據(jù)驅(qū)動的測試 4. 練習:為既有代碼編寫單元測試 內(nèi)容三:單元測試中的依賴和Mock工具 1. 依賴對單元測試的影響 2. 測試替身的類型 3. Stub和Mock工具 4. 設計接縫和依賴注入 5. 接口設計和重構 6. 練習:使用Mock框架隔離和控制依賴 |
單元測試模式 |
內(nèi)容四:好的(和不好的)單元測試 1. 單元測試的壞味道 2. 好的單元測試的設計和編寫原則 3. 單元測試模式 4. 單元測試的重構 5. 練習:單元測試代碼的重構 |
為遺留代碼編寫測試 |
內(nèi)容五:和遺留代碼相關的單元測試問題 1. 為什么遺留代碼的測試那么難? 2. 遺留代碼的測試策略和技術 3. 練習:為遺留代碼編寫測試 |
測試優(yōu)先和測試驅(qū)動開發(fā) |
內(nèi)容六:測試優(yōu)先 1. 測試優(yōu)先的可行性和必要性 2. 測試優(yōu)先和傳統(tǒng)測試策略的比較 內(nèi)容七:測試驅(qū)動開發(fā) 1. 測試驅(qū)動開發(fā)案例演示 2. 測試驅(qū)動開發(fā)的方法 3. 練習:使用測試驅(qū)動開發(fā)方法編寫代碼 |
組織級的單元測試關注 |
內(nèi)容八:如何在組織級成功導入單元測試實踐 1. 單元測試的組織和管理 2. 單元測試和持續(xù)集成 3. 組織級導入單元測試的常見問題和應對方案 |
單元測試的目標和本質(zhì) 內(nèi)容一:從端到端角度看單元測試 1. 單元測試到底要解決的是什么問題 2. 單元測試的基本價值觀 3. 第一個單元測試演示 4. 理解單元測試中的核心概念 |
單元測試工具 內(nèi)容二:熟練運用單元測試工具和基本模式 1. 單元測試框架 2. 四階段測試模式 3. 數(shù)據(jù)驅(qū)動的測試 4. 練習:為既有代碼編寫單元測試 內(nèi)容三:單元測試中的依賴和Mock工具 1. 依賴對單元測試的影響 2. 測試替身的類型 3. Stub和Mock工具 4. 設計接縫和依賴注入 5. 接口設計和重構 6. 練習:使用Mock框架隔離和控制依賴 |
單元測試模式 內(nèi)容四:好的(和不好的)單元測試 1. 單元測試的壞味道 2. 好的單元測試的設計和編寫原則 3. 單元測試模式 4. 單元測試的重構 5. 練習:單元測試代碼的重構 |
為遺留代碼編寫測試 內(nèi)容五:和遺留代碼相關的單元測試問題 1. 為什么遺留代碼的測試那么難? 2. 遺留代碼的測試策略和技術 3. 練習:為遺留代碼編寫測試 |
測試優(yōu)先和測試驅(qū)動開發(fā) 內(nèi)容六:測試優(yōu)先 1. 測試優(yōu)先的可行性和必要性 2. 測試優(yōu)先和傳統(tǒng)測試策略的比較 內(nèi)容七:測試驅(qū)動開發(fā) 1. 測試驅(qū)動開發(fā)案例演示 2. 測試驅(qū)動開發(fā)的方法 3. 練習:使用測試驅(qū)動開發(fā)方法編寫代碼 |
組織級的單元測試關注 內(nèi)容八:如何在組織級成功導入單元測試實踐 1. 單元測試的組織和管理 2. 單元測試和持續(xù)集成 3. 組織級導入單元測試的常見問題和應對方案 |