架構(gòu)師
其他
單元測試
推薦課程
average > 0 ? $model->average . '分' : '10.0分' ?>

TDD測試驅(qū)動(dòng)開發(fā)與單元測試實(shí)戰(zhàn)訓(xùn)練營

劉捷

某AI人工智能公司咨詢團(tuán)隊(duì) 首席顧問

獲得計(jì)算機(jī)碩士學(xué)位。畢業(yè)后在國外工作多年。回國后加入IBM中國研發(fā)中心,BEA中國研發(fā)中心,oracle中國研發(fā)中心,阿里云,京東等多家互聯(lián)網(wǎng)研發(fā)中心咨詢顧問等。最近幾年帶隊(duì)完成了數(shù)十個(gè)AI項(xiàng)目,內(nèi)容不僅包括深度學(xué)習(xí)、機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘等具體技術(shù)要點(diǎn),也包括AI的整體發(fā)展、現(xiàn)狀、應(yīng)用、商業(yè)價(jià)值、未來方向等,涵蓋內(nèi)容非常豐富。完成多個(gè)深度學(xué)習(xí)實(shí)踐項(xiàng)目,廣泛應(yīng)用于醫(yī)療、交通、農(nóng)業(yè)、氣象、銀行、電信等多個(gè)領(lǐng)域。
從2023年推出的多門課程《AI大模型賦能行業(yè)應(yīng)用與解決方案》《AI 大模型輔助軟件研發(fā)管理與效能提升》和《AI大模型技術(shù)及開發(fā)應(yīng)用實(shí)踐
》更是廣受歡迎,已經(jīng)為幾十家企業(yè)培訓(xùn),如Autodesk中國研發(fā)中心,思科(合肥,杭州,上海)研發(fā)中心,中信銀行研發(fā)中心,中信證券研發(fā)中心,平安壽險(xiǎn),平安產(chǎn)險(xiǎn),平安銀行,平安租賃,中興(南京,深圳,上海,西安)研發(fā)中心,華為,民航信,NTT DATA,北京體彩,海爾集團(tuán),聯(lián)想研發(fā)中信,等;作為一名AI技術(shù)專家,對(duì)人工智能的理解深入透徹。他不僅精通AI的編程技術(shù),還熟悉各種AI工具的使用,尤其在AI行業(yè)應(yīng)用更是有著獨(dú)特的見解和實(shí)踐經(jīng)驗(yàn);自從2023年以來幫助多家研發(fā)中心做AI輔助開發(fā)效能提升咨詢服務(wù)。同時(shí)也是微軟人工智能認(rèn)證工程師,阿里云AI人工智能訓(xùn)練師。

獲得計(jì)算機(jī)碩士學(xué)位。畢業(yè)后在國外工作多年?;貒蠹尤隝BM中國研發(fā)中心,BEA中國研發(fā)中心,oracle中國研發(fā)中心,阿里云,京東等多家互聯(lián)網(wǎng)研發(fā)中心咨詢顧問等。最近幾年帶隊(duì)完成了數(shù)十個(gè)AI項(xiàng)目,內(nèi)容不僅包括深度學(xué)習(xí)、機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘等具體技術(shù)要點(diǎn),也包括AI的整體發(fā)展、現(xiàn)狀、應(yīng)用、商業(yè)價(jià)值、未來方向等,涵蓋內(nèi)容非常豐富。完成多個(gè)深度學(xué)習(xí)實(shí)踐項(xiàng)目,廣泛應(yīng)用于醫(yī)療、交通、農(nóng)業(yè)、氣象、銀行、電信等多個(gè)領(lǐng)域。 從2023年推出的多門課程《AI大模型賦能行業(yè)應(yīng)用與解決方案》《AI 大模型輔助軟件研發(fā)管理與效能提升》和《AI大模型技術(shù)及開發(fā)應(yīng)用實(shí)踐 》更是廣受歡迎,已經(jīng)為幾十家企業(yè)培訓(xùn),如Autodesk中國研發(fā)中心,思科(合肥,杭州,上海)研發(fā)中心,中信銀行研發(fā)中心,中信證券研發(fā)中心,平安壽險(xiǎn),平安產(chǎn)險(xiǎn),平安銀行,平安租賃,中興(南京,深圳,上海,西安)研發(fā)中心,華為,民航信,NTT DATA,北京體彩,海爾集團(tuán),聯(lián)想研發(fā)中信,等;作為一名AI技術(shù)專家,對(duì)人工智能的理解深入透徹。他不僅精通AI的編程技術(shù),還熟悉各種AI工具的使用,尤其在AI行業(yè)應(yīng)用更是有著獨(dú)特的見解和實(shí)踐經(jīng)驗(yàn);自從2023年以來幫助多家研發(fā)中心做AI輔助開發(fā)效能提升咨詢服務(wù)。同時(shí)也是微軟人工智能認(rèn)證工程師,阿里云AI人工智能訓(xùn)練師。

課程費(fèi)用

6800.00 /人

課程時(shí)長

2

成為教練

課程簡介

