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
Feature. Tests. Implementation.
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Jay Hayes
April 26, 2017
Programming
71
0
Share
Feature. Tests. Implementation.
Slides to accompany
https://github.com/iamvery/testing-workshop/releases/tag/v1
Jay Hayes
April 26, 2017
More Decks by Jay Hayes
See All by Jay Hayes
Build Elixir Phoenix
iamvery
0
84
Elixir in Elixir
iamvery
1
160
A Less Complex Web with Ratchet & Jank
iamvery
0
370
Ratchet & Jank
iamvery
0
200
Elixir in Elixir
iamvery
6
1.2k
Rubyist Does Swift
iamvery
0
99
Swift Introduction
iamvery
0
320
Data Integrity
iamvery
0
110
Pairing with tmux
iamvery
2
240
Other Decks in Programming
See All in Programming
さぁV100、メモリをお食べ・・・
nilpe
0
130
dRuby over BLE
makicamel
2
300
TypeSpec で繋ぐ複数プロダクトの型安全
maroon8021
1
370
関係性から理解する"同一性"の型用語たち
pvcresin
2
630
Why Laravel apps break—Mastering the fundamentals to keep them maintainable
kentaroutakeda
1
340
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
440
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
290
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
240
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
3
980
柔軟なPDFレイアウトエディタを支える型システム設計 — Discriminated UnionとConditional Typeの実践
minako__ph
4
1.4k
The NotImplementedError Problem in Ruby
koic
1
560
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
220
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
22k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
220
Heart Work Chapter 1 - Part 1
lfama
PRO
7
36k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
150
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
590
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
How to train your dragon (web standard)
notwaldorf
97
6.7k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
The Language of Interfaces
destraynor
162
27k
The agentic SEO stack - context over prompts
schlessera
0
790
Transcript
@iamvery ♥ FEATURE. TESTS. IMPL.
@iamvery ♥ MATERIALS bit.ly/rc17tddv1 ✨ ✨ TDD: From Feature to
Tests to Implementation bit.ly/rc17tddlive
@iamvery ♥ FEATURE. TESTS. IMPL.
@iamvery ♥ bit.ly/rc17tddv1
@iamvery ♥ bit.ly/rc17tddv1 ✍
@iamvery ♥ bit.ly/rc17tddv1
@iamvery ♥ bit.ly/rc17tddv1
Jay Hayes https://iamvery.com — @iamvery
@iamvery ♥
None
We develop.
We teach.
We write.
@iamvery ♥ bit.ly/rc17tddv1 Why write tests?
@iamvery ♥ bit.ly/rc17tddv1 DEFINE DONE
@iamvery ♥ bit.ly/rc17tddv1 CONFI DENCE
@iamvery ♥ bit.ly/rc17tddv1 What types of tests are there?
@iamvery ♥ bit.ly/rc17tddv1 acceptance unit model system smoke integration load
@iamvery ♥ bit.ly/rc17tddv1 INTEGRATED. ISOLATED.
@iamvery ♥ bit.ly/rc17tddv1 INTEGRATED. Plays well with others.
@iamvery ♥ bit.ly/rc17tddv1 VERIFY BEHAVIOR
@iamvery ♥ bit.ly/rc17tddv1 SYSTEM
@iamvery ♥ bit.ly/rc17tddv1 ISOLATED. Lonely, like a wolf.
@iamvery ♥ bit.ly/rc17tddv1 DRIVE DESIGN
@iamvery ♥ bit.ly/rc17tddv1 Other names define purpose.
@iamvery ♥ bit.ly/rc17tddv1 Acceptance Tests acceptable behavior. “feature”
@iamvery ♥ bit.ly/rc17tddv1 Load Test system resilience. “pressure”
@iamvery ♥ bit.ly/rc17tddv1 Smoke Low coverage, high level “sanity”
@iamvery ♥ bit.ly/rc17tddv1 ETC.
@iamvery ♥ bit.ly/rc17tddv1 THEY’RE ALL INTEGRATED
@iamvery ♥ bit.ly/rc17tddv1 What about paradigms?
@iamvery ♥ bit.ly/rc17tddv1 TDD
@iamvery ♥ bit.ly/rc17tddv1 BDD
@iamvery ♥ bit.ly/rc17tddv1 ADD
@iamvery ♥ bit.ly/rc17tddv1 TBH
@iamvery ♥ bit.ly/rc17tddv1 IDC
@iamvery ♥ bit.ly/rc17tddv1 Methodology.
@iamvery ♥ bit.ly/rc17tddv1 Documentation.
@iamvery ♥ bit.ly/rc17tddv1 Communicate intent.
@iamvery ♥ bit.ly/rc17tddv1 You are here
@iamvery ♥ bit.ly/rc17tddv1 Ok, tell me what to do.
@iamvery ♥ bit.ly/rc17tddv1 STEP 1
@iamvery ♥ bit.ly/rc17tddv1 Acceptance ✍
@iamvery ♥ bit.ly/rc17tddv1 Integrated.
@iamvery ♥ bit.ly/rc17tddv1 User perspective.
@iamvery ♥ bit.ly/rc17tddv1 Make stuff up.
@iamvery ♥ bit.ly/rc17tddv1 Write the test you want.
@iamvery ♥ bit.ly/rc17tddv1 Last test to pass.
@iamvery ♥ bit.ly/rc17tddv1 STEP 2
@iamvery ♥ bit.ly/rc17tddv1 Run it.
@iamvery ♥ bit.ly/rc17tddv1 Listen.
@iamvery ♥ bit.ly/rc17tddv1 STEP 3
@iamvery ♥ bit.ly/rc17tddv1 Try to make it happy.
@iamvery ♥ bit.ly/rc17tddv1 Zoom in.
@iamvery ♥ bit.ly/rc17tddv1 Build units♻
@iamvery ♥ bit.ly/rc17tddv1 Isolated.
@iamvery ♥ bit.ly/rc17tddv1 GOTO 2
@iamvery ♥ bit.ly/rc17tddv1 …
@iamvery ♥ bit.ly/rc17tddv1 ✅
@iamvery ♥ bit.ly/rc17tddv1 BEWARE
@iamvery ♥ bit.ly/rc17tddv1 “NOOOPE”
@iamvery ♥ https://github.com/testdouble/contributing-tests/wiki/Testing-Pyramid
@iamvery ♥ bit.ly/rc17tddv1 TL;DR coupling
@iamvery ♥ bit.ly/rc17tddv1 OVER TESTING
@iamvery ♥ bit.ly/rc17tddv1
@iamvery ♥ bit.ly/rc17tddv1 SUPER POWERS +
@iamvery ♥ bit.ly/rc17tddv1 MORE PRODUCTIVE
@iamvery ♥ bit.ly/rc17tddv1 EASIER N THE BRAIN
@iamvery ♥ bit.ly/rc17tddv1 DEMO
QUEST IONS? @iamvery ♥ bit.ly/rc17tddv1
/ YOUR TURN @iamvery ♥ bit.ly/rc17tddv1
@iamvery ♥ bit.ly/rc17tddv1 YOUR FIRST TEST
QUEST IONS? @iamvery ♥ bit.ly/rc17tddv1
/ YOUR TURN @iamvery ♥ bit.ly/rc17tddv1
@iamvery ♥ bit.ly/rc17tddv1 NEW INTERFACE
QUEST IONS? @iamvery ♥ bit.ly/rc17tddv1
/ YOUR TURN @iamvery ♥ bit.ly/rc17tddv1
@iamvery ♥ bit.ly/rc17tddv1 GET REAL
QUEST IONS? @iamvery ♥ bit.ly/rc17tddv1
/ YOUR TURN @iamvery ♥ bit.ly/rc17tddv1
@iamvery ♥ bit.ly/rc17tddv1 WRAP IT
QUEST IONS? @iamvery ♥ bit.ly/rc17tddv1
/ YOUR TURN @iamvery ♥ bit.ly/rc17tddv1
@iamvery ♥ bit.ly/rc17tddv1 FAKE IT
QUEST IONS? @iamvery ♥ bit.ly/rc17tddv1
/ YOUR TURN @iamvery ♥ bit.ly/rc17tddv1
@iamvery ♥ bit.ly/rc17tddv1 INJECT IT
QUEST IONS? @iamvery ♥ bit.ly/rc17tddv1
@iamvery ♥ bit.ly/rc17tddv1 BONUS
@iamvery ♥