SlideShare une entreprise Scribd logo
1  sur  34
Télécharger pour lire hors ligne
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. くりかえし...
0. TODOリストを書く
どんな機能を盛り込んでいくか
どんな手順で盛り込んでいくか
要するにこれからやることを考えておく
もちろんコードを書きながら
思いついたときにリストを更新する,でもいい
1. エラーになるテストを書く
テストを書く = まずは仕様を書く
これから作るプログラムのインプット
エラーになる = テストコードが
ちゃんと呼ばれるかの確認
中身はどうでもいいので、
とりあえずかんたんにエラーでいいや
2. テストが通るように書く
いきなり動くコードでなくていい
ちょっとずつ動くようにすればいい
試しながら動作を確認しながら進めればいい
ちょっとずつだから、把握しやすいし変更しやすい
バグってても、わかりやすいし直しやすい
なやんだりこまったりで手が止まるなら、
動かしながら考えればいい
フィードバックが得られて、次の一手が思いつくかも
3. リファクタリング
同様にちょっとずつきれいにすればいい
いきなり書き換えたりせず「動いたら前のを消す」etc.
x. くりかえし
行きつ戻りを経て、
最後の最後に全てのテストがOKになればいい
テストは何度もNGになっていい
どこかのテストがNGになっても、
テストコードがあれば動くものに戻せるのだから
安心して書き直せばいい、そのためのテストコード
動かしながらの開発は、
リズムがあって,集中できる
全てを机上で考えるのは、
しんどいし,時間がかかる
ここがポイント!
じーっと考えるのって割としんどいでしょ
TDDってなんなの?
TDD はテスト技法ではない。
TDD は分析技法であり、設計技法であり、
実際には開発のすべてのアクティビティを
構造化する技法なのだ。
Kent Beck 『テスト駆動開発』より
TDDは設計技法
(プログラム構造の設計)
テストファースト
これ、テストと何が違うの?
後から書くテスト
• テストするため
• デバッグするため
後から書くテスト
• テストするため
• デバッグするため
テストのためのテストじゃない!
先に書くテスト
• コーディングするため
• リファクタするため
0. TODOリストを書く
1. エラーになるテストを書く
2. テストが通るように書く
3. リファクタリング
x. くりかえし...
テストを利用してコードを書く!
やってることはプログラム作成
コードを
コードを
ゴールは「動作するきれいなコード」
別にテストをやりたいわけじゃないし、
デバッグしただけの汚いコードでもダメ
少しずつ完成させる
TDDのコツは…
■歩幅を小さく、リズムよく、テンポよく
いま動いているものをベースに
ちょっとずつ考えればいい
一度にいろいろ考えないでいいからラクでかんたん
■動かしてみればわかる、動かしてみて直せばいい
机上での考慮漏れも拾える
■フィードバックだいじ
迷ったら動かせ、結果を見て考えればいい
動かしながら整える感じ
TDDのコツは…
動かしながら整える感じ
TDDのコツは…
実演します!
すすんでる感、できてる感
TDDの本質は…
■やってる感、すすんでる感
動くものが「できていく」のがいい
■動作確認できてる安心感
本来のテストとは自分が安心するためのもの
「できた!終わった!」
ライブ(実演)
FizzBuzz って知ってる?
FizzBuzz って知ってる?
1
2 Fizz
Buzz
4
TDDのやり方
https://pacroy.blogspot.com/2017/01/a-few-exercises-for-you-to-practice.html
0. TODOリストを書く
1. エラーになるテストを書く
2. テストが通るように書く
3. リファクタリング
x. くりかえし...
「動かしながら整える」であれば
それはTDDだと思う。
やり方はゆるく考えてOK!
できるとこからやってみよう!
ご参考:TDDはゆるく実践しても大丈夫
http://goyoki.hatenablog.com/entry/2019/10/13/232806
テストは品質をあげるわけではない
品質をあげるのはプログラミングである
バグを見つけるよりもバグを減らせ
もっといいやり方はないか?

Contenu connexe

Tendances

Introduction to Continuous Testing
Introduction to Continuous TestingIntroduction to Continuous Testing
Introduction to Continuous TestingAtsuhiro Kubo
 
20141101渋谷ruby会議
20141101渋谷ruby会議20141101渋谷ruby会議
20141101渋谷ruby会議Fukui Osamu
 
Myweekdays and testing
Myweekdays and testingMyweekdays and testing
Myweekdays and testingryuji koyama
 
Tdd is really dead ?
Tdd is really dead ?Tdd is really dead ?
Tdd is really dead ?Akira Suenami
 
いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!虎の穴 開発室
 
FlexUnitテスト
FlexUnitテストFlexUnitテスト
FlexUnitテストutweb
 
How to let them in house of quality
How to let them in house of qualityHow to let them in house of quality
How to let them in house of qualityTakahiro Toku
 
