SlideShare a Scribd company logo
1 of 36
TDDの「なぜ」に答える!
その前に、
TDDのやり方を。
1. 小さいテストを1つ書く。
2. すべてのテストを実行し、1つ失敗することを確認する。
3. 小さい変更を行う。
4. 再びテストを実行し、すべて成功することを確認する。
5. リファクタリングを行い、重複を除去する。
Kent Beck『テスト駆動開発』より
TDDのやり方
TDDのやり方
https://pacroy.blogspot.com/2017/01/a-few-exercises-for-you-to-practice.html
1. エラーになるテストを書く
2. テストが通るように書く
3. リファクタリング
TDDのやり方
https://pacroy.blogspot.com/2017/01/a-few-exercises-for-you-to-practice.html
0. TODOリストを書く
1. エラーになるテストを書く
2. テストが通るように書く
3. リファクタリング
x. くりかえし...
それではあらためまして
TDDの「なぜ」に答える!
問い:TDDはテストなの?
TDD はテスト技法ではない。
TDD は分析技法であり、設計技法であり、
実際には開発のすべてのアクティビティを
構造化する技法なのだ。
Kent Beck 『テスト駆動開発』より
問い:TDDはテストなの?
答え:TDDは設計なの!
問い:なぜテストするの?
■試してみる、失敗できる
そんなもん動かしてみりゃわかるじゃん!
やってみて動かしてみて直せばいいじゃん
■詳細設計?、机上デバッグ?
その考えている時間がムダ
問い:なぜテストするの?
答え:動かしてみりゃわかるじゃん!
問い:なぜテストするの?
■作りやすさと使いやすさは別もの
使ってみて初めてわかる使い勝手
小さなドッグフーディング
問い:なぜテストするの?
答え:使い勝手もわかるじゃん
問い:テストコードは何のため?
■テストコードを書くことで気付くことがある
■テストコードが仕様書となる
■自動テストはまた別の話
問い:テストコードは何のため?
答え:考慮漏れにも気がつくじゃん
問い:テストコードは何のため?
■リファクタしようぜ!
リファクタ後のデグレ確認
リファクタできるときにやっておこう
技術的負債になる前に
問い:テストコードは何のため?
答え:リファクタするから
問い:TDDのコツってなぁに?
■リズムよく、テンポよく
■実行結果に ”反応” しよう
迷ったら動かせ、結果を見て考えればいい
フィードバックだいじ
■歩幅を小さく
少しずつ完成させる
■ゴールは 「動作するきれいなコード」
■リズムよく、テンポよく
■実行結果に ”反応” しよう
迷ったら動かせ、結果を見て考えればいい
フィードバックだいじ
■歩幅を小さく
少しずつ完成させる
■ゴールは 「動作するきれいなコード」
あとで実演します!
問い: TDDのコツってなぁに?
答え: TDDは考え込まない
少しずつ完成させる
問い:TDDの効果・効能って何?
■安心感
本来は自分が安心するためのもの
■やってる感、すすんでる感
動くものが「できていく」のがいい
できた!終わった!
問い:TDDの効果・効能って何?
答え: 安心感
問い:組込み開発でもTDDがいいの?
(私の考え)
■テスティングフレームワークを載せるのが難しいなら
単に「対象の関数を呼ぶだけ」であってもTDDはできる
■どう動作確認できるか、に合わせて選択すればいい
基板が自由に使えるなら、基板で動作確認すればいいし
ターゲット上で動かすことにこだわらなくてもいいし
ユニットテストをやる理由があるなら、やればいいし
■インクリメンタルな開発で何度もテストをするなら
テストコードがあったほうが便利でしょう
■工夫すればいい
ドライバやスタートアップルーチンは
別の自動テストの方法を用意する、とか
問い:組込み開発でもTDDがいいの?
答え:やり方はゆるく考えてOK!
できるとこからやってみよう!
ご参考:TDDはゆるく実践しても大丈夫
http://goyoki.hatenablog.com/entry/2019/10/13/232806
ライブ(実演)
TDDのやり方
https://pacroy.blogspot.com/2017/01/a-few-exercises-for-you-to-practice.html
0. TODOリストを書く
1. エラーになるテストを書く
2. テストが通るように書く
3. リファクタリング
x. くりかえし...
■TDDは設計です
■動かしてみりゃわかるじゃん
■リファクタしようぜ!
■TDDは考え込まない
■少しずつ完成させる
■自分が安心するためのもの
■やってる感、すすんでる感
■やり方はゆるく考えてOK
■ゴールは 「動作するきれいなコード」
■TDDはプログラマの本能に働きかける!
まとめ

