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
Test Driven Development
Search
Jun Lin
July 18, 2013
Programming
59
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Test Driven Development
Jun Lin
July 18, 2013
More Decks by Jun Lin
See All by Jun Lin
A brief introduction to GenStage
linjunpop
1
70
Microservices
linjunpop
0
97
Actor Model
linjunpop
0
43
Ruby for iOS developer
linjunpop
0
1k
A brief introduction to GitHub
linjunpop
1
75
Ruby 2.0
linjunpop
1
180
Other Decks in Programming
See All in Programming
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
9.3k
技術的負債の返済は、AI時代の複利で効く投資 — 経営としての意思決定とその遂行
curekoshimizu
1
2k
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.7k
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
290
AI時代のコードレビューは人に向けるな、仕組みに向けろ
texmeijin
5
3.2k
速習iPhone Duo対応
yuukiw00w
2
920
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
180
Findy - エンジニア向け会社紹介/Findy Company Deck
findyinc
6
400k
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
110
wkhtmltopdfの次どうするか問題2026
willnet
2
1.8k
マイコン向けの軽量Ruby「PicoRuby」で各種デバイスを制御するネイティブアプリの実現手法
bash0c7
0
460
Embedded Swiftで作る自作USBデバイス によるiOSデバイスの自動テスト / iOSDC Japan 2026 glassfiber
glassfiber
0
250
Featured
See All Featured
KATA
mclloyd
PRO
35
16k
Documentation Writing (for coders)
carmenintech
77
5.6k
The Curious Case for Waylosing
cassininazir
1
550
A Soul's Torment
seathinner
8
3.7k
Bash Introduction
62gerente
615
220k
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
510
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Ethics towards AI in product and experience design
skipperchong
2
410
Scaling GitHub
holman
464
140k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
440
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Transcript
TDD Thursday, July 18, 13
WHY TDD Thursday, July 18, 13
AVOID CHAOS Thursday, July 18, 13
TIME Thursday, July 18, 13
WHAT IS TDD Thursday, July 18, 13
TEST DRIVEN DEVELOPMENT Thursday, July 18, 13
WRITE TEST FAIL IMPLEMENT TEST PASS Thursday, July 18, 13
BENEFITS Thursday, July 18, 13
MODULARIZED FLEXIBLE EXTENSIBLE Thursday, July 18, 13
WRITTEN FOR TESTABILITY Thursday, July 18, 13
TESTS FOR EVERY FEATURE GET WRITTEN Thursday, July 18, 13
DEEPER UNDERSTANDING OF REQUIREMENTS Thursday, July 18, 13
EXAMPLES Thursday, July 18, 13
subject(:hero) { Hero.first } it "carries a sword" do hero.equipment.should
include "sword" end http://betterspecs.org/ Thursday, July 18, 13
#import "TestHelper.h" #import "UserModel.h" SpecBegin(UserModel) describe(@"UserModel", ^{ describe(@".all", ^{ it(@"load
all users", ^{ expect([UserModel all]).toNot.beEmpty(); }); }); }); SpecEnd https://github.com/linjunpop/Diamond/blob/master/DiamondTests/UserModelSpec.m Thursday, July 18, 13
PROBLEMS Thursday, July 18, 13
UI TESTS Thursday, July 18, 13
OVER-TESTING Thursday, July 18, 13
CODE ONLY FOR TESTING Thursday, July 18, 13
CONTINUOUS INTEGRATION Thursday, July 18, 13
CHECKOUT BRANCH COMMIT CI RUN PASS MERGE TO MASTER FAIL
PUSH Thursday, July 18, 13
WHY CI Thursday, July 18, 13
AUTOMATION Thursday, July 18, 13
MULTIPLE RUNTIME ENVIRONMENT Thursday, July 18, 13
script: 'ci/travis.rb' before_install: - gem install bundler rvm: - 1.9.3
- 2.0.0 env: - "GEM=railties" - "GEM=ap,am,amo,as,av" - "GEM=ar:mysql" - "GEM=ar:mysql2" - "GEM=ar:sqlite3" - "GEM=ar:postgresql" notifications: email: false irc: on_success: change on_failure: always channels: - "irc.freenode.org#rails-contrib" campfire: on_success: change on_failure: always https://github.com/rails/rails/blob/master/.travis.yml Thursday, July 18, 13
MULTIPLE DEVICE MODELS Thursday, July 18, 13
Thursday, July 18, 13
LET SERVER DO HEAVY-LIFTING Thursday, July 18, 13
iOS CI SINCE Xcode 5 Thursday, July 18, 13
OS X MAVERICKS OS X SERVER XCODE 5 Thursday, July
18, 13
DEMO TIME Thursday, July 18, 13
REFERENCES • http://37signals.com/svn/posts/3159-testing-like-the-tsa • http://en.wikipedia.org/wiki/Test-driven_development • http://stackoverflow.com/a/153565 Thursday, July 18,
13