効果的なXPの導入を目的とした プラクティス間の相互作用の分析
効果的なXPの導入を目的とした プラクティス間の相互作用の分析効果的なXPの導入を目的とした プラクティス間の相互作用の分析
効果的なXPの導入を目的とした プラクティス間の相互作用の分析Makoto SAKAI
 
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニアSHIFT Inc.
 
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jpテストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jpkyon mm
 
テストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornightテストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornightkyon mm
 
トラブルシューティングのあれこれ Yoshihiko kamata
トラブルシューティングのあれこれ Yoshihiko kamataトラブルシューティングのあれこれ Yoshihiko kamata
トラブルシューティングのあれこれ Yoshihiko kamataRakuten Group, Inc.
 
エンジニアとPdMを兼任して良かった/大変だったこと
エンジニアとPdMを兼任して良かった/大変だったことエンジニアとPdMを兼任して良かった/大変だったこと
エンジニアとPdMを兼任して良かった/大変だったことAmakawa Yuki
 
プロジェクトマネジメントと開発手法の概要 Web
プロジェクトマネジメントと開発手法の概要 Webプロジェクトマネジメントと開発手法の概要 Web
プロジェクトマネジメントと開発手法の概要 Webminamo
 
ゲーム開発環境の自動化
ゲーム開発環境の自動化ゲーム開発環境の自動化
ゲーム開発環境の自動化Masahiko Nakamura
 

Tendances (20)

Introduction to Continuous Testing
Introduction to Continuous TestingIntroduction to Continuous Testing
Introduction to Continuous Testing
 
About test
About testAbout test
About test
 
20141101渋谷ruby会議
20141101渋谷ruby会議20141101渋谷ruby会議
20141101渋谷ruby会議
 
Myweekdays and testing
Myweekdays and testingMyweekdays and testing
Myweekdays and testing
 
Tdd is really dead ?
Tdd is really dead ?Tdd is really dead ?
Tdd is really dead ?
 
いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!いいテスト会 (スプリントレビュー) をやろう!
いいテスト会 (スプリントレビュー) をやろう!
 
wankuma #28
wankuma #28wankuma #28
wankuma #28
 
FlexUnitテスト
FlexUnitテストFlexUnitテスト
FlexUnitテスト
 
How to let them in house of quality
How to let them in house of qualityHow to let them in house of quality
How to let them in house of quality
 
効果的なXPの導入を目的とした プラクティス間の相互作用の分析
効果的なXPの導入を目的とした プラクティス間の相互作用の分析効果的なXPの導入を目的とした プラクティス間の相互作用の分析
効果的なXPの導入を目的とした プラクティス間の相互作用の分析
 
Running Lean Cp05
Running Lean Cp05Running Lean Cp05
Running Lean Cp05
 
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
20140903 じどうかの窓口特別編 君にもなれる!?テスト自動化エンジニア
 
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jpテストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
 
テストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornightテストエンジニアの品格 #automatornight
テストエンジニアの品格 #automatornight
 
トラブルシューティングのあれこれ Yoshihiko kamata
トラブルシューティングのあれこれ Yoshihiko kamataトラブルシューティングのあれこれ Yoshihiko kamata
トラブルシューティングのあれこれ Yoshihiko kamata
 
テストの原則
テストの原則テストの原則
テストの原則
 
C#でユニットテストを使う
C#でユニットテストを使うC#でユニットテストを使う
C#でユニットテストを使う
 
エンジニアとPdMを兼任して良かった/大変だったこと
エンジニアとPdMを兼任して良かった/大変だったことエンジニアとPdMを兼任して良かった/大変だったこと
エンジニアとPdMを兼任して良かった/大変だったこと
 
プロジェクトマネジメントと開発手法の概要 Web
プロジェクトマネジメントと開発手法の概要 Webプロジェクトマネジメントと開発手法の概要 Web
プロジェクトマネジメントと開発手法の概要 Web
 
ゲーム開発環境の自動化
ゲーム開発環境の自動化ゲーム開発環境の自動化
ゲーム開発環境の自動化
 

Similaire à TDDってなんなの?(What is TDD)

Hey It's Not My TDD!
Hey It's Not My TDD!Hey It's Not My TDD!
Hey It's Not My TDD!Yasui Tsutomu
 
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTakuto Wada
 
20150715 『続・断捨離』TDDの心得編
20150715 『続・断捨離』TDDの心得編20150715 『続・断捨離』TDDの心得編
20150715 『続・断捨離』TDDの心得編nackypon
 
アジャイルなテストの見積もりと計画作り
アジャイルなテストの見積もりと計画作りアジャイルなテストの見積もりと計画作り
アジャイルなテストの見積もりと計画作りkyon mm
 
CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料Yasui Tsutomu
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
TDDはじめる前にYasui Tsutomu
 
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 補講Takashi Imagire
 
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~Tomomi Kajita
 
#NagoyaTesting アジャイルなテストの見積りと計画づくり
#NagoyaTesting アジャイルなテストの見積りと計画づくり #NagoyaTesting アジャイルなテストの見積りと計画づくり
#NagoyaTesting アジャイルなテストの見積りと計画づくり kyon mm
 
