Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
TDD, BDD and Beyond
Search
ipfans
April 25, 2021
Programming
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TDD, BDD and Beyond
内部培训分享
ipfans
April 25, 2021
More Decks by ipfans
See All by ipfans
Event Modeling: 新项目沟通方式
ipfans
0
68
Go最差实践
ipfans
0
61
现代方式使用asyncio
ipfans
0
130
Go的版本管理之路
ipfans
0
140
Other Decks in Programming
See All in Programming
[2026-10-14](C)Re:ゼロから始める異世界生活〜始まりの終わりと終わりの始まり〜
tosite
0
140
Web Framework Benchmark Battle 2026, Any%
a_matsuda
2
2.7k
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
140
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
當我們開始不讀 Code - AI Agent 時代,Code Review 與 Clean Code 還剩下什麼?
jame2408
1
280
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
360
Optunaを作ったときにやりたかったこと、その後 (2026/10/16, Optuna Meetup #3)
iwiwi
2
1.1k
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
170
気持ちぃ〜角丸 Squircle
ryu1013
0
320
全ての永続トークンを、生まれる前に消し去りたい!
sylph01
2
1k
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
810
PyConTW 2026 - AI Coding 不只是工具升級, 區域醫院醫療資訊系統協作開發與資訊團隊轉型實踐
cclai999
0
120
Featured
See All Featured
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
1
280
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
Git: the NoSQL Database
bkeepers
PRO
433
67k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
940
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
570
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
How to build a perfect <img>
jonoalderson
1
6.1k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
410
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1.1k
Heart Work Chapter 1 - Part 1
lfama
PRO
10
37k
Transcript
TDD, BDD AND BEYOND
什么是TDD?
什么是TDD? • TDD (Test Driven Development, 测试驱动开发) • 由极限编程中倡导,以其倡导先写测试程序,然后编码实现其功能得名; •
TDD的⽬的是取得快速反馈并使⽤“illustrate the main line”⽅法来构建程序; • 本质是⼀种确保功能被正确执⾏的思路实现;
TDD实现周期 • TDD周期 • 编写下⼀个功能测试,通常是失败 的,标记为红⾊; • 实现功能,使功能正常通过测试,标 记为绿⾊; •
重构功能,保持代码新鲜和健康,并 且过程完成后测试必须是绿⾊;
TDD优势、缺陷和不⾜ • 优势 • 研究报告说良好正确的编写错误可以避免程序错误⾼达60%。 • 让重构过程更加安⼼,你可以通过测试直接知晓是否正确执⾏。 • 强迫必须进⾏良好设计,以⽅便更好的编写测试代码。 •
好的测试可以做⽂档。
TDD优势、缺陷和不⾜ • 缺陷 • TDD会降低部分开发效率,尤其是未进⾏良好设计的前提下。 • 很多时候开发任务会明显增加。 • 当进⾏⼤规模重构时,⼀些时候意味着测试代码同样需要进⾏调整。 •
不⾜ • ⽆⽤测试可能会导致花费了时间但未能实现⽬标; • 测试可能存在预设输出错误,⽽很多时候往往意识不到;
什么是BDD?
什么是BDD? • BDD(Behavior-driven development, ⾏为驱动开发) • 可以视为TDD的超集,关注点为程序⾏为⽽不是实现细节; • 以软件交付的⾏为为核⼼确认,确保交付功能符合预期; •
⿎励开发者、QA和市场商务⼈员之间的协作,交付以⽤户为核⼼的代码;
BDD⽣命周期
BDD实现要素 • 通常包含以下要件: • ⽤户故事(User Story),⼀般由产品经理输 出; • 可接受结果(Accept Criteria),⼀般由产品
经理和QA输出; • ⽤户故事转化为格式化故事: • Scenario:功能描述 • Given:给定条件 • When:上下⽂信息,⽐如操作 • Then:可接受结果
BDD优势、缺陷和不⾜ • 优势 • 关注交付功能,更贴近⽤户,⽅便业务理解,定义业务价值; • 明确验收标准,有效帮助QA验证 • 对边界问题和异常问题定义有⼀定帮助 •
⽅便其他⾮开发⼈员理解程序功能
BDD优势、缺陷和不⾜ • 缺陷 • 不是所有的问题都那么好描述,尤其是业务流程复杂的时候; • 不是所有的情况都可能⼀次性被枚举出来,有些繁琐和⼩粒度的业务组合; • 不⾜ •
并不是完全真正的⽤户⾏为,更多的是程序的结果输出⾏为; • 构建描述时为了开发/转换体验,与通⽤沟通语⾔仍旧存在差异;
WHY BDD?
关注功能交付!
BDD IN GOLANG
BDD IN ACTION
BDD IN ACTION
BDD IN ACTION