SlideShare a Scribd company logo
Angular - Test
by Leo
⼤大綱
• 為什什麼要寫測試

• ⽬目的

• 種類

• ⼼心法

• 覆蓋率

• TDD vs ATDD
為什什麼要寫測試
• 程式發⽣生錯誤,怎麼模擬出當時狀狀況及Debug?

• 改了了這個function,會不會導致別的程式掛掉?

• 到底測過了了哪些功能,有沒有漏掉的還沒測?
⽬目的
• 能快速地提供反饋

• 提昇程式碼品質

• 節省測試與除錯時間

• 整體專案時程縮短
種類
• 單元測試

• 整合測試

• 驗收測試
單元測試
• 什什麼是單元測試?

- ⽤用來來模擬外部如何使⽤用測試⽬目標物件,驗證其⾏行行為是否符合預期

- 從程式最⼩小的功能開始

- 單元指的是⼀一個類別或⼀一個模組
整合測試
• 什什麼是整合測試?

- 整合測試是將兩兩個以上的類別做整合,並且測試它們之間的運作關係是不
是正確的
驗收測試
• 什什麼是驗收測試?

- 系統⾏行行為與功能⾯面的規範

- ⽤用來來說明某⼀一個user story

- 從使⽤用者的⾓角度來來檢視(是否符合使⽤用者的期望)
⼼心法
• 在編寫某個功能的代碼之前先編寫測試代碼,然後只編寫使測試通過的功能
代碼

• 所有的實現都是測試「逼」出來來的,所有的實現代碼都是為了了讓測試通過⽽而
編寫的

• 先以調⽤用⽅方的⾓角度來來調⽤用這塊代碼,並且從調⽤用⽅方的⾓角度說出所期望的結果。
• 編寫測試時就僅僅關注測試,不想去如何實現
⼼心法
紅燈
綠燈重構
⼼心法
• 絕不跳過重構

• 儘快變綠

• 出錯後放慢腳步
覆蓋率
• 測試程式碼的涵蓋範圍

• 請把覆蓋率的數字當作⼀一個健康指標,⽤用來來檢查:

- 重要的Scenario有沒有涵蓋多⼀一點情境?

- 現在有哪些程式碼沒有被測過?

- 發⽣生測試失敗時,失敗的原因點是否有被測試案例例涵蓋到?
TDD vs ATDD
• TDD:測試驅動開發(Test-Driven Development)

• ATDD:驗收測試驅動開發(Acceptance Test Driven Development)
TDD vs ATDD
• 軟體開發過程中最常⾒見見的問題:

- ⽤用⼾戶想要的功能沒有開發

- 開發的功能並非⽤用⼾戶想要

- ⽤用⼾戶和開發⼈人員所說語⾔言不同
TDD vs ATDD
單元測試
整合測試
驗收測試
TDD ATDD
參參考資料與延伸閱讀
• 凌群電⼦子報

• 菜⿃鳥階段-測試很重要

• 各種測試介紹

• 淺談TDD、BDD與ATDD軟體開發

• 測試驅動開發——我們要的不僅僅是「質量量」

• [如何提升系統品質-Day24]測試 - Code Coverage
參參考資料與延伸閱讀
• ATDD 測試觀念念及⼿手法

• Jasmine & Protractor 簡介

• 如何寫 Angular 的測試之學習⼼心得

More Related Content

What's hot

Angular 從入門到實戰(四)
Angular 從入門到實戰(四)Angular 從入門到實戰(四)
Angular 從入門到實戰(四)
志龍 陳
 
Angular 靜態網站產生器不求人:Scully 新手入門
Angular 靜態網站產生器不求人:Scully 新手入門Angular 靜態網站產生器不求人:Scully 新手入門
Angular 靜態網站產生器不求人:Scully 新手入門
志龍 陳
 
AUGT 社群小聚 - Angular Optimize Performance NgZone 的原理與應用
AUGT 社群小聚 - Angular Optimize Performance NgZone 的原理與應用AUGT 社群小聚 - Angular Optimize Performance NgZone 的原理與應用
AUGT 社群小聚 - Angular Optimize Performance NgZone 的原理與應用
Jeff Wu
 
Angular 2 表單的處理與驗證
Angular 2 表單的處理與驗證Angular 2 表單的處理與驗證
Angular 2 表單的處理與驗證
Jeff Wu
 
