SlideShare una empresa de Scribd logo
1 de 88
Descargar para leer sin conexión
Willie <willie@issdu.com.tw>
本投影片使用
高橋流簡報法
測試先行
Test Driven Development


開發流程
1. 寫測試
執行此測試一定會失敗
2. 寫程式
目標為通過前一個失敗測試
3. 重構
調整架構或移除程式碼
重構後需通過所有測試
<範例>
                      程式範例抄自
http://blog.extracheese.org/2009/11/how_i_started_tdd.html
費式數列
0 1 1 2 3 5 8 13 21 34 55…
1. 寫測試
2. 寫程式
3. 重構
1. 寫測試
2. 寫程式
3. 重構
1. 寫測試
2. 寫程式
3. 重構
PASS
目前沒有重構的必要
1. 寫測試
2. 寫程式
3. 重構
1. 寫測試
2. 寫程式
3. 重構
1. 寫測試
2. 寫程式
3. 重構
PASS
目前沒有重構的必要
1. 寫測試
2. 寫程式
3. 重構
1. 寫測試
2. 寫程式
3. 重構
1. 寫測試
2. 寫程式
3. 重構
PASS
目前沒有重構的必要
1. 寫測試
2. 寫程式
3. 重構
1. 寫測試
2. 寫程式
3. 重構
1. 寫測試
2. 寫程式
3. 重構
思考
無限的 if 判斷不是辦法…
重構
1. 寫測試
2. 寫程式
3. 重構
1. 寫測試
2. 寫程式
3. 重構
測試需到
何種程度
寫到你有信心程式已經正確無誤
</範例>
<TDD好處>
(1)
使用者角度
 設計 API
(2)
低耦合
高聚力
(3)
維護性
容易交接 / 說明文件
(4)
 Over
Design
(5)
鼓勵重構
重構前必須先有充足測試
</TDD好處>
<TDD限制>
(1)
Concurrency
(2)
Security
</TDD限制>
<兩個問題>
(1)
什麼是
好架構
套用
設計模式
類別/函式
越多越好
答案
Testable
 Code
Testable
 Code
Testable
 Code
(2)
 如何學會
設計好架構
多看
程式碼
資深帶
 資淺
搭檔編程
導入困難
(衝擊公司文化)
聘請
顧問架購師
人類不是習慣
 完美的動物
 (出自人月神話一書)
if ‘架構師’ == ‘人類’:
  print(‘架構師也會犯錯’)


 (只是架構師犯錯機率較低)
答案
採用 TDD
讓自己成為自己的導師
</兩個問題>
TDD 很簡單
 因為不需要新技術
TDD 很困難
 因為要改變開發習慣
它是我們的敵人
推薦書單
多謝聆聽

Más contenido relacionado

Destacado

翻轉教室與補救教學
翻轉教室與補救教學翻轉教室與補救教學
翻轉教室與補救教學曼玉 詹
 
關於簡報這件事
關於簡報這件事關於簡報這件事
關於簡報這件事林 稚蓉
 
【簡報之五力全開】課程介紹
【簡報之五力全開】課程介紹【簡報之五力全開】課程介紹
【簡報之五力全開】課程介紹林 稚蓉
 
有效的教學簡報技巧
有效的教學簡報技巧有效的教學簡報技巧
有效的教學簡報技巧林 稚蓉
 
簡報中的修辭學技巧
簡報中的修辭學技巧簡報中的修辭學技巧
簡報中的修辭學技巧林 稚蓉
 

Destacado (6)

翻轉教室與補救教學
翻轉教室與補救教學翻轉教室與補救教學
翻轉教室與補救教學
 
均一
均一 均一
均一
 
關於簡報這件事
關於簡報這件事關於簡報這件事
關於簡報這件事
 
【簡報之五力全開】課程介紹
【簡報之五力全開】課程介紹【簡報之五力全開】課程介紹
【簡報之五力全開】課程介紹
 
有效的教學簡報技巧
有效的教學簡報技巧有效的教學簡報技巧
有效的教學簡報技巧
 
簡報中的修辭學技巧
簡報中的修辭學技巧簡報中的修辭學技巧
簡報中的修辭學技巧
 

Similar a TDD 介紹

软件工程 第七章
软件工程 第七章软件工程 第七章
软件工程 第七章浒 刘
 
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程twMVC
 
PHPUnit slide formal
PHPUnit slide formalPHPUnit slide formal
PHPUnit slide formaljameslabs
 
Selenium介绍
Selenium介绍Selenium介绍
Selenium介绍lory hou
 
