Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
TDD, BDD and Beyond
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ipfans
April 25, 2021
Programming
0
52
TDD, BDD and Beyond
内部培训分享
ipfans
April 25, 2021
Tweet
Share
More Decks by ipfans
See All by ipfans
Event Modeling: 新项目沟通方式
ipfans
0
43
Go最差实践
ipfans
0
34
现代方式使用asyncio
ipfans
0
73
Go的版本管理之路
ipfans
0
87
Other Decks in Programming
See All in Programming
Head of Engineeringが現場で回した生産性向上施策 2025→2026
gessy0129
PRO
0
180
NOT A HOTEL - 建築や人と融合し、自由を創り出すソフトウェア
not_a_hokuts
2
410
AI主導でFastAPIのWebサービスを作るときに 人間が構造化すべき境界線
okajun35
0
190
AI時代でも変わらない技術コミュニティの力~10年続く“ゆるい”つながりが生み出す価値
n_takehata
1
230
CSC307 Lecture 11
javiergs
PRO
0
580
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
650
PostgreSQL を使った快適な go test 環境を求めて
otakakot
0
120
朝日新聞のデジタル版を支えるGoバックエンド ー価値ある情報をいち早く確実にお届けするために
junkiishida
1
210
CSC307 Lecture 08
javiergs
PRO
0
690
CSC307 Lecture 09
javiergs
PRO
1
850
Metaprogramming isn't real, it can't hurt you
okuramasafumi
0
120
その「common」ディレクトリ、腐っていませんか?
kinocoboy2
1
110
Featured
See All Featured
Designing for humans not robots
tammielis
254
26k
Ethics towards AI in product and experience design
skipperchong
2
210
Agile that works and the tools we love
rasmusluckow
331
21k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
240
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
620
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
170
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
61
Un-Boring Meetings
codingconduct
0
210
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
350
GitHub's CSS Performance
jonrohan
1032
470k
Color Theory Basics | Prateek | Gurzu
gurzu
0
210
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
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