【課程背景】
你是否有過這樣的感覺:
l 當你在浩如煙海的網(wǎng)頁中企圖搜索單元測試的文章時,發(fā)現(xiàn)滿眼看到的卻只是一些測試模板或空洞的測試理論
l 當你期望能在大師的指點下找到單元測試的門道,然而看完他們的文章,你感到似乎懂了卻又感覺什么都沒有學到
l 當你希望能將單元測試技巧融入實戰(zhàn)時,卻發(fā)現(xiàn)周圍的例子都還停留Calculator的原始時代
l 當你希望在快速迭代的研發(fā)潮流之中找到單元測試如何引入到組織時,看到只是一些陳詞濫調(diào)和老生常談,而看不到實際的成熟案例
今天,大多數(shù)人都已經(jīng)承認單元測試是開發(fā)者的職責,而不是QA職責. 比如Google就將單元測試推到上游的、以及內(nèi)建質(zhì)量的意識,優(yōu)秀的自動化測試實踐成為我們的榜樣。然而現(xiàn)在我們天天討論單元測試,試圖將單元測試引入組織流程時.卻會面臨一系列的問題? 單元測試價值究竟何在? 什么是好的單元測試? 如何設(shè)計單元測試用例? 單元測試覆蓋率到底應(yīng)該多少? 這么多的依賴怎么才能編寫單元測試? 怎樣提高設(shè)計與代碼的可測試性? 歷史遺留系統(tǒng)代碼還有必需去寫單元測試嗎?單元測試真是我們的銀彈嗎? 怎樣才能堅持編寫單元測試?
在該課程之中,我們將揭開這些問題的背后的原因。本課程不單單是單元測試基本概念的技能講解,而是把技能和問題的場景結(jié)合,關(guān)注如何應(yīng)用單元測試解決問題,尤其關(guān)注需要通過經(jīng)驗積累的高級技能。課程中的理論和經(jīng)驗來自于對大量開發(fā)人員常犯錯誤與所遇問題的歸納、分析與總結(jié),有針對性的給出解決方法,課程將重現(xiàn)這些問題的典型案例,通過實例講解,并對應(yīng)到學員的實際工作問題,使學員能夠把傳授的經(jīng)驗和自己的問題結(jié)合起來,有效的啟發(fā)思路、激發(fā)興趣、并掌握解決問題的基本方法。
【培訓對象】
各類軟件研發(fā)機構(gòu)的軟件研發(fā)管理者、架構(gòu)師,軟件設(shè)計師、程序員。對于懷有設(shè)計疑問和問題,需要梳理解答的團隊和個人,效果更佳。
單元測試的初級人員:通過課程的學習可以了解測試的基本概念,測試框架的使用,基礎(chǔ)的單元測試用例如何設(shè)計
單元測試中級人員:通過課程可以學習,對象依賴如何通過stub/mock等解除依賴,mock框架的學習,什么好的單元測壞死,如何提高單元測試的可讀性, 可維護性,穩(wěn)定可靠性
單元測試高級人員:通過課程可以學習到如何提高設(shè)計與代碼的可測試性, 測試覆蓋率的設(shè)計,復(fù)雜企業(yè)應(yīng)用系統(tǒng)如何測試不同的層(UI/controller/Service/DB層),如何使用測試驅(qū)動開發(fā)(TDD)?
軟件研發(fā)的管理者:如何在組織里引入單元測試? 如何評價和考核開發(fā)人員的單元測試質(zhì)量? 如何設(shè)計合適的測試覆蓋率?復(fù)雜遺留系統(tǒng)如何引入單元測試? 單元測試與持續(xù)集成如何結(jié)合? 驗收測試如何和單元測試結(jié)合?
備注:傳統(tǒng)的手工測試人員,和不寫代碼的測試工程師不建議參加,該課程主要面向開發(fā)人員而不是一般的測試工程師。
【學員要求】
學員學習本課程應(yīng)具備下列基礎(chǔ)知識:
1) 了解Java/C#/C++/C語言(建議了解面向?qū)ο蠡靖拍?span>);
2) 簡單了解XUnit框架的任何一種;熟悉一種開發(fā)工具IDE下單元測試環(huán)境(比如JUnit/Nunit/MSTest/CppUnit/TestNG/GoogleTest等,我們課程不關(guān)注具體的工具的使用)。
【課程大綱】