在該課程之中,我們將揭開這些問題的背后的原因。本課程不單單是單元測試基本概念的技能講解,而是把技能和問題的場景結(jié)合,關(guān)注如何應(yīng)用單元測試解決問題,尤其關(guān)注需要通過經(jīng)驗(yàn)積累的高級(jí)技能。課程中的理論和經(jīng)驗(yàn)來自于對(duì)大量開發(fā)人員常犯錯(cuò)誤與所遇問題的歸納、分析與總結(jié),有針對(duì)性的給出解決方法,課程將重現(xiàn)這些問題的經(jīng)典案例,通過實(shí)例講解,并對(duì)應(yīng)到學(xué)員的實(shí)際工作問題,使學(xué)員能夠把傳授的經(jīng)驗(yàn)和自己的問題結(jié)合起來,有效的啟發(fā)思路、激發(fā)興趣、并掌握解決問題的基本方法。

目標(biāo)收益

培訓(xùn)對(duì)象

各類軟件研發(fā)機(jī)構(gòu)的軟件研發(fā)管理者、架構(gòu)師,軟件設(shè)計(jì)師、程序員。對(duì)于懷有設(shè)計(jì)疑問和問題,需要梳理解答的團(tuán)隊(duì)和個(gè)人,效果最佳。
單元測試的初級(jí)人員:通過課程的學(xué)習(xí)可以了解測試的基本概念,測試框架的使用,基礎(chǔ)的單元測試用例如何設(shè)計(jì)
單元測試中級(jí)人員:通過課程可以學(xué)習(xí),對(duì)象依賴如何通過stub/mock等解除依賴,mock框架的學(xué)習(xí),什么好的單元測壞死,如何提高單元測試的可讀性, 可維護(hù)性,穩(wěn)定可靠性
單元測試高級(jí)人員:通過課程可以學(xué)習(xí)到如何提高設(shè)計(jì)與代碼的可測試性, 測試覆蓋率的設(shè)計(jì),復(fù)雜企業(yè)應(yīng)用系統(tǒng)如何測試不同的層(UI/controller/Service/DB層),如何使用測試驅(qū)動(dòng)開發(fā)

課程大綱

TDD測試驅(qū)動(dòng)入門 內(nèi)容一:TDD測試驅(qū)動(dòng)開發(fā)核心概念
1.為何要使用TDD  
2.理解TDD  
3.紅燈綠燈重構(gòu)  
4.速度是關(guān)鍵  
5.TDD并非測試方法  
6.測試-黑盒測試和白盒測試 
7.質(zhì)量檢查和質(zhì)量保證的差別  
8.更好的測試  
9. 一個(gè)簡單的勝利,TDD的簡化示例
10. TDD的光芒
11. TDD帶給開發(fā)人員什么
12. TDD帶給管理者什么

內(nèi)容二:TDD測試驅(qū)動(dòng)開發(fā)案例-
1.編寫一個(gè)測試  
2.運(yùn)行所有測試并確認(rèn)最后一個(gè)未通過 
3.編寫實(shí)現(xiàn)代碼  
4.運(yùn)行所有測試  
5.重構(gòu)  
6.重復(fù)  
7.案例分析 
TDD測試驅(qū)動(dòng)開發(fā)最佳實(shí)踐 內(nèi)容一:TDD測試驅(qū)動(dòng)開發(fā)
1.TDD的節(jié)奏
2.TDD的兩個(gè)原則和TDD的目標(biāo)
3.TDD與行為驅(qū)動(dòng)開發(fā)(Behaviour Driven Development)
4.TDD與驗(yàn)收測試驅(qū)動(dòng)開發(fā)(Acceptance Test Driven Development)
5.識(shí)別代碼中的壞味道
6.重構(gòu)工具及使用
7.常用重構(gòu)技巧
8.重構(gòu)與預(yù)先設(shè)計(jì)的區(qū)別
通過案例分析,TDD的最佳實(shí)踐技巧,重構(gòu)的技巧,壞味道等
TDD測試驅(qū)動(dòng)開發(fā)最佳實(shí)踐 -重構(gòu) 內(nèi)容一:重構(gòu)
1.重構(gòu)概述
2.何時(shí)重構(gòu)
3.重構(gòu)的誤區(qū)
4.重構(gòu)是持續(xù)進(jìn)行的,不要先編寫爛代碼,再抽出重構(gòu)
5.如何發(fā)現(xiàn)哪些地方需要重構(gòu)
6.如何保證重構(gòu)的正確
7.如何測試重構(gòu)
1.通過一個(gè)小案例演示重構(gòu)的基本思想(什么時(shí)間重構(gòu),如何發(fā)現(xiàn)重構(gòu)點(diǎn),如何保證重構(gòu)的正確性,最后如何驗(yàn)收)

內(nèi)容二:案例—通過實(shí)際項(xiàng)目演示重構(gòu)
1.介紹項(xiàng)目需求情況,進(jìn)行設(shè)計(jì)
2.閱讀代碼指出代碼壞癥狀
3.通過重構(gòu)逐步改善代碼質(zhì)量
1.通過該案例演示重構(gòu)的過程,我們遇到的難處,如何解決?