How to avoid check style errors
How to avoid check style errorsHow to avoid check style errors
How to avoid check style errorsGuo Albert
 
2014/02: 嵌入式測試驅動開發
2014/02: 嵌入式測試驅動開發2014/02: 嵌入式測試驅動開發
2014/02: 嵌入式測試驅動開發AgileCommunity
 
twMVC#12 | 如何在實務上使用 TDD 來開發
twMVC#12 | 如何在實務上使用 TDD 來開發twMVC#12 | 如何在實務上使用 TDD 來開發
twMVC#12 | 如何在實務上使用 TDD 來開發twMVC
 
如何在實務上使用TDD來開發 twmvc#12
如何在實務上使用TDD來開發 twmvc#12如何在實務上使用TDD來開發 twmvc#12
如何在實務上使用TDD來開發 twmvc#12twMVC
 
嵌入式測試驅動開發
嵌入式測試驅動開發嵌入式測試驅動開發
嵌入式測試驅動開發hugo lu
 
Java2新觀念教本投影片ch1
Java2新觀念教本投影片ch1Java2新觀念教本投影片ch1
Java2新觀念教本投影片ch15045033
 
Katalon Demo v11.pdf
Katalon Demo v11.pdfKatalon Demo v11.pdf
Katalon Demo v11.pdfLinktech
 
打造面向服务的敏捷团队 Q con-beijing2012
打造面向服务的敏捷团队 Q con-beijing2012打造面向服务的敏捷团队 Q con-beijing2012
打造面向服务的敏捷团队 Q con-beijing2012Qiao Liang
 
service-oriented agile team-Q con-beijing2012
service-oriented agile team-Q con-beijing2012service-oriented agile team-Q con-beijing2012
service-oriented agile team-Q con-beijing2012Qiao Liang
 
Foundation of software development 1
Foundation of software development 1Foundation of software development 1
Foundation of software development 1netdbncku
 
使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)Max Lai
 

Similar a TDD 介紹 (20)

UnitTest.pptx
UnitTest.pptxUnitTest.pptx
UnitTest.pptx
 
PHPUnit
PHPUnitPHPUnit
PHPUnit
 
软件工程 第七章
软件工程 第七章软件工程 第七章
软件工程 第七章
 
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
twMVC#21 | 以實例說明ASP.NET Web API 服務的開發與測試過程
 
單元測試
單元測試單元測試
單元測試
 
PHPUnit slide formal
PHPUnit slide formalPHPUnit slide formal
PHPUnit slide formal
 
Selenium介绍
Selenium介绍Selenium介绍
Selenium介绍
 
How to avoid check style errors
How to avoid check style errorsHow to avoid check style errors
How to avoid check style errors
 
2014/02: 嵌入式測試驅動開發
2014/02: 嵌入式測試驅動開發2014/02: 嵌入式測試驅動開發
2014/02: 嵌入式測試驅動開發
 
twMVC#12 | 如何在實務上使用 TDD 來開發
twMVC#12 | 如何在實務上使用 TDD 來開發twMVC#12 | 如何在實務上使用 TDD 來開發
twMVC#12 | 如何在實務上使用 TDD 來開發
 
如何在實務上使用TDD來開發 twmvc#12
如何在實務上使用TDD來開發 twmvc#12如何在實務上使用TDD來開發 twmvc#12
如何在實務上使用TDD來開發 twmvc#12
 
jasmine入门指南
jasmine入门指南jasmine入门指南
jasmine入门指南
 
Unit test
Unit testUnit test
Unit test
 
嵌入式測試驅動開發
嵌入式測試驅動開發嵌入式測試驅動開發
嵌入式測試驅動開發
 
Java2新觀念教本投影片ch1
Java2新觀念教本投影片ch1Java2新觀念教本投影片ch1
Java2新觀念教本投影片ch1
 
Katalon Demo v11.pdf
Katalon Demo v11.pdfKatalon Demo v11.pdf
Katalon Demo v11.pdf
 
打造面向服务的敏捷团队 Q con-beijing2012
打造面向服务的敏捷团队 Q con-beijing2012打造面向服务的敏捷团队 Q con-beijing2012
打造面向服务的敏捷团队 Q con-beijing2012
 
service-oriented agile team-Q con-beijing2012
service-oriented agile team-Q con-beijing2012service-oriented agile team-Q con-beijing2012
service-oriented agile team-Q con-beijing2012
 
Foundation of software development 1
Foundation of software development 1Foundation of software development 1
Foundation of software development 1
 
使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)
 

TDD 介紹