Angular 2 Taiwan 小聚 Forms 介紹
Angular 2 Taiwan 小聚 Forms 介紹Angular 2 Taiwan 小聚 Forms 介紹
Angular 2 Taiwan 小聚 Forms 介紹
Jeff Wu
 
试玩前端测试的前因后果
试玩前端测试的前因后果试玩前端测试的前因后果
试玩前端测试的前因后果
hahaxiaolaohu
 
试玩前端测试的前因后果
试玩前端测试的前因后果试玩前端测试的前因后果
试玩前端测试的前因后果Zhicheng Wang
 
敏捷自动化测试中的教训 45min 中文
敏捷自动化测试中的教训 45min   中文敏捷自动化测试中的教训 45min   中文
敏捷自动化测试中的教训 45min 中文Shuyong Lin
 
Beta testing with CI
Beta testing with CIBeta testing with CI
Beta testing with CI
Liyao Chen
 
Web programming Final Project
Web programming Final ProjectWeb programming Final Project
Web programming Final Project
Penut Chen
 
持續交付高品質程式碼 公開版
持續交付高品質程式碼 公開版持續交付高品質程式碼 公開版
持續交付高品質程式碼 公開版
Kirk Chen
 

What's hot (11)

Angular 從入門到實戰(四)
Angular 從入門到實戰(四)Angular 從入門到實戰(四)
Angular 從入門到實戰(四)
 
Angular 靜態網站產生器不求人:Scully 新手入門
Angular 靜態網站產生器不求人:Scully 新手入門Angular 靜態網站產生器不求人:Scully 新手入門
Angular 靜態網站產生器不求人:Scully 新手入門
 
AUGT 社群小聚 - Angular Optimize Performance NgZone 的原理與應用
AUGT 社群小聚 - Angular Optimize Performance NgZone 的原理與應用AUGT 社群小聚 - Angular Optimize Performance NgZone 的原理與應用
AUGT 社群小聚 - Angular Optimize Performance NgZone 的原理與應用
 
Angular 2 表單的處理與驗證
Angular 2 表單的處理與驗證Angular 2 表單的處理與驗證
Angular 2 表單的處理與驗證
 
Angular 2 Taiwan 小聚 Forms 介紹
Angular 2 Taiwan 小聚 Forms 介紹Angular 2 Taiwan 小聚 Forms 介紹
Angular 2 Taiwan 小聚 Forms 介紹
 
试玩前端测试的前因后果
试玩前端测试的前因后果试玩前端测试的前因后果
试玩前端测试的前因后果
 
试玩前端测试的前因后果
试玩前端测试的前因后果试玩前端测试的前因后果
试玩前端测试的前因后果
 
敏捷自动化测试中的教训 45min 中文
敏捷自动化测试中的教训 45min   中文敏捷自动化测试中的教训 45min   中文
敏捷自动化测试中的教训 45min 中文
 
Beta testing with CI
Beta testing with CIBeta testing with CI
Beta testing with CI
 
Web programming Final Project
Web programming Final ProjectWeb programming Final Project
Web programming Final Project
 
持續交付高品質程式碼 公開版
持續交付高品質程式碼 公開版持續交付高品質程式碼 公開版
持續交付高品質程式碼 公開版
 

Similar to Angular Testing for Book Club Online of Angular Taiwan

前端单元测试
前端单元测试前端单元测试
前端单元测试LC2009
 
TDD (Test-driven development, 測試驅動開發) 基本教學
TDD (Test-driven development, 測試驅動開發) 基本教學TDD (Test-driven development, 測試驅動開發) 基本教學
TDD (Test-driven development, 測試驅動開發) 基本教學
潘 冠辰
 
2012 China 软件测试大会
2012 China 软件测试大会2012 China 软件测试大会
2012 China 软件测试大会mayun1688
 
Mobile app的測試v2
Mobile app的測試v2Mobile app的測試v2
Mobile app的測試v2Mr PM
 
Legacy code 讀書會 1st (Ch1 - Ch5)
Legacy code 讀書會 1st (Ch1 - Ch5)Legacy code 讀書會 1st (Ch1 - Ch5)
Legacy code 讀書會 1st (Ch1 - Ch5)
Fong Liou
 
Foundation of software development 1
Foundation of software development 1Foundation of software development 1
Foundation of software development 1netdbncku
 