內(nèi)容三:重構(gòu)關(guān)鍵—代碼的壞味道
1.代碼壞味道概述
2.代碼壞味道的分類
3.識(shí)別代碼壞味道,是重構(gòu)的最重要一步
4.所謂重構(gòu),無非就是嗅到壞味道,然后,一小步一小步的改了它。問題是,很多人對(duì)壞味道的容忍度讓他們嗅不到壞味道
1.案例分析—通過真實(shí)項(xiàng)目的代碼,分析代碼壞味道
單元測試基礎(chǔ) 內(nèi)容一:理解單元測試
1.什么是單元測試?
2.為什么要寫單元測試,為什么不寫單元測試
3.理解單元測試--第一個(gè)單元測試案例
4.好的測試是什么樣子的,為什么要寫"好"的單元測試
5.單元測試的維護(hù)成本
6.單元測試與自動(dòng)化測試
7.分析真實(shí)項(xiàng)目,如何做單元測試
8.通過案例分析,了解基本的單元測試

內(nèi)容二:敏捷測試 -實(shí)際開發(fā)中的測試區(qū)別和實(shí)踐
1.敏捷測試
2.測試金字塔
3.單元測試
4.組件測試
5.集成測試
6.軟件開發(fā)之中各種測試的區(qū)別
理解單元測試框架—XUnit工具 內(nèi)容一:理解單元測試XUnit 框架使用—(以Junit為案例介紹,其他簡單介紹)
1.Junit設(shè)計(jì)目標(biāo)
2.探索JUnit核心
3.參數(shù)化測試
4.測試異常
5.超時(shí)測試
6.引入Hamcrest匹配器
7.JUnit的測試運(yùn)行器
8.用Suite來組合測試
9.Junit與IDE,Ant,Maven集成運(yùn)行
10.JUnit與持續(xù)集成工具結(jié)合
11.通過案例分析,Junit的最佳實(shí)踐

內(nèi)容二:Junit5新特性
1.Junit5架構(gòu)
2.Junit5新特性
3.JUnit 5 架構(gòu)演進(jìn)
4.JUnit 5 新注解
5.JUnit 5新的斷言
6.超時(shí)操作的測試:assertTimeoutPreemptively
7.異常測試:assertThrows
8.JUnit 5 參數(shù)化測試
9.JUnit 5 中的前置條件(assumptions)
10.JUnit 5 嵌套測試
11.JUnit 5 動(dòng)態(tài)測試
12.JUnit 5 依賴注入
13.Junit5和Junit4 區(qū)別
從Junit4升級(jí)到Junit5
解析驗(yàn)收測試驅(qū)動(dòng)開發(fā) 內(nèi)容一:解析驗(yàn)收測試驅(qū)動(dòng)開發(fā)
1.用戶故事介紹
2.驗(yàn)收測試
3.理解過程
4.作為團(tuán)隊(duì)活動(dòng)的ATDD
5.ATDD的好處
6.我們究竟要測試什么
單元測試設(shè)計(jì) 內(nèi)容一:構(gòu)思單元測試
1.單元測試模型的設(shè)計(jì)
2.單元測試用例設(shè)計(jì)
3.為系統(tǒng)運(yùn)行起來而設(shè)計(jì)
4.為正向測試而設(shè)計(jì)用例
5.為逆向測試而設(shè)計(jì)用例
6.為滿足特殊需求而設(shè)計(jì)用例
7.為代碼覆蓋而設(shè)計(jì)用例
8.通過案例分析單元測試編程前的測試用例的設(shè)計(jì)

內(nèi)容二:單元測試設(shè)計(jì)與構(gòu)建-基于路徑的白盒測試
1.單元測試白盒設(shè)計(jì)
2.標(biāo)識(shí)單元測試點(diǎn)
3.語句覆蓋
4.判定覆蓋
5.基本路徑測試法
6.白盒測試綜合策略
7.測試覆蓋準(zhǔn)則
8.通過大量案例分析,如何應(yīng)用各種白盒測試設(shè)計(jì)技術(shù),進(jìn)行設(shè)計(jì)單元測試


內(nèi)容三:單元測試設(shè)計(jì)與構(gòu)建—基于測試數(shù)據(jù)的黑盒測試
1.單元測試黑盒設(shè)計(jì)
2.等價(jià)類設(shè)計(jì)法
3.邊界值分析法
4.判定表(決策表)驅(qū)動(dòng)化
5.狀態(tài)轉(zhuǎn)移測試設(shè)計(jì)
6.用例/場景測試
7.動(dòng)態(tài)分析法
9.通過大量案例分析,如何應(yīng)用各種黑盒測試設(shè)計(jì)技術(shù),進(jìn)行設(shè)計(jì)單元測試

內(nèi)容四:單元測試設(shè)計(jì)最佳實(shí)踐
1.單元測試的私有方法的測試
2.測試私有方法是錯(cuò)誤的!
3.私有方法重構(gòu)-將私有方法變成公共方法
4.私有方法重構(gòu)-抽取方法,形成新類
5.測試私有方法的例外情況
6.基于交互的測試最佳實(shí)踐
7.基于狀態(tài)的測試最佳實(shí)踐
8.基于狀態(tài)的測試?yán)脤?duì)象內(nèi)部狀態(tài)驗(yàn)證執(zhí)行結(jié)果的正確性。
9.利用協(xié)作對(duì)象的完成狀態(tài)測試

內(nèi)容五:單元測試設(shè)計(jì)SPIFFy原則