SeasarCon 2009 White TDD
SeasarCon 2009 White TDDSeasarCon 2009 White TDD
SeasarCon 2009 White TDDTakuto Wada
 
テストの視点を活用した TDD アプローチの検討とその検証
テストの視点を活用した TDD アプローチの検討とその検証テストの視点を活用した TDD アプローチの検討とその検証
テストの視点を活用した TDD アプローチの検討とその検証Akira Ikeda
 
『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト
『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト
『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テストmakopi 23
 
テスト駆動開発入門 - C4K Meetup#2
テスト駆動開発入門 - C4K Meetup#2テスト駆動開発入門 - C4K Meetup#2
テスト駆動開発入門 - C4K Meetup#2Masashi Shibata
 
GCSアジャイル開発を使ったゲームの作り方
 GCSアジャイル開発を使ったゲームの作り方 GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方Hiroyuki Tanaka
 
Tddのすゝめ
TddのすゝめTddのすゝめ
Tddのすゝめ将 高野
 
CEDEC2015講演 チーム開発をスムーズにするために
CEDEC2015講演 チーム開発をスムーズにするためにCEDEC2015講演 チーム開発をスムーズにするために
CEDEC2015講演 チーム開発をスムーズにするためにTakafumi Ikeda
 
アジャイルの今とこれから-Agile conference2012参加報告-技術動向編
アジャイルの今とこれから-Agile conference2012参加報告-技術動向編アジャイルの今とこれから-Agile conference2012参加報告-技術動向編
アジャイルの今とこれから-Agile conference2012参加報告-技術動向編Hiroyuki Ito
 
ソフトウェアテスト入門
ソフトウェアテスト入門ソフトウェアテスト入門
ソフトウェアテスト入門Preferred Networks
 
Fitnesse を用いたテストの効率化について
Fitnesse を用いたテストの効率化についてFitnesse を用いたテストの効率化について
Fitnesse を用いたテストの効率化についてtecopark
 

Similaire à TDDってなんなの?(What is TDD) (20)

Hey It's Not My TDD!
Hey It's Not My TDD!Hey It's Not My TDD!
Hey It's Not My TDD!
 
Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hackSue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
 
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
 
20150715 『続・断捨離』TDDの心得編
20150715 『続・断捨離』TDDの心得編20150715 『続・断捨離』TDDの心得編
20150715 『続・断捨離』TDDの心得編
 
アジャイルなテストの見積もりと計画作り
アジャイルなテストの見積もりと計画作りアジャイルなテストの見積もりと計画作り
アジャイルなテストの見積もりと計画作り
 
CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料
 
TDDはじめる前に
TDDはじめる前にTDDはじめる前に
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 補講
 
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
 
#NagoyaTesting アジャイルなテストの見積りと計画づくり
#NagoyaTesting アジャイルなテストの見積りと計画づくり #NagoyaTesting アジャイルなテストの見積りと計画づくり
#NagoyaTesting アジャイルなテストの見積りと計画づくり
 
SeasarCon 2009 White TDD
SeasarCon 2009 White TDDSeasarCon 2009 White TDD
SeasarCon 2009 White TDD
 
テストの視点を活用した TDD アプローチの検討とその検証
テストの視点を活用した TDD アプローチの検討とその検証テストの視点を活用した TDD アプローチの検討とその検証
テストの視点を活用した TDD アプローチの検討とその検証
 
『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト
『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト
『はじめてのClojure』勉強会#3 第7章:テスト、テスト、テスト
 
テスト駆動開発入門 - C4K Meetup#2
テスト駆動開発入門 - C4K Meetup#2テスト駆動開発入門 - C4K Meetup#2
テスト駆動開発入門 - C4K Meetup#2
 
GCSアジャイル開発を使ったゲームの作り方
 GCSアジャイル開発を使ったゲームの作り方 GCSアジャイル開発を使ったゲームの作り方
GCSアジャイル開発を使ったゲームの作り方
 
Tddのすゝめ
TddのすゝめTddのすゝめ
Tddのすゝめ
 
CEDEC2015講演 チーム開発をスムーズにするために
CEDEC2015講演 チーム開発をスムーズにするためにCEDEC2015講演 チーム開発をスムーズにするために
CEDEC2015講演 チーム開発をスムーズにするために
 
アジャイルの今とこれから-Agile conference2012参加報告-技術動向編
アジャイルの今とこれから-Agile conference2012参加報告-技術動向編アジャイルの今とこれから-Agile conference2012参加報告-技術動向編
アジャイルの今とこれから-Agile conference2012参加報告-技術動向編
 
ソフトウェアテスト入門
ソフトウェアテスト入門ソフトウェアテスト入門
ソフトウェアテスト入門
 
Fitnesse を用いたテストの効率化について
Fitnesse を用いたテストの効率化についてFitnesse を用いたテストの効率化について
Fitnesse を用いたテストの効率化について
 

TDDってなんなの?(What is TDD)