More Related Content

Similar to TDDの「なぜ」に答える! (Answer in "why" of TDD)

#NagoyaTesting アジャイルなテストの見積りと計画づくり
#NagoyaTesting アジャイルなテストの見積りと計画づくり #NagoyaTesting アジャイルなテストの見積りと計画づくり
#NagoyaTesting アジャイルなテストの見積りと計画づくり
kyon mm
 
レガシーコード改善ガイド 第7章 いつまでたっても変更作業が終わりません
レガシーコード改善ガイド 第7章 いつまでたっても変更作業が終わりませんレガシーコード改善ガイド 第7章 いつまでたっても変更作業が終わりません
レガシーコード改善ガイド 第7章 いつまでたっても変更作業が終わりません
Takahiro Okada
 
Let s database_testing
Let s database_testingLet s database_testing
Let s database_testing
Yuji Shimada
 
SeasarCon 2009 White TDD
SeasarCon 2009 White TDDSeasarCon 2009 White TDD
SeasarCon 2009 White TDD
Takuto Wada
 

Similar to TDDの「なぜ」に答える! (Answer in "why" of TDD) (20)

Tddのすゝめ
TddのすゝめTddのすゝめ
Tddのすゝめ
 
Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hackSue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
 
アジャイルなテストの見積もりと計画作り
アジャイルなテストの見積もりと計画作りアジャイルなテストの見積もりと計画作り
アジャイルなテストの見積もりと計画作り
 
#NagoyaTesting アジャイルなテストの見積りと計画づくり
#NagoyaTesting アジャイルなテストの見積りと計画づくり #NagoyaTesting アジャイルなテストの見積りと計画づくり
#NagoyaTesting アジャイルなテストの見積りと計画づくり
 
第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ第4回勉強会 単体テストのすすめ
第4回勉強会 単体テストのすすめ
 
はこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テストはこだてIKA 第4回勉強会 単体テスト
はこだてIKA 第4回勉強会 単体テスト
 
エクストリームエンジニア4
エクストリームエンジニア4エクストリームエンジニア4
エクストリームエンジニア4
 
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
 
wankuma #28
wankuma #28wankuma #28
wankuma #28
 
Hey It's Not My TDD!
Hey It's Not My TDD!Hey It's Not My TDD!
Hey It's Not My TDD!
 
TDD Boot Camp Tokyo for C++ 2014-01 補講
TDD Boot Camp Tokyo for C++ 2014-01 補講TDD Boot Camp Tokyo for C++ 2014-01 補講
TDD Boot Camp Tokyo for C++ 2014-01 補講
 
CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料
 
テスト駆動開発入門
テスト駆動開発入門テスト駆動開発入門
テスト駆動開発入門
 
TDD を自分の道具にしよう
TDD を自分の道具にしようTDD を自分の道具にしよう
TDD を自分の道具にしよう
 
失敗から学ぶ?、教科書には書いてあるけど、現場でしか学べないこと.pdf
失敗から学ぶ?、教科書には書いてあるけど、現場でしか学べないこと.pdf失敗から学ぶ?、教科書には書いてあるけど、現場でしか学べないこと.pdf
失敗から学ぶ?、教科書には書いてあるけど、現場でしか学べないこと.pdf
 
レガシーコード改善ガイド 第7章 いつまでたっても変更作業が終わりません
レガシーコード改善ガイド 第7章 いつまでたっても変更作業が終わりませんレガシーコード改善ガイド 第7章 いつまでたっても変更作業が終わりません
レガシーコード改善ガイド 第7章 いつまでたっても変更作業が終わりません
 
Let s database_testing
Let s database_testingLet s database_testing
Let s database_testing
 
Sta introduction in_kyoto #devkan
Sta introduction in_kyoto #devkanSta introduction in_kyoto #devkan
Sta introduction in_kyoto #devkan
 
SeasarCon 2009 White TDD
SeasarCon 2009 White TDDSeasarCon 2009 White TDD
SeasarCon 2009 White TDD
 
『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト
『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト
『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト
 

TDDの「なぜ」に答える! (Answer in "why" of TDD)