1.單元測試粒度
2.單元測試依賴
3.單元測試原則-SPIFFy:
4.Small: 10 lines or less, ideally
5.Precise: Checks one behavior of one class
6.Isolated: Doesn't affect other tests
7.Fast: Takes milliseconds to run
8.Frequently Run: Every time you make a change
單元測試壞味道 內(nèi)容一:測試代碼壞味道
1.模糊測試(也稱為長測試、復(fù)雜測試、冗長測試)
2.條件測試邏輯(也稱為縮排的測試碼)
3.難以測試的代碼
4.測試碼復(fù)制
5.產(chǎn)品中的測試邏輯
6.通過案例分析測試代碼的壞味道,癥狀,原因,重構(gòu)等

內(nèi)容二:測試行為的壞味道
1.斷言滾輪
2.不穩(wěn)定測試
3.脆弱性測試
4.手工干預(yù)測試(指必須手工設(shè)置測試環(huán)境,調(diào)整測試代碼)
5.緩慢測試
6.通過案例分析以上每種行為壞味道,癥狀,原因,重構(gòu)等

內(nèi)容三:測試項(xiàng)目的壞味道
1.缺陷測試壞味道
2.開發(fā)人員沒有寫測試
3.高維護(hù)成本的單元測試
4.通過案例分析以上每種行為壞味道,癥狀,原因,重構(gòu)等
測試覆蓋 內(nèi)容一:邏輯覆蓋
1.實(shí)施邏輯覆蓋的原因
2.語句覆蓋
3.判定覆蓋
4.條件覆蓋
5.條件覆蓋
6.條件判定組合覆蓋
7.多條件覆蓋
8.修正條件判定覆蓋
9.結(jié)合案例分析,邏輯覆蓋的度量

內(nèi)容二:統(tǒng)計(jì)測試覆蓋--(以Junit為案例分析)
1.使用clover為junit單元測試做覆蓋率分析
2.使用Cobertura統(tǒng)計(jì)JUnit測試覆蓋率
3.結(jié)合案例分析,通過測試覆蓋率工具,分析覆蓋率
單元測試模式 內(nèi)容一:單元測試結(jié)果驗(yàn)證模式
1.狀態(tài)驗(yàn)證模式-基于狀態(tài)的測試
2.行為驗(yàn)證模式-交互測試
3.自定義斷言—預(yù)約斷言
4.Delta斷言
5.哨兵斷言
6.根據(jù)案例分析結(jié)果的驗(yàn)證模式

內(nèi)容二:單元測試替身模式
1.Test Stub模式
2.Test Spy模式
3.Mock Object模式
4.Fake Object模式
單元測試之中如何解耦依賴 內(nèi)容一:解除依賴關(guān)系 - Extract and Override 和 Stub方法
1.反測試設(shè)計(jì)-外部依賴
2.不確定性1-時(shí)間
3.不確定性2-隨機(jī)性
4.不確定性3-外界第三方依賴
5.Extract and Override: The Universal Pliers
6. Isolate And Test Around
7.How Much Code To Extract?
8.Why You Should NOT Use Extract And Override
9.Why You SHOULD Use Extract And Override
10.利用Stub解除依賴關(guān)系
11.使用存根Stub破除依賴
12.依賴注入Stub的方式
13.多種Stub的案例
14.分析真實(shí)項(xiàng)目,如何使用Stub

內(nèi)容二:通過Mock對(duì)象解除依賴
1.Mock模擬對(duì)象和Stub存根的區(qū)別
2.手工Mock測試
3.手工Mock模擬對(duì)象的簡單示例 
4.同時(shí)使用Mock模擬對(duì)象和Stub存根
5.每個(gè)測試方法僅有一個(gè)模擬對(duì)象
6.偽對(duì)象鏈:用存根生成模擬對(duì)象或其他存根
7.手工模擬對(duì)象和存根的問題
8.分析真實(shí)項(xiàng)目,如何使用Mock, 以及相關(guān)問題

內(nèi)容三:Mock隔離框架
1.Mock與Stub的區(qū)別
2.為什么要使用隔離框架 
3.動(dòng)態(tài)生成偽對(duì)象
4.動(dòng)態(tài)生成模擬值
5.現(xiàn)有的隔離框架 
6.隔離框架的優(yōu)缺點(diǎn)
7.隔離框架設(shè)計(jì)反模式
8.結(jié)合多個(gè)案例項(xiàng)目進(jìn)行分析,什么時(shí)間使用Mock ,什么時(shí)間使用Stub, 如何權(quán)衡

內(nèi)容三:Mock隔離框架(Mockito)
1.Mockito 介紹
2.Mockito實(shí)現(xiàn)原理與架構(gòu)
3.Mockito資源
4.Mockito驗(yàn)證行為
5.Mockito模擬我們所期望的結(jié)果
6.參數(shù)匹配和自定義參數(shù)匹配
7.連續(xù)調(diào)用和驗(yàn)證確切的調(diào)用次數(shù)
8.驗(yàn)證執(zhí)行順序
9.使用方法預(yù)期回調(diào)接口生成期望值(Answer結(jié)構(gòu))
10.修改對(duì)未預(yù)設(shè)的調(diào)用返回默認(rèn)期望
11.Mockito如何實(shí)現(xiàn)Mock
增強(qiáng)設(shè)計(jì)與代碼的可測試性 內(nèi)容一:可測試性設(shè)計(jì)與可測試問題
1.什么是可測的設(shè)計(jì)
2.模塊化設(shè)計(jì)與SOLID設(shè)計(jì)原則
3.實(shí)際開發(fā)之中的可測性的問題
4.無法實(shí)例化某個(gè)類
5.無法調(diào)用某個(gè)方法
6.無法觀察到輸出
7.無法替換某個(gè)協(xié)作者
8.無法覆蓋某個(gè)方法
9.案例分析

