SlideShare uma empresa Scribd logo
1 de 69
Teddy Chen
teddy@teddysoft.tw
http://teddy-chen-tw.blogspot.tw/
March 23 2017
Copyright@2012-2017 Teddysoft
Copyright@2012-2017 Teddysoft
《威龍闖天關》
Copyright@2012-2017 Teddysoft
SBE ATDD BDDTDD
2002
2002/
2004 2003/
2009
2009 20142009 20122011
Gojko Adzic
Kent Beck Dan North
2003
Eric
Evans
2002 2007
SBE vs. DBC
Copyright@2012-2017 Teddysoft
Write a failing
unit test
Make the
test pass
Refactor
(Classic)
TDD
Write a failing
acceptance
test
(Modern)
TDD = BDD = SBE = ATDD
1 2
3
0
(Classic)
BDD/ATDD/SBE
v
Copyright@2012-2017 Teddysoft
TDD
BDD
SBE
ATDD
xUnit/RSpec/Spock
JBehave/Cucumber/SpecFlow
Mouth
Fit/Fitness/Robot Framework
TDD
BDD
SBE
ATDD
xUnit
JBehave/Cucumber/SpecFlow
Mouth
Fit/Fitness/Robot Framework
ToolsModern
Classic Tools
Copyright@2012-2017 Teddysoft
ATDD BDD SBETDD
給我一個A 我不喜歡T 我不喜歡D
Copyright@2012-2017 Teddysoft
• 隨著時間演進:
–TDD=ATDD=BDD=SBE
能力向上提升
• 類似現象在生活中也很常見:
–國x黨=民x黨=共x黨=金光黨
口袋越來越深
Copyright@2012-2017 Teddysoft
Copyright@2012-2017 Teddysoft
《威龍闖天關》
Copyright@2012-2017 Teddysoft
為了 創造宇宙繼起之生命
尋找男女朋友,
身為大學生,
我想要參加校際聯誼活動
Copyright@2012-2017 Teddysoft
• 參加資格:
– 18~25歲的未婚男女
– 在學學生
• 找誰:
– 慈濟大學護理系?
– 銘傳大學企管系?
– 台大電機系?
– 25歲又13個月?
– 正在辦離婚手續?
– 未婚有小孩?
– 40歲美魔女但看起來像20歲?
– …
Copyright@2012-2017 Teddysoft
Specifications
Examples
• Specifications are rules
– 抽象
• Examples are concrete instances of
specifications
– 具體
• Specifications + Examples = ?
Copyright@2012-2017 Teddysoft
acceptance tests
Copyright@2012-2017 Teddysoft
法官內心獨白:
有教化的可能
Copyright@2012-2017 Teddysoft
警察內心獨白:
我們以前都這樣啊
Copyright@2012-2017 Teddysoft
acceptance tests
Copyright@2012-2017 Teddysoft
Specification Example
1. Deriving scope from goals
2. Specifying collaboratively
3. Illustrating using examples
4. Refining the specification
5. Automating validating without
changing specifications
6. Validating frequently
7. Evolving a documentation system
《SBE》
Goal
1
2
3
4
AT automation
(executable
specification)
5 6
Living Doc
7
• 價值來自於
– 產品做對: Do the right thing (what)
– 品質做好: Do the thing right (how)
• SBE可協助交付價值
– 套用在需求面 (business facing)
• Define specifications for requirements (do the right thing)
– 套用在實作面 (technology facing)
• Define specifications for implementation (do the thing right)
Copyright@2012-2017 Teddysoft
Copyright@2017 Teddysoft
Write a failing
unit test
Make the
test pass
Refactor
(Classic)
TDD
Write a failing
acceptance
test
1 2
3
0
《BDD in Action》
Copyright@2017 Teddysoft
《BDD in Action》
從敏捷需求看BDD
1 2 3 4
BDD 敏捷需求
Copyright@2017 Teddysoft
《BDD in Action》
3
4
5
從
實
作
看
BDD
Copyright@2017 Teddysoft
《BDD in Action》
從工具看BDD
1 2 3
4
5
Copyright@2017 Teddysoft
《BDD in Action》
從活的文件看BDD
Copyright@2012-2017 Teddysoft
TODO: 從目標
推導出功能
Copyright@2017 Teddysoft
FOR 泰迪軟體員工
WHO 想要減少開課流程的行政作業手續、時間與錯誤
THE lazyTS 是一個課程管理系統
THAT 讓員工簡單且快速的瀏覽與管理課程和學員,並
協助員工在課前、課中與課後提供學員服務
UNLIKE 其他的課程管理系統,
OUR PRODUCT 儘量各自獨立,讓員工可以單獨使用他
所需要的特定功能
減少作業時間與錯誤
增加滿意度
增加回購率
Vision Goals
Copyright@2017 Teddysoft
減少作業時間
與錯誤
泰迪軟
體員工
Why
(Value)
學員
助教
Who How
(Capability,
Impact)
What
(Feature,
Deliverable)
減少手動錯誤
增加自動化 自動產生結業證書
無腦開發票
自動產生上課簽到表
自動寄發通知 報名成功通知
開課成功通知
繳費成功通知
催繳通知
課前通知
課後通知
三聯發票
二聯發票
統編帶出公司
公司帶出統編
自動產生發票簽收單
2017/4/15開課,招生中XD
Copyright@2017 Teddysoft
Copyright@2017 Teddysoft
Copyright@2017 Teddysoft
Copyright@2012-2017 Teddysoft
✔ ✔
TODO:
探索實例
Copyright@2012-2017 Teddysoft
Feature: Issuing invoices for companies
In order to avoid errors
As a Teddysoft employee
I want to brainlessly issue an company invoice with tax included price
Scenario: Issuing invoices with one item for companies by providing
tax included prices
Given The VAT rate is 0.05
And the tax included price is 17000
When I issue a company invoice
Then I should see the VAT is 810
And the tax excluded price is 16190
Copyright@2012-2017 Teddysoft
# language: zh-TW
功能: 產生課程結業證書
劇本大綱: 成功產生證書
假如 學員 <name> 在 <year> 年 <month> 月 <day> 日參加 <course>
而且 課程時數為 <hour> 小時
當 我產生一張結業證書
那麼 我應該看到結業證書pdf檔案
例子:
| name | year | month | day | course | hour |
| 宮成思 | 2017 | 05 | 6,7 | Scrum敏捷方法實作班 | 12 |
| 歐歐皮 | 2017 | 03 | 18,19,25 | Design Pattern入門實作班 | 18 |
| 思光 | 2017 | 04 | 15 | 使用者故事對照工作坊 | 18 |
Copyright@2012-2017 Teddysoft
✔ ✔
TODO:
定義與實作
Step Definition
✔
Copyright@2012-2017 Teddysoft
Copyright@2012-2017 Teddysoft
已定義
尚未實作
Copyright@2012-2017 Teddysoft
Copyright@2012-2017 Teddysoft
✔ ✔
TODO:
用單元測試
定義技術規格
✔ ✔
Copyright@2012-2017 Teddysoft
Copyright@2012-2017 Teddysoft
✔ ✔
TODO:
完成實作讓單
元測試通過
✔ ✔ ✔
Copyright@2012-2017 Teddysoft
Copyright@2012-2017 Teddysoft
Copyright@2012-2017 Teddysoft
Copyright@2012-2017 Teddysoft
Copyright@2012-2017 Teddysoft
✔ ✔ ✔ ✔ ✔
✔
• 重構 (6)
• 探索下一個Scenario 或 Feature
– Go to (4) or (3)
Copyright@2012-2017 Teddysoft
Copyright@2012-2017 Teddysoft
《Domain-Driven Design》
Design Model
Copyright@2012-2017 Teddysoft
Implementation
Model
After
Implementation
Refactoring
Test & Code
OOAD
BDD
Test cases as
specification
Domain Model
Use Case
Model
Domain Model
DDD and OOAD
skills can help
Refactoring
• BDD is a
– second-generation
– outside-in
– pull-based
– multiple-stakeholder
– multiple-scale
– high-automation
• agile methodology.
Copyright@2012-2017 Teddysoft
Dan North
• Explore examples through collaboration
– Do the right thing and do the thing right
– 沒有合作(僅由Stakeholders/PO提供)的user
story實際上是一種設計,並非需求
• Create living documentation
– 讓軟體變軟
Copyright@2012-2017 Teddysoft
Gojko Adzic
• 好技術不死,只是換個名字、換個說法,再
來一次。
• Quality over Names
Copyright@2012-2017 Teddysoft Q & A
• 搞笑談軟工部落格
– http://teddy-chen-tw.blogspot.com
• 搞笑談軟工Facebook
– https://www.facebook.com/groups/teddy.tw
• 泰迪軟體官方網站
– http://teddysoft.tw
Copyright@2012-2017 Teddysoft

