Clean Architecture
【TECHPUSLE 2023】How to
develop merchant browsing
history feature in LINE
SHOPPING App using Clean
Architecture | Ricky
引用自 Uncle Bob 的文章:The Clean Architecture
情境二
main
v1.0 v1.1 v1.2
UI
Logic
API
Unit
Tests
開發人員A:Code Freeze 要來不及了,功能先出之後再補 Unit Tests 好了。
開發人員B:真是天才,我怎麼沒想過。我覺得你的想法特別好,功能先出吧!
Unit Tests:喂喂喂,你們真的還會記得我嗎?
驗收測試
驗收測試是從使用者的角度來看的——也就是系統的外部視角,確保產品符合業務需求和用
戶期望,這樣才能保證最終產品能夠滿足實際使用中的要求。
驗收測試通常遵循以下形式:
Given (前提條件)
When (操作)
Then (預期結果)
• 什麼是驗收測試?
• 驗收測試長什麼樣子?
Slide 18
Slide 18 text
使用驗收測試(前)
• 根據實作細節撰寫,unit tests 的描述難以理解和維護
Given [AuthenticationBloc] returns has login
And [GetUserFavoriteUseCase] returns valid data
When add [FavoriteItemsLoadEvent]
Then emit [FavoriteItemsUpdateState.success]
And [favoriteItems] should have valid data
Slide 19
Slide 19 text
使用驗收測試(後)
Given a user has logged in
And has favorite products
When the user opens the My Favorites page
Then the user should see their favorite products on the page
• 根據使用者的角度撰寫,unit tests 的描述簡單易懂好維護
Slide 20
Slide 20 text
撰寫驗收測試
Slide 21
Slide 21 text
AC-7
利用驗收標準(AC)化繁為簡
AC-1
AC-2
AC-3
AC-4
AC-5
AC-6
Slide 22
Slide 22 text
功能垂直拆解
• 將 User Story 依照驗收標準(AC)來垂直拆解,而不是依照層次來水平拆解。
User Story
Data Layer
Domain Layer
UI Layer
Unit Tests
Subtask-1
Subtask-2
Subtask-3
Subtask-4
User Story
Data
Layer
Domain
Layer
UI
Layer
Unit
Tests
Data
Layer
Domain
Layer
UI
Layer
Unit
Tests
Data
Layer
Domain
Layer
UI
Layer
Unit
Tests
AC-2
AC-1 AC-3
…
…