內(nèi)容二:可測試性設(shè)計(jì)最佳實(shí)踐
1.可測的設(shè)計(jì)的指南
2.抽取接口,容許替換底層實(shí)現(xiàn)
3.在被測類中注入樁對(duì)象
4.避免復(fù)雜的私有方法
5.避免final方法
6.避免static方法
7.使用new時(shí)要當(dāng)心
8.避免在構(gòu)造函數(shù)中包含邏輯
9.避免單例
10.組合優(yōu)于繼承
11.封裝外部庫
12.避免服務(wù)查找
13.結(jié)合多個(gè)大型案例項(xiàng)目進(jìn)行分析,如何通過重構(gòu)代碼,實(shí)現(xiàn)可測試性
編寫好的單元測試 內(nèi)容一:好的單元測試測試標(biāo)準(zhǔn)-A-TRIP
1.單元測試的自動(dòng)化-Automatic
2.單元測試徹底的-Thorough
3.單元測試可重復(fù)-Repeatable
4.單元測試獨(dú)立的-Independent
5.單元測試專業(yè)的-Professional
6.通過案例分析,分析好的單元測試標(biāo)準(zhǔn)

內(nèi)容二:如何編寫好的單元測試測試
1.單元測試中的壞味道
2.如何編寫容易被看懂的模式
3.如何編寫容易維護(hù)的模式
4.如何編寫信得過的模式
5.重構(gòu)單元測試,改進(jìn)代碼設(shè)計(jì)
6.結(jié)合多個(gè)案例項(xiàng)目進(jìn)行分析,分析什么是好的單元測試

內(nèi)容三:如何編寫好的單元測試測試
1.優(yōu)秀單元測試3條準(zhǔn)則
2.優(yōu)秀單元測試-可讀性
3.優(yōu)秀單元測試-可維護(hù)性
4.優(yōu)秀單元測試-可信賴性
5.如何編寫容易被看懂的模式
6.結(jié)合多個(gè)案例項(xiàng)目進(jìn)行分析,分析什么是好的單元測試
歷史遺留系統(tǒng)如何編寫單元測試 內(nèi)容一:遺留系統(tǒng)代碼環(huán)境下如何編寫單元測試
1.從哪里開始添加單元測試
2.確定抉擇策略1-容易優(yōu)先測類的優(yōu)缺點(diǎn)
3.確定抉擇策略2-困難優(yōu)先測類的優(yōu)缺點(diǎn)
4.遺留代碼改動(dòng)準(zhǔn)則
5.重構(gòu)前寫集成測試
6.遺留代碼整潔測試的常用工具
7.為第三方代碼做學(xué)習(xí)測試
8.復(fù)雜遺留系統(tǒng)之中,如何增加單元測試以及遇到的問題
9.通過真實(shí)案例分析,在遺留系統(tǒng)的的難度和最佳實(shí)踐
TDD測試驅(qū)動(dòng)入門
內(nèi)容一:TDD測試驅(qū)動(dòng)開發(fā)核心概念
1.為何要使用TDD  
2.理解TDD  
3.紅燈綠燈重構(gòu)  
4.速度是關(guān)鍵  
5.TDD并非測試方法  
6.測試-黑盒測試和白盒測試 
7.質(zhì)量檢查和質(zhì)量保證的差別  
8.更好的測試  
9. 一個(gè)簡單的勝利,TDD的簡化示例
10. TDD的光芒
11. TDD帶給開發(fā)人員什么
12. TDD帶給管理者什么

內(nèi)容二:TDD測試驅(qū)動(dòng)開發(fā)案例-
1.編寫一個(gè)測試  
2.運(yùn)行所有測試并確認(rèn)最后一個(gè)未通過 
3.編寫實(shí)現(xiàn)代碼  
4.運(yùn)行所有測試  
5.重構(gòu)  
6.重復(fù)  
7.案例分析 
TDD測試驅(qū)動(dòng)開發(fā)最佳實(shí)踐
內(nèi)容一:TDD測試驅(qū)動(dòng)開發(fā)
1.TDD的節(jié)奏
2.TDD的兩個(gè)原則和TDD的目標(biāo)
3.TDD與行為驅(qū)動(dòng)開發(fā)(Behaviour Driven Development)
4.TDD與驗(yàn)收測試驅(qū)動(dòng)開發(fā)(Acceptance Test Driven Development)
5.識(shí)別代碼中的壞味道
6.重構(gòu)工具及使用
7.常用重構(gòu)技巧
8.重構(gòu)與預(yù)先設(shè)計(jì)的區(qū)別
通過案例分析,TDD的最佳實(shí)踐技巧,重構(gòu)的技巧,壞味道等
TDD測試驅(qū)動(dòng)開發(fā)最佳實(shí)踐 -重構(gòu)
內(nèi)容一:重構(gòu)
1.重構(gòu)概述
2.何時(shí)重構(gòu)
3.重構(gòu)的誤區(qū)
4.重構(gòu)是持續(xù)進(jìn)行的,不要先編寫爛代碼,再抽出重構(gòu)
5.如何發(fā)現(xiàn)哪些地方需要重構(gòu)
6.如何保證重構(gòu)的正確
7.如何測試重構(gòu)
1.通過一個(gè)小案例演示重構(gòu)的基本思想(什么時(shí)間重構(gòu),如何發(fā)現(xiàn)重構(gòu)點(diǎn),如何保證重構(gòu)的正確性,最后如何驗(yàn)收)