Tip for Editors
Tip for EditorsTip for Editors
Tip for Editors
Chun-Yu Tseng
 
單元測試-到底單什麼元,測什麼試
單元測試-到底單什麼元,測什麼試單元測試-到底單什麼元,測什麼試
單元測試-到底單什麼元,測什麼試
option0417
 
UnitTest.pptx
UnitTest.pptxUnitTest.pptx
UnitTest.pptx
yuchengLiu36
 
How+we+make+tests
How+we+make+testsHow+we+make+tests
How+we+make+tests甘 李
 
單元測試
單元測試單元測試
單元測試
國昭 張
 
使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)
Max Lai
 
分布式系统测试实践
分布式系统测试实践分布式系统测试实践
分布式系统测试实践drewz lin
 
例外處理與單元測試
例外處理與單元測試例外處理與單元測試
例外處理與單元測試
國昭 張
 
有效的单元测试.ppt
有效的单元测试.ppt有效的单元测试.ppt
有效的单元测试.ppt
test499702
 
unit test & performance optimization
unit test & performance optimizationunit test & performance optimization
unit test & performance optimization
Sean Liu
 
PHP 单元测试
PHP 单元测试PHP 单元测试
PHP 单元测试
Lan Yanguang
 
Tdd with rspec.md
Tdd with rspec.mdTdd with rspec.md
Tdd with rspec.md
Leo Chang
 
Duannian agile
Duannian agileDuannian agile
Duannian agiled0nn9n
 

Similar to Angular Testing for Book Club Online of Angular Taiwan (20)

前端单元测试
前端单元测试前端单元测试
前端单元测试
 
TDD (Test-driven development, 測試驅動開發) 基本教學
TDD (Test-driven development, 測試驅動開發) 基本教學TDD (Test-driven development, 測試驅動開發) 基本教學
TDD (Test-driven development, 測試驅動開發) 基本教學
 
2012 China 软件测试大会
2012 China 软件测试大会2012 China 软件测试大会
2012 China 软件测试大会
 
Mobile app的測試v2
Mobile app的測試v2Mobile app的測試v2
Mobile app的測試v2
 
Legacy code 讀書會 1st (Ch1 - Ch5)
Legacy code 讀書會 1st (Ch1 - Ch5)Legacy code 讀書會 1st (Ch1 - Ch5)
Legacy code 讀書會 1st (Ch1 - Ch5)
 
Foundation of software development 1
Foundation of software development 1Foundation of software development 1
Foundation of software development 1
 
Tip for Editors
Tip for EditorsTip for Editors
Tip for Editors
 
單元測試-到底單什麼元,測什麼試
單元測試-到底單什麼元,測什麼試單元測試-到底單什麼元,測什麼試
單元測試-到底單什麼元,測什麼試
 
UnitTest.pptx
UnitTest.pptxUnitTest.pptx
UnitTest.pptx
 
How+we+make+tests
How+we+make+testsHow+we+make+tests
How+we+make+tests
 
單元測試
單元測試單元測試
單元測試
 
使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)使用 Pytest 進行單元測試 (PyCon TW 2021)
使用 Pytest 進行單元測試 (PyCon TW 2021)
 
分布式系统测试实践
分布式系统测试实践分布式系统测试实践
分布式系统测试实践
 
例外處理與單元測試
例外處理與單元測試例外處理與單元測試
例外處理與單元測試
 
有效的单元测试.ppt
有效的单元测试.ppt有效的单元测试.ppt
有效的单元测试.ppt
 
unit test & performance optimization
unit test & performance optimizationunit test & performance optimization
unit test & performance optimization
 
PHP 单元测试
PHP 单元测试PHP 单元测试
PHP 单元测试
 
Tdd with rspec.md
Tdd with rspec.mdTdd with rspec.md
Tdd with rspec.md
 
Duannian agile
Duannian agileDuannian agile
Duannian agile
 
Xpp
XppXpp
Xpp
 

More from 志龍 陳

Angular 原始碼探索之Signal 篇
Angular 原始碼探索之Signal 篇Angular 原始碼探索之Signal 篇
Angular 原始碼探索之Signal 篇
志龍 陳
 
你所不知道的 DDD - 文件驅動開發
你所不知道的 DDD - 文件驅動開發你所不知道的 DDD - 文件驅動開發
你所不知道的 DDD - 文件驅動開發
志龍 陳
 
