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
What you need to start TDD.
Search
Dassimen
September 25, 2019
Programming
1
110
What you need to start TDD.
Dassimen
September 25, 2019
Tweet
Share
More Decks by Dassimen
See All by Dassimen
Write code with "Test First"
anchorcable
0
18
Trying AWS Aurora Serverless.
anchorcable
0
200
Dialogue for Design
anchorcable
1
290
How to manage a good work environment
anchorcable
0
100
TDD is not slowly.
anchorcable
1
520
3日坊主でも勉強したい
anchorcable
5
5.5k
Design It! is good for architect.
anchorcable
0
120
今だからこそ分かる報連相 / How to do Hou/Ren/Sou!
anchorcable
0
650
TDD supports us all the time.
anchorcable
0
310
Other Decks in Programming
See All in Programming
DMMオンラインサロンアプリのSwift化
hayatan
0
190
カンファレンス動画鑑賞会のススメ / Osaka.swift #1
hironytic
0
170
rails newと同時に型を書く
aki19035vc
5
710
はてなにおけるfujiwara-wareの活用やecspressoのCI/CD構成 / Fujiwara Tech Conference 2025
cohalz
3
2.8k
functionalなアプローチで動的要素を排除する
ryopeko
1
220
Fixstars高速化コンテスト2024準優勝解法
eijirou
0
190
Stackless и stackful? Корутины и асинхронность в Go
lamodatech
0
1.3k
いりゃあせ、PHPカンファレンス名古屋2025 / Welcome to PHP Conference Nagoya 2025
ttskch
1
180
混沌とした例外処理とエラー監視に秩序をもたらす
morihirok
13
2.3k
return文におけるstd::moveについて
onihusube
1
1.4k
『改訂新版 良いコード/悪いコードで学ぶ設計入門』活用方法−爆速でスキルアップする!効果的な学習アプローチ / effective-learning-of-good-code
minodriven
28
4.2k
Jaspr Dart Web Framework 박제창 @Devfest 2024
itsmedreamwalker
0
150
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
427
64k
Fireside Chat
paigeccino
34
3.1k
Practical Orchestrator
shlominoach
186
10k
Measuring & Analyzing Core Web Vitals
bluesmoon
5
210
The Language of Interfaces
destraynor
155
24k
Being A Developer After 40
akosma
89
590k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
The Cult of Friendly URLs
andyhume
78
6.1k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
GraphQLとの向き合い方2022年版
quramy
44
13k
Learning to Love Humans: Emotional Interface Design
aarron
274
40k
Embracing the Ebb and Flow
colly
84
4.5k
Transcript
テスト駆動開発を実践しよう September 25, 2019 | #phpstudy たった3つだけ覚えればテスト駆動開発は始められる! 脱脂綿 ( @anchor_cable
)
#phpstudy 2 About Me 鈴木智也 ( 脱脂綿 @anchor_cable ) 東京都内に住む脱脂綿(=Twitter名)系エンジニア
• 株式会社ゆめみ ◦ サーバーサイドエンジニア • テスト駆動開発歴3ヶ月 • 自由に空を飛ぶのが夢 先週パラグライダーに乗って少し叶えました!
#phpstudy 3 テスト駆動開発とは テスト駆動開発 (てすとくどうかいはつ、test-driven development; TDD) とは、プログラム開発手法の一種 で、プログラムに必要な各機能について、最初にテス トを書き(これをテストファーストと言う)、そのテ
ストが動作する必要最低限な実装をとりあえず行った 後、コードを洗練させる、という短い工程を繰り返す スタイルである。 Wikipedia より引用
#phpstudy 4 今回の話のターゲット層 やったことない人向けに、まず何から始めれば良いのかを話します!
#phpstudy 5 アジェンダ TDDの実践に必要な3つのこと 実例を出してみる FizzBuzzの場合 なぜTDDをやるのか 1 2 3 まとめ
4
なぜTDDをやるのか 1
#phpstudy 7 TDDでコードを書き始めたことによる変化
#phpstudy 8 TDDを知るまでの実装 一発で目標に届かせようとする
#phpstudy 9 TDDによる実装 堅実に目標に向かって進む
TDDの実践に必要な3つのこと 2
#phpstudy 11 必要なものはたった3つ • 仮実装 • 三角測量 • ToDoリスト
#phpstudy 12 なぜこれでTDDができるの? TDDは「開発手法」 プログラミングは複雑な問題を小さく分解して解いていく行為 TDDはこれを強力にサポートしてくれる 3つのテクニックに沿って粛々と手を動かすだけ ToDoリスト によってタスクは分解され、 仮実装
によって日本語だったタスクがプログラミング言語となり、 三角測量 によって動作するきれいなコードへ辿り着く
#phpstudy 13 TDDの考え方 動作するきれいなコードは、偉大なプログラマでもす ぐには書けないことがあるし、普通のプログラマなら なおさらだ(私もそうだ)。ここは分割統治しよう。 最初に「動作する」に取り組み、その後で「きれい な」に取り組む。 Kent Beck.
テスト駆動開発 (Japanese Edition) 第2章 明白な実装 より引用
実例を出してみる FizzBuzzの場合 3
#phpstudy 15 ToDoリストを作る • 1の時1を返す • 3の時Fizzを返す • 4の時4を返す •
5の時Buzzを返す • 6の時Fizzを返す • 10の時Buzz • 15の時FizzBuzzを返す • 30の時FizzBuzzを返す ToDoの粒度は 「テストが書きやすくなるくらいまで」 タスクの全てを網羅できなくても良い
#phpstudy 16 ToDoからテストを書く 「1の時1を返す」テスト 設計をここでやっている ・judgeFizzBuzzメソッドを作ると決める ・1を渡すと1を返すメソッドを作ると決める
#phpstudy 17 想定した理由で失敗する事を確認する テストが失敗するのは当然、 失敗を確認するのが大事 意図した理由で失敗しているか?
#phpstudy 18 仮実装を行う 本当に仮 テストを通すコード ここでは「1を渡されて1を返す」が 満たされれば良い。これでいい。
#phpstudy 19 仮実装でテストを通す 本当に仮 テストは通ることを確認する
#phpstudy 20 三角測量 仮実装では通らないパターンのテストを書く 「3の時はFizzを返す」なら仮実装のままではテストが通らないだろう 失敗する事を確認しましょう
#phpstudy 21 三角測量 ここで考える • 3の時にFizzを返すには、引数を見て分岐が必要そうだ。 • Fizz(文字列)を返すメソッドが、1(数字)を返すのは変だな、1は文字列にしよう ・$inputを定義できた ・返り値を文字列に固定できた
まとめ 4
#phpstudy 23 まとめ • ToDoリスト、仮実装、三角測量についての説明 • FizzBuzzで実例を見てみた • TDDは堅実な進捗が出る
ご清聴ありがとうございました