內(nèi)容二:案例—通過實(shí)際項(xiàng)目演示重構(gòu)
1.介紹項(xiàng)目需求情況,進(jìn)行設(shè)計(jì)
2.閱讀代碼指出代碼壞癥狀
3.通過重構(gòu)逐步改善代碼質(zhì)量
1.通過該案例演示重構(gòu)的過程,我們遇到的難處,如何解決?

內(nèi)容三:重構(gòu)關(guān)鍵—代碼的壞味道
1.代碼壞味道概述
2.代碼壞味道的分類
3.識(shí)別代碼壞味道,是重構(gòu)的最重要一步
4.所謂重構(gòu),無非就是嗅到壞味道,然后,一小步一小步的改了它。問題是,很多人對(duì)壞味道的容忍度讓他們嗅不到壞味道
1.案例分析—通過真實(shí)項(xiàng)目的代碼,分析代碼壞味道
單元測試基礎(chǔ)
內(nèi)容一:理解單元測試
1.什么是單元測試?
2.為什么要寫單元測試,為什么不寫單元測試
3.理解單元測試--第一個(gè)單元測試案例
4.好的測試是什么樣子的,為什么要寫"好"的單元測試
5.單元測試的維護(hù)成本
6.單元測試與自動(dòng)化測試
7.分析真實(shí)項(xiàng)目,如何做單元測試
8.通過案例分析,了解基本的單元測試

內(nèi)容二:敏捷測試 -實(shí)際開發(fā)中的測試區(qū)別和實(shí)踐
1.敏捷測試
2.測試金字塔
3.單元測試
4.組件測試
5.集成測試
6.軟件開發(fā)之中各種測試的區(qū)別
理解單元測試框架—XUnit工具
內(nèi)容一:理解單元測試XUnit 框架使用—(以Junit為案例介紹,其他簡單介紹)
1.Junit設(shè)計(jì)目標(biāo)
2.探索JUnit核心
3.參數(shù)化測試
4.測試異常
5.超時(shí)測試
6.引入Hamcrest匹配器
7.JUnit的測試運(yùn)行器
8.用Suite來組合測試
9.Junit與IDE,Ant,Maven集成運(yùn)行
10.JUnit與持續(xù)集成工具結(jié)合
11.通過案例分析,Junit的最佳實(shí)踐

內(nèi)容二:Junit5新特性
1.Junit5架構(gòu)
2.Junit5新特性
3.JUnit 5 架構(gòu)演進(jìn)
4.JUnit 5 新注解
5.JUnit 5新的斷言
6.超時(shí)操作的測試:assertTimeoutPreemptively
7.異常測試:assertThrows
8.JUnit 5 參數(shù)化測試
9.JUnit 5 中的前置條件(assumptions)
10.JUnit 5 嵌套測試
11.JUnit 5 動(dòng)態(tài)測試
12.JUnit 5 依賴注入
13.Junit5和Junit4 區(qū)別
從Junit4升級(jí)到Junit5
解析驗(yàn)收測試驅(qū)動(dòng)開發(fā)
內(nèi)容一:解析驗(yàn)收測試驅(qū)動(dòng)開發(fā)
1.用戶故事介紹
2.驗(yàn)收測試
3.理解過程
4.作為團(tuán)隊(duì)活動(dòng)的ATDD
5.ATDD的好處
6.我們究竟要測試什么
單元測試設(shè)計(jì)
內(nèi)容一:構(gòu)思單元測試
1.單元測試模型的設(shè)計(jì)
2.單元測試用例設(shè)計(jì)
3.為系統(tǒng)運(yùn)行起來而設(shè)計(jì)
4.為正向測試而設(shè)計(jì)用例
5.為逆向測試而設(shè)計(jì)用例
6.為滿足特殊需求而設(shè)計(jì)用例
7.為代碼覆蓋而設(shè)計(jì)用例
8.通過案例分析單元測試編程前的測試用例的設(shè)計(jì)

內(nèi)容二:單元測試設(shè)計(jì)與構(gòu)建-基于路徑的白盒測試
1.單元測試白盒設(shè)計(jì)
2.標(biāo)識(shí)單元測試點(diǎn)
3.語句覆蓋
4.判定覆蓋
5.基本路徑測試法
6.白盒測試綜合策略
7.測試覆蓋準(zhǔn)則
8.通過大量案例分析,如何應(yīng)用各種白盒測試設(shè)計(jì)技術(shù),進(jìn)行設(shè)計(jì)單元測試