這些年,我寫 Angular 時所使用的小技巧
這些年,我寫 Angular 時所使用的小技巧這些年,我寫 Angular 時所使用的小技巧
這些年,我寫 Angular 時所使用的小技巧
志龍 陳
 
工程師必須具備的軟實力-產品思維
工程師必須具備的軟實力-產品思維工程師必須具備的軟實力-產品思維
工程師必須具備的軟實力-產品思維
志龍 陳
 
工程師必須具備的軟實力-不管理時間的下場是被時間追殺
工程師必須具備的軟實力-不管理時間的下場是被時間追殺工程師必須具備的軟實力-不管理時間的下場是被時間追殺
工程師必須具備的軟實力-不管理時間的下場是被時間追殺
志龍 陳
 
工程師必須具備的軟實力-其實溝通很簡單
工程師必須具備的軟實力-其實溝通很簡單工程師必須具備的軟實力-其實溝通很簡單
工程師必須具備的軟實力-其實溝通很簡單
志龍 陳
 
工程師必備的軟實力之溝通其實很簡單
工程師必備的軟實力之溝通其實很簡單工程師必備的軟實力之溝通其實很簡單
工程師必備的軟實力之溝通其實很簡單
志龍 陳
 
Angular 深入淺出表單篇:新手入門(三)
Angular 深入淺出表單篇:新手入門(三)Angular 深入淺出表單篇:新手入門(三)
Angular 深入淺出表單篇:新手入門(三)
志龍 陳
 
Angular 深入淺出表單篇:新手入門(二)
Angular 深入淺出表單篇:新手入門(二)Angular 深入淺出表單篇:新手入門(二)
Angular 深入淺出表單篇:新手入門(二)
志龍 陳
 
Angular 深入淺出表單篇:新手入門(一)
Angular 深入淺出表單篇:新手入門(一)Angular 深入淺出表單篇:新手入門(一)
Angular 深入淺出表單篇:新手入門(一)
志龍 陳
 

More from 志龍 陳 (10)

Angular 原始碼探索之Signal 篇
Angular 原始碼探索之Signal 篇Angular 原始碼探索之Signal 篇
Angular 原始碼探索之Signal 篇
 
你所不知道的 DDD - 文件驅動開發
你所不知道的 DDD - 文件驅動開發你所不知道的 DDD - 文件驅動開發
你所不知道的 DDD - 文件驅動開發
 
這些年,我寫 Angular 時所使用的小技巧
這些年,我寫 Angular 時所使用的小技巧這些年,我寫 Angular 時所使用的小技巧
這些年,我寫 Angular 時所使用的小技巧
 
工程師必須具備的軟實力-產品思維
工程師必須具備的軟實力-產品思維工程師必須具備的軟實力-產品思維
工程師必須具備的軟實力-產品思維
 
工程師必須具備的軟實力-不管理時間的下場是被時間追殺
工程師必須具備的軟實力-不管理時間的下場是被時間追殺工程師必須具備的軟實力-不管理時間的下場是被時間追殺
工程師必須具備的軟實力-不管理時間的下場是被時間追殺
 
工程師必須具備的軟實力-其實溝通很簡單
工程師必須具備的軟實力-其實溝通很簡單工程師必須具備的軟實力-其實溝通很簡單
工程師必須具備的軟實力-其實溝通很簡單
 
工程師必備的軟實力之溝通其實很簡單
工程師必備的軟實力之溝通其實很簡單工程師必備的軟實力之溝通其實很簡單
工程師必備的軟實力之溝通其實很簡單
 
Angular 深入淺出表單篇:新手入門(三)
Angular 深入淺出表單篇:新手入門(三)Angular 深入淺出表單篇:新手入門(三)
Angular 深入淺出表單篇:新手入門(三)
 
Angular 深入淺出表單篇:新手入門(二)
Angular 深入淺出表單篇:新手入門(二)Angular 深入淺出表單篇:新手入門(二)
Angular 深入淺出表單篇:新手入門(二)
 
Angular 深入淺出表單篇:新手入門(一)
Angular 深入淺出表單篇:新手入門(一)Angular 深入淺出表單篇:新手入門(一)
Angular 深入淺出表單篇:新手入門(一)
 

Angular Testing for Book Club Online of Angular Taiwan