Submit Search
Upload
Clean code 單元測試
•
1 like
•
234 views
HopenglishRD
Follow
1. TDD三定律 2. 保持測試的整潔 3. 整潔的測試 4. 面向特定領域的測試語言 5. 每個測試一個斷言 6. F.I.R.S.T.
Read less
Read more
Design
Report
Share
Report
Share
1 of 34
Download now
Download to read offline
Recommended
12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin
PHPUnit slide formal
PHPUnit slide formal
jameslabs
嵌入式測試驅動開發
嵌入式測試驅動開發
hugo lu
Net调试
Net调试
breezeli
PHPUnit
PHPUnit
jameslabs
除錯、測試與效能
除錯、測試與效能
Justin Lin
2014/02: 嵌入式測試驅動開發
2014/02: 嵌入式測試驅動開發
AgileCommunity
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013
Hazem Saleh
Recommended
12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin
PHPUnit slide formal
PHPUnit slide formal
jameslabs
嵌入式測試驅動開發
嵌入式測試驅動開發
hugo lu
Net调试
Net调试
breezeli
PHPUnit
PHPUnit
jameslabs
除錯、測試與效能
除錯、測試與效能
Justin Lin
2014/02: 嵌入式測試驅動開發
2014/02: 嵌入式測試驅動開發
AgileCommunity
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013
Efficient JavaScript Unit Testing (Chinese Version), JavaOne China 2013
Hazem Saleh
打造面向服务的敏捷团队 Q con-beijing2012
打造面向服务的敏捷团队 Q con-beijing2012
Qiao Liang
service-oriented agile team-Q con-beijing2012
service-oriented agile team-Q con-beijing2012
Qiao Liang
[DevOpsDays] 硬體產業的DevOps導入與實踐 - 以工控產業為例
[DevOpsDays] 硬體產業的DevOps導入與實踐 - 以工控產業為例
TIM WANG
软件工程 第七章
软件工程 第七章
浒 刘
jasmine入门指南
jasmine入门指南
Zhicheng Wang
Unit test
Unit test
shan chen
Xpp
Xpp
drewz lin
Top100summit 宗刚-全生命周期性能评估体系的实践
Top100summit 宗刚-全生命周期性能评估体系的实践
drewz lin
twMVC#12 | 如何在實務上使用 TDD 來開發
twMVC#12 | 如何在實務上使用 TDD 來開發
twMVC
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
LetAgileFly
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
jalamar
如何在實務上使用TDD來開發 twmvc#12
如何在實務上使用TDD來開發 twmvc#12
twMVC
前端单元测试
前端单元测试
LC2009
The way to continuous delivery
The way to continuous delivery
Qiao Liang
Introduction to software quality assurance and its implementation
Introduction to software quality assurance and its implementation
Yung-Chun Chang
Nhibernate+sqlite測試實戰經驗分享
Nhibernate+sqlite測試實戰經驗分享
Wade Huang
有效的单元测试.ppt
有效的单元测试.ppt
test499702
Web testing automation
Web testing automation
kuozui
PHP 单元测试
PHP 单元测试
Lan Yanguang
测试快照
测试快照
jacquesqj
人月神話Ch.13 整體部分 Ch.14 禍起蕭牆
人月神話Ch.13 整體部分 Ch.14 禍起蕭牆
HopenglishRD
人月神話 - 未雨綢繆&干將莫邪
人月神話 - 未雨綢繆&干將莫邪
HopenglishRD
More Related Content
Similar to Clean code 單元測試
打造面向服务的敏捷团队 Q con-beijing2012
打造面向服务的敏捷团队 Q con-beijing2012
Qiao Liang
service-oriented agile team-Q con-beijing2012
service-oriented agile team-Q con-beijing2012
Qiao Liang
[DevOpsDays] 硬體產業的DevOps導入與實踐 - 以工控產業為例
[DevOpsDays] 硬體產業的DevOps導入與實踐 - 以工控產業為例
TIM WANG
软件工程 第七章
软件工程 第七章
浒 刘
jasmine入门指南
jasmine入门指南
Zhicheng Wang
Unit test
Unit test
shan chen
Xpp
Xpp
drewz lin
Top100summit 宗刚-全生命周期性能评估体系的实践
Top100summit 宗刚-全生命周期性能评估体系的实践
drewz lin
twMVC#12 | 如何在實務上使用 TDD 來開發
twMVC#12 | 如何在實務上使用 TDD 來開發
twMVC
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
LetAgileFly
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
jalamar
如何在實務上使用TDD來開發 twmvc#12
如何在實務上使用TDD來開發 twmvc#12
twMVC
前端单元测试
前端单元测试
LC2009
The way to continuous delivery
The way to continuous delivery
Qiao Liang
Introduction to software quality assurance and its implementation
Introduction to software quality assurance and its implementation
Yung-Chun Chang
Nhibernate+sqlite測試實戰經驗分享
Nhibernate+sqlite測試實戰經驗分享
Wade Huang
有效的单元测试.ppt
有效的单元测试.ppt
test499702
Web testing automation
Web testing automation
kuozui
PHP 单元测试
PHP 单元测试
Lan Yanguang
测试快照
测试快照
jacquesqj
Similar to Clean code 單元測試
(20)
打造面向服务的敏捷团队 Q con-beijing2012
打造面向服务的敏捷团队 Q con-beijing2012
service-oriented agile team-Q con-beijing2012
service-oriented agile team-Q con-beijing2012
[DevOpsDays] 硬體產業的DevOps導入與實踐 - 以工控產業為例
[DevOpsDays] 硬體產業的DevOps導入與實踐 - 以工控產業為例
软件工程 第七章
软件工程 第七章
jasmine入门指南
jasmine入门指南
Unit test
Unit test
Xpp
Xpp
Top100summit 宗刚-全生命周期性能评估体系的实践
Top100summit 宗刚-全生命周期性能评估体系的实践
twMVC#12 | 如何在實務上使用 TDD 來開發
twMVC#12 | 如何在實務上使用 TDD 來開發
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
Scrum gathering 2012 shanghai_ 敏捷测试与质量管理分会场演讲话题:快速可持续的高质量发布(路宁)
如何在實務上使用TDD來開發 twmvc#12
如何在實務上使用TDD來開發 twmvc#12
前端单元测试
前端单元测试
The way to continuous delivery
The way to continuous delivery
Introduction to software quality assurance and its implementation
Introduction to software quality assurance and its implementation
Nhibernate+sqlite測試實戰經驗分享
Nhibernate+sqlite測試實戰經驗分享
有效的单元测试.ppt
有效的单元测试.ppt
Web testing automation
Web testing automation
PHP 单元测试
PHP 单元测试
测试快照
测试快照
More from HopenglishRD
人月神話Ch.13 整體部分 Ch.14 禍起蕭牆
人月神話Ch.13 整體部分 Ch.14 禍起蕭牆
HopenglishRD
人月神話 - 未雨綢繆&干將莫邪
人月神話 - 未雨綢繆&干將莫邪
HopenglishRD
人月神話_畫蛇添足&貫徹執行
人月神話_畫蛇添足&貫徹執行
HopenglishRD
Jira實用(一)
Jira實用(一)
HopenglishRD
猴子也能懂的Node.js
猴子也能懂的Node.js
HopenglishRD
20160809 希平方研發部分享 selenium自動化測試簡介
20160809 希平方研發部分享 selenium自動化測試簡介
HopenglishRD
More from HopenglishRD
(6)
人月神話Ch.13 整體部分 Ch.14 禍起蕭牆
人月神話Ch.13 整體部分 Ch.14 禍起蕭牆
人月神話 - 未雨綢繆&干將莫邪
人月神話 - 未雨綢繆&干將莫邪
人月神話_畫蛇添足&貫徹執行
人月神話_畫蛇添足&貫徹執行
Jira實用(一)
Jira實用(一)
猴子也能懂的Node.js
猴子也能懂的Node.js
20160809 希平方研發部分享 selenium自動化測試簡介
20160809 希平方研發部分享 selenium自動化測試簡介
Clean code 單元測試
1.
單元測試 測試驅動開發(Test Driven Development) 以程式中最小的邏輯單元為對象,驗證其邏輯正確性
2.
單元測試 測試驅動開發(Test Driven Development) 以程式中最小的邏輯單元為對象,驗證其邏輯正確性 終於輪到小廢物Vito報告惹,請大家鞭小力點QAQ
3.
9.1 TDD三定律
4.
9.1 TDD三定律 (1)沒有測試之前不要寫任何功能代碼 ----> 測試先行,後寫功能
5.
9.1 TDD三定律 (1)沒有測試之前不要寫任何功能代碼 ----> 測試先行,後寫功能 (2)只編寫恰好能夠體現一個失敗情況的測試代碼 ---->
單一性
6.
9.1 TDD三定律 (1)沒有測試之前不要寫任何功能代碼 ----> 測試先行,後寫功能 (2)只編寫恰好能夠體現一個失敗情況的測試代碼 ---->
單一性 (3)只編寫恰好能通過測試的功能代碼 ----> 正確邏輯只有一種
7.
9.1 TDD三定律 (1)沒有測試之前不要寫任何功能代碼 ----> 測試先行,後寫功能(原因:先寫功能,會導致測試的邏輯變得很難寫) (2)只編寫恰好能夠體現一個失敗情況的測試代碼 ---->
單一性 (3)只編寫恰好能通過測試的功能代碼 ----> 正確邏輯只有一種
8.
9.2 保持測試的整潔 測試帶來的好處
9.
9.2 保持測試的整潔 測試帶來的好處 (1)提升程式碼擴展性。 (2)提升程式碼可維護性,較不怕修改造成額外的缺陷。
10.
9.2 保持測試的整潔 測試帶來的好處 (1)提升程式碼擴展性。 (2)提升程式碼可維護性,較不怕修改造成額外的缺陷。 (3)提升程式碼復用性 (4)實現自動化測試(白箱測試)
11.
9.3 整潔的測試 好的測試可讀性高,其結構簡潔有力,主要可分為三個環節。
12.
9.3 整潔的測試 好的測試可讀性高,其結構簡潔有力,主要可分為三個環節。 (1)構造測試數據
13.
9.3 整潔的測試 好的測試可讀性高,其結構簡潔有力,主要可分為三個環節。 (1)構造測試數據 (2)操作測試數據
14.
9.3 整潔的測試 好的測試可讀性高,其結構簡潔有力,主要可分為三個環節。 (1)構造測試數據 (2)操作測試數據 (3)驗證操作結果是否符合預期
15.
9.3 整潔的測試 好的測試可讀性高,其結構簡潔有力,主要可分為三個環節。 (1)構造測試數據 (2)操作測試數據 (3)驗證操作結果是否符合預期 試舉一例,如page.134的例子
16.
9.3 整潔的測試 public void
testGetPageHierarchyAsXml() throws Exception { makePages(“PageOne”, “PageOne.ChildOne”, “PageTwo”); /*構造*/ submitRequest(“root”, “type:pages”); /*操作*/ assertResponseIsXML(); assertResponseContains(“<name>PageOne</name>”, “<name>PageTwo</name>”,“<name>ChildOne</name>”); /*驗證*/ }
17.
9.3.1 面向特定領域的測試語言 代碼清單9-2,展示了為測試構造一種面向特定領域的語言的技 巧,沒有直接使用對系統進行操作的API,而是打造一套包裝這 些API的函數和工具代碼,這樣就更方便編寫測試,寫出來的東 西也更容易閱讀,此正是一種測試語言,可以幫助開發者編寫自 己的測試,也可以幫助後人閱讀測試。
18.
9.3.2 雙重標準 代碼清單9-3 EnvironmentControllerTest.java @Test public
void turnOnLoTempAlarmAtThreashold() throws Exception { hw.setTemp(WAY_TOO_COLD); controller.tic(); assertTrue(hw.heaterState()); assertTrue(hw.blowerState()); assertFalse(hw.coolerState()); assertFalse(hw.hiTempAlarm()); assertTrue(hw.loTempAlarm()); }
19.
9.3.2 雙重標準 代碼清單9-4 EnvironmentControllerTest.java(重構後)
(操作、驗證) turn以大寫表示,false以小寫表示,以簡化程式碼。
20.
9.3.2 雙重標準 代碼清單9-5 EnvironmentControllerTest.java(擴大到更大範圍)
(操作、驗證)
21.
9.3.2 雙重標準 代碼清單9-6 MockControlHardware.java
(構造)
22.
9.4 每個測試一個斷言 每個測試只測試一個概念,像9-8的例子就應該拆成3個測試。
23.
9.5 F.I.R.S.T. 整潔的測試遵循以下 5個規則
24.
9.5 F.I.R.S.T. 整潔的測試遵循以下 5個規則 (1)快速(Fast)
: 若測試效率差,就會懶得用,懶的用就有可能漏測,且維護程式碼較不易。
25.
9.5 F.I.R.S.T. 整潔的測試遵循以下 5個規則 (1)快速(Fast)
: 若測試效率差,就會懶得用,懶的用就有可能漏測,且維護程式碼較不易。 (2)獨立(Independent) : 當測試相依性高時,頭一個沒過,可能導致後面一拖拉庫失敗,就會 診斷困難。
26.
9.5 F.I.R.S.T. 整潔的測試遵循以下 5個規則 (1)快速(Fast)
: 若測試效率差,就會懶得用,懶的用就有可能漏測,且維護程式碼較不易。 (2)獨立(Independent) : 當測試相依性高時,頭一個沒過,可能導致後面一拖拉庫失敗,就會 診斷困難。 (3)可重複(Repeatable) : 測試應當可在任何環境下重複運行 。
27.
9.5 F.I.R.S.T. 整潔的測試遵循以下 5個規則 (1)快速(Fast)
: 若測試效率差,就會懶得用,懶的用就有可能漏測,且維護程式碼較不易。 (2)獨立(Independent) : 當測試相依性高時,頭一個沒過,可能導致後面一拖拉庫失敗,就會 診斷困難。 (3)可重複(Repeatable) : 測試應當可在任何環境下重複運行 。 (4)自足驗證(Self-Validating) : 測試應該boolean值輸出,無論通過與否。
28.
9.5 F.I.R.S.T. 整潔的測試遵循以下 5個規則 (1)快速(Fast)
: 若測試效率差,就會懶得用,懶的用就有可能漏測,且維護程式碼較不易。 (2)獨立(Independent) : 當測試相依性高時,頭一個沒過,可能導致後面一拖拉庫失敗,就會 診斷困難。 (3)可重複(Repeatable) : 測試應當可在任何環境下重複運行 。 (4)自足驗證(Self-Validating) : 測試應該boolean值輸出,無論通過與否。 (5)及時(Timely) : 測試必須先寫,因為後寫的話, 可能會發生某些程式碼難以寫測試,反而更費時 。
29.
9.6 總結
30.
9.6 總結 (1)主要架構依序[構造]、[操作]、[驗證]
31.
9.6 總結 (1)主要架構依序[構造]、[操作]、[驗證] (2)測試必須先行,因為這樣比較潮
32.
9.6 總結 (1)主要架構依序[構造]、[操作]、[驗證] (2)測試必須先行,因為這樣比較潮 (3)依照[一個測試只測試一個概念]的原則進行,不要將多個測試寫在一起。
33.
9.6 總結 (1)主要架構依序[構造]、[操作]、[驗證] (2)測試必須先行,因為這樣比較潮 (3)依照[一個測試只測試一個概念]的原則進行,不要將多個測試寫在一起。 (4)設定團隊準則,這樣相互才看得懂
34.
9.6 總結 (1)主要架構依序[構造]、[操作]、[驗證] (2)測試必須先行,因為這樣比較潮 (3)依照[一個測試只測試一個概念]的原則進行,不要將多個測試寫在一起。 (4)設定團隊準則,這樣相互才看得懂,方便抄襲XDD
Download now