內(nèi)容三:單元測試設(shè)計(jì)與構(gòu)建—基于測試數(shù)據(jù)的黑盒測試
1.單元測試黑盒設(shè)計(jì)
2.等價(jià)類設(shè)計(jì)法
3.邊界值分析法
4.判定表(決策表)驅(qū)動(dòng)化
5.狀態(tài)轉(zhuǎn)移測試設(shè)計(jì)
6.用例/場景測試
7.動(dòng)態(tài)分析法
9.通過大量案例分析,如何應(yīng)用各種黑盒測試設(shè)計(jì)技術(shù),進(jìn)行設(shè)計(jì)單元測試

內(nèi)容四:單元測試設(shè)計(jì)最佳實(shí)踐
1.單元測試的私有方法的測試
2.測試私有方法是錯(cuò)誤的!
3.私有方法重構(gòu)-將私有方法變成公共方法
4.私有方法重構(gòu)-抽取方法,形成新類
5.測試私有方法的例外情況
6.基于交互的測試最佳實(shí)踐
7.基于狀態(tài)的測試最佳實(shí)踐
8.基于狀態(tài)的測試?yán)脤?duì)象內(nèi)部狀態(tài)驗(yàn)證執(zhí)行結(jié)果的正確性。
9.利用協(xié)作對(duì)象的完成狀態(tài)測試

內(nèi)容五:單元測試設(shè)計(jì)SPIFFy原則

1.單元測試粒度
2.單元測試依賴
3.單元測試原則-SPIFFy:
4.Small: 10 lines or less, ideally
5.Precise: Checks one behavior of one class
6.Isolated: Doesn't affect other tests
7.Fast: Takes milliseconds to run
8.Frequently Run: Every time you make a change
單元測試壞味道
內(nèi)容一:測試代碼壞味道
1.模糊測試(也稱為長測試、復(fù)雜測試、冗長測試)
2.條件測試邏輯(也稱為縮排的測試碼)
3.難以測試的代碼
4.測試碼復(fù)制
5.產(chǎn)品中的測試邏輯
6.通過案例分析測試代碼的壞味道,癥狀,原因,重構(gòu)等

內(nèi)容二:測試行為的壞味道
1.斷言滾輪
2.不穩(wěn)定測試
3.脆弱性測試
4.手工干預(yù)測試(指必須手工設(shè)置測試環(huán)境,調(diào)整測試代碼)
5.緩慢測試
6.通過案例分析以上每種行為壞味道,癥狀,原因,重構(gòu)等

內(nèi)容三:測試項(xiàng)目的壞味道
1.缺陷測試壞味道
2.開發(fā)人員沒有寫測試
3.高維護(hù)成本的單元測試
4.通過案例分析以上每種行為壞味道,癥狀,原因,重構(gòu)等
測試覆蓋
內(nèi)容一:邏輯覆蓋
1.實(shí)施邏輯覆蓋的原因
2.語句覆蓋
3.判定覆蓋
4.條件覆蓋
5.條件覆蓋
6.條件判定組合覆蓋
7.多條件覆蓋
8.修正條件判定覆蓋
9.結(jié)合案例分析,邏輯覆蓋的度量

內(nèi)容二:統(tǒng)計(jì)測試覆蓋--(以Junit為案例分析)
1.使用clover為junit單元測試做覆蓋率分析
2.使用Cobertura統(tǒng)計(jì)JUnit測試覆蓋率
3.結(jié)合案例分析,通過測試覆蓋率工具,分析覆蓋率
單元測試模式
內(nèi)容一:單元測試結(jié)果驗(yàn)證模式
1.狀態(tài)驗(yàn)證模式-基于狀態(tài)的測試
2.行為驗(yàn)證模式-交互測試
3.自定義斷言—預(yù)約斷言
4.Delta斷言
5.哨兵斷言
6.根據(jù)案例分析結(jié)果的驗(yàn)證模式

內(nèi)容二:單元測試替身模式
1.Test Stub模式
2.Test Spy模式
3.Mock Object模式
4.Fake Object模式
單元測試之中如何解耦依賴
內(nèi)容一:解除依賴關(guān)系 - Extract and Override 和 Stub方法
1.反測試設(shè)計(jì)-外部依賴
2.不確定性1-時(shí)間
3.不確定性2-隨機(jī)性
4.不確定性3-外界第三方依賴
5.Extract and Override: The Universal Pliers
6. Isolate And Test Around
7.How Much Code To Extract?
8.Why You Should NOT Use Extract And Override
9.Why You SHOULD Use Extract And Override
10.利用Stub解除依賴關(guān)系
11.使用存根Stub破除依賴
12.依賴注入Stub的方式
13.多種Stub的案例
14.分析真實(shí)項(xiàng)目,如何使用Stub

內(nèi)容二:通過Mock對(duì)象解除依賴
1.Mock模擬對(duì)象和Stub存根的區(qū)別
2.手工Mock測試
3.手工Mock模擬對(duì)象的簡單示例 
4.同時(shí)使用Mock模擬對(duì)象和Stub存根
5.每個(gè)測試方法僅有一個(gè)模擬對(duì)象
6.偽對(duì)象鏈:用存根生成模擬對(duì)象或其他存根
7.手工模擬對(duì)象和存根的問題
8.分析真實(shí)項(xiàng)目,如何使用Mock, 以及相關(guān)問題