Mais conteúdo relacionado

Destaque

從五個小故事看敏捷開發精神
從五個小故事看敏捷開發精神從五個小故事看敏捷開發精神
從五個小故事看敏捷開發精神teddysoft
 
Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材teddysoft
 
[演講] Scrum導入經驗分享
[演講] Scrum導入經驗分享[演講] Scrum導入經驗分享
[演講] Scrum導入經驗分享teddysoft
 
團隊開發永遠的痛 談導入團隊開發的共同規範(Final)
團隊開發永遠的痛   談導入團隊開發的共同規範(Final)團隊開發永遠的痛   談導入團隊開發的共同規範(Final)
團隊開發永遠的痛 談導入團隊開發的共同規範(Final)Gelis Wu
 
[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309teddysoft
 
了解模式讓你更敏捷 (C C Agile 活動分享)
了解模式讓你更敏捷 (C C Agile 活動分享)了解模式讓你更敏捷 (C C Agile 活動分享)
了解模式讓你更敏捷 (C C Agile 活動分享)teddysoft
 
給軟體工程師的不廢話 R 語言精要班
給軟體工程師的不廢話 R 語言精要班給軟體工程師的不廢話 R 語言精要班
給軟體工程師的不廢話 R 語言精要班台灣資料科學年會
 
逆説のカスタマーサクセス
逆説のカスタマーサクセス逆説のカスタマーサクセス
逆説のカスタマーサクセスTakaaki Umada
 
Ruby 入門 第一次就上手
Ruby 入門 第一次就上手Ruby 入門 第一次就上手
Ruby 入門 第一次就上手Wen-Tien Chang
 
protobuf-net - Protocol Buffers library for idiomatic .NET
protobuf-net - Protocol Buffers library for idiomatic .NETprotobuf-net - Protocol Buffers library for idiomatic .NET
protobuf-net - Protocol Buffers library for idiomatic .NETLarry Nung
 
產品原型(Prototype)觀念分享 with Axure RP
產品原型(Prototype)觀念分享 with Axure RP產品原型(Prototype)觀念分享 with Axure RP
產品原型(Prototype)觀念分享 with Axure RPArden Wang
 
數據如何輔助 App 設計流程
數據如何輔助 App 設計流程數據如何輔助 App 設計流程
數據如何輔助 App 設計流程Soldier Hsieh
 
Database Continuous Integration
Database Continuous IntegrationDatabase Continuous Integration
Database Continuous IntegrationSteven Wang
 
好設計如何好 @ C.C. Agile #14
好設計如何好 @ C.C. Agile #14好設計如何好 @ C.C. Agile #14
好設計如何好 @ C.C. Agile #14teddysoft
 
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題teddysoft
 
Meaningful Design
Meaningful DesignMeaningful Design
Meaningful DesignDave Hogue
 
RSpec 讓你愛上寫測試
RSpec 讓你愛上寫測試RSpec 讓你愛上寫測試
RSpec 讓你愛上寫測試Wen-Tien Chang
 
那一夜我們說Pattern design patterns 20周年-published
那一夜我們說Pattern design patterns 20周年-published那一夜我們說Pattern design patterns 20周年-published
那一夜我們說Pattern design patterns 20周年-publishedteddysoft
 
Gc in golang
Gc in golangGc in golang
Gc in golangGenchi Lu
 

Destaque (20)

從五個小故事看敏捷開發精神
從五個小故事看敏捷開發精神從五個小故事看敏捷開發精神
從五個小故事看敏捷開發精神
 
Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材
 
[演講] Scrum導入經驗分享
[演講] Scrum導入經驗分享[演講] Scrum導入經驗分享
[演講] Scrum導入經驗分享
 
團隊開發永遠的痛 談導入團隊開發的共同規範(Final)
團隊開發永遠的痛   談導入團隊開發的共同規範(Final)團隊開發永遠的痛   談導入團隊開發的共同規範(Final)
團隊開發永遠的痛 談導入團隊開發的共同規範(Final)
 
[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309
 
了解模式讓你更敏捷 (C C Agile 活動分享)
了解模式讓你更敏捷 (C C Agile 活動分享)了解模式讓你更敏捷 (C C Agile 活動分享)
了解模式讓你更敏捷 (C C Agile 活動分享)
 
給軟體工程師的不廢話 R 語言精要班
給軟體工程師的不廢話 R 語言精要班給軟體工程師的不廢話 R 語言精要班
給軟體工程師的不廢話 R 語言精要班
 
逆説のカスタマーサクセス
逆説のカスタマーサクセス逆説のカスタマーサクセス
逆説のカスタマーサクセス
 
Build Features, Not Apps
Build Features, Not AppsBuild Features, Not Apps
Build Features, Not Apps
 
Ruby 入門 第一次就上手
Ruby 入門 第一次就上手Ruby 入門 第一次就上手
Ruby 入門 第一次就上手
 
protobuf-net - Protocol Buffers library for idiomatic .NET
protobuf-net - Protocol Buffers library for idiomatic .NETprotobuf-net - Protocol Buffers library for idiomatic .NET
protobuf-net - Protocol Buffers library for idiomatic .NET
 
產品原型(Prototype)觀念分享 with Axure RP
產品原型(Prototype)觀念分享 with Axure RP產品原型(Prototype)觀念分享 with Axure RP
產品原型(Prototype)觀念分享 with Axure RP
 
數據如何輔助 App 設計流程
數據如何輔助 App 設計流程數據如何輔助 App 設計流程
數據如何輔助 App 設計流程
 
Database Continuous Integration
Database Continuous IntegrationDatabase Continuous Integration
Database Continuous Integration
 
好設計如何好 @ C.C. Agile #14
好設計如何好 @ C.C. Agile #14好設計如何好 @ C.C. Agile #14
好設計如何好 @ C.C. Agile #14
 
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
 
Meaningful Design
Meaningful DesignMeaningful Design
Meaningful Design
 
RSpec 讓你愛上寫測試
RSpec 讓你愛上寫測試RSpec 讓你愛上寫測試
RSpec 讓你愛上寫測試
 
那一夜我們說Pattern design patterns 20周年-published
那一夜我們說Pattern design patterns 20周年-published那一夜我們說Pattern design patterns 20周年-published
那一夜我們說Pattern design patterns 20周年-published
 
Gc in golang
Gc in golangGc in golang
Gc in golang
 

Mais de teddysoft

Agile the timeless way of software development-2019-05-17-v1.2-published
Agile the timeless way of software development-2019-05-17-v1.2-publishedAgile the timeless way of software development-2019-05-17-v1.2-published
Agile the timeless way of software development-2019-05-17-v1.2-publishedteddysoft
 
從Bowling Game Kata看敏捷開發
從Bowling Game Kata看敏捷開發從Bowling Game Kata看敏捷開發
從Bowling Game Kata看敏捷開發teddysoft
 
說出一嘴好設計 1.1
說出一嘴好設計 1.1說出一嘴好設計 1.1
說出一嘴好設計 1.1teddysoft
 
跟著Teddy讀Pattern
跟著Teddy讀Pattern跟著Teddy讀Pattern
跟著Teddy讀Patternteddysoft
 
洗白你的軟體架構
洗白你的軟體架構洗白你的軟體架構
洗白你的軟體架構teddysoft
 
如何學好設計模式
如何學好設計模式如何學好設計模式
如何學好設計模式teddysoft
 
Java 例外處理壞味道與重構技術
Java 例外處理壞味道與重構技術Java 例外處理壞味道與重構技術
Java 例外處理壞味道與重構技術teddysoft
 
模式入門第一堂課: 30分鐘寫出一個模式
模式入門第一堂課: 30分鐘寫出一個模式模式入門第一堂課: 30分鐘寫出一個模式
模式入門第一堂課: 30分鐘寫出一個模式teddysoft
 

Mais de teddysoft (8)

Agile the timeless way of software development-2019-05-17-v1.2-published
Agile the timeless way of software development-2019-05-17-v1.2-publishedAgile the timeless way of software development-2019-05-17-v1.2-published
Agile the timeless way of software development-2019-05-17-v1.2-published
 
從Bowling Game Kata看敏捷開發
從Bowling Game Kata看敏捷開發從Bowling Game Kata看敏捷開發
從Bowling Game Kata看敏捷開發
 
說出一嘴好設計 1.1
說出一嘴好設計 1.1說出一嘴好設計 1.1
說出一嘴好設計 1.1
 
跟著Teddy讀Pattern
跟著Teddy讀Pattern跟著Teddy讀Pattern
跟著Teddy讀Pattern
 
洗白你的軟體架構
洗白你的軟體架構洗白你的軟體架構
洗白你的軟體架構
 
如何學好設計模式
如何學好設計模式如何學好設計模式
如何學好設計模式
 
Java 例外處理壞味道與重構技術
Java 例外處理壞味道與重構技術Java 例外處理壞味道與重構技術
Java 例外處理壞味道與重構技術
 
模式入門第一堂課: 30分鐘寫出一個模式
模式入門第一堂課: 30分鐘寫出一個模式模式入門第一堂課: 30分鐘寫出一個模式
模式入門第一堂課: 30分鐘寫出一個模式
 

Bdd atdd sbe_tdd_ddd_published