內(nèi)容三:Mock隔離框架
1.Mock與Stub的區(qū)別
2.為什么要使用隔離框架 
3.動(dòng)態(tài)生成偽對(duì)象
4.動(dòng)態(tài)生成模擬值
5.現(xiàn)有的隔離框架 
6.隔離框架的優(yōu)缺點(diǎn)
7.隔離框架設(shè)計(jì)反模式
8.結(jié)合多個(gè)案例項(xiàng)目進(jìn)行分析,什么時(shí)間使用Mock ,什么時(shí)間使用Stub, 如何權(quán)衡

內(nèi)容三:Mock隔離框架(Mockito)
1.Mockito 介紹
2.Mockito實(shí)現(xiàn)原理與架構(gòu)
3.Mockito資源
4.Mockito驗(yàn)證行為
5.Mockito模擬我們所期望的結(jié)果
6.參數(shù)匹配和自定義參數(shù)匹配
7.連續(xù)調(diào)用和驗(yàn)證確切的調(diào)用次數(shù)
8.驗(yàn)證執(zhí)行順序
9.使用方法預(yù)期回調(diào)接口生成期望值(Answer結(jié)構(gòu))
10.修改對(duì)未預(yù)設(shè)的調(diào)用返回默認(rèn)期望
11.Mockito如何實(shí)現(xiàn)Mock
增強(qiáng)設(shè)計(jì)與代碼的可測試性
內(nèi)容一:可測試性設(shè)計(jì)與可測試問題
1.什么是可測的設(shè)計(jì)
2.模塊化設(shè)計(jì)與SOLID設(shè)計(jì)原則
3.實(shí)際開發(fā)之中的可測性的問題
4.無法實(shí)例化某個(gè)類
5.無法調(diào)用某個(gè)方法
6.無法觀察到輸出
7.無法替換某個(gè)協(xié)作者
8.無法覆蓋某個(gè)方法
9.案例分析

內(nèi)容二:可測試性設(shè)計(jì)最佳實(shí)踐
1.可測的設(shè)計(jì)的指南
2.抽取接口,容許替換底層實(shí)現(xiàn)
3.在被測類中注入樁對(duì)象
4.避免復(fù)雜的私有方法
5.避免final方法
6.避免static方法
7.使用new時(shí)要當(dāng)心
8.避免在構(gòu)造函數(shù)中包含邏輯
9.避免單例
10.組合優(yōu)于繼承
11.封裝外部庫
12.避免服務(wù)查找
13.結(jié)合多個(gè)大型案例項(xiàng)目進(jìn)行分析,如何通過重構(gòu)代碼,實(shí)現(xiàn)可測試性
編寫好的單元測試
內(nèi)容一:好的單元測試測試標(biāo)準(zhǔn)-A-TRIP
1.單元測試的自動(dòng)化-Automatic
2.單元測試徹底的-Thorough
3.單元測試可重復(fù)-Repeatable
4.單元測試獨(dú)立的-Independent
5.單元測試專業(yè)的-Professional
6.通過案例分析,分析好的單元測試標(biāo)準(zhǔn)

內(nèi)容二:如何編寫好的單元測試測試
1.單元測試中的壞味道
2.如何編寫容易被看懂的模式
3.如何編寫容易維護(hù)的模式
4.如何編寫信得過的模式
5.重構(gòu)單元測試,改進(jìn)代碼設(shè)計(jì)
6.結(jié)合多個(gè)案例項(xiàng)目進(jìn)行分析,分析什么是好的單元測試

內(nèi)容三:如何編寫好的單元測試測試
1.優(yōu)秀單元測試3條準(zhǔn)則
2.優(yōu)秀單元測試-可讀性
3.優(yōu)秀單元測試-可維護(hù)性
4.優(yōu)秀單元測試-可信賴性
5.如何編寫容易被看懂的模式
6.結(jié)合多個(gè)案例項(xiàng)目進(jìn)行分析,分析什么是好的單元測試
歷史遺留系統(tǒng)如何編寫單元測試
內(nèi)容一:遺留系統(tǒng)代碼環(huán)境下如何編寫單元測試
1.從哪里開始添加單元測試
2.確定抉擇策略1-容易優(yōu)先測類的優(yōu)缺點(diǎn)
3.確定抉擇策略2-困難優(yōu)先測類的優(yōu)缺點(diǎn)
4.遺留代碼改動(dòng)準(zhǔn)則
5.重構(gòu)前寫集成測試
6.遺留代碼整潔測試的常用工具
7.為第三方代碼做學(xué)習(xí)測試
8.復(fù)雜遺留系統(tǒng)之中,如何增加單元測試以及遇到的問題
9.通過真實(shí)案例分析,在遺留系統(tǒng)的的難度和最佳實(shí)踐

課程費(fèi)用

6800.00 /人

課程時(shí)長

2

預(yù)約體驗(yàn)票 我要分享

近期公開課推薦

近期公開課推薦

活動(dòng)詳情

提交需求