unittestは最もtddしやすいか否か? #tddmeetup
DESCRIPTION
#TDDMeetUp での発表資料です。TRANSCRIPT
![Page 1: UnitTestは最もTDDしやすいか否か? #TDDMeetUp](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f8627b4c905d25b8b4cb7/html5/thumbnails/1.jpg)
TestLevel with TDD
UnitTestは最もTDDしやすいか否か?2013.06.17 #TDDMeetUP
![Page 2: UnitTestは最もTDDしやすいか否か? #TDDMeetUp](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f8627b4c905d25b8b4cb7/html5/thumbnails/2.jpg)
Self Introduction
きょん(@kyon_mm)
テストエンジニア
Groovy, C#, F#, Scala
SCMBootCamp, Nagoya.Testing, CDStudy, 基礎勉強会, Cafe.Testing, STAR
![Page 3: UnitTestは最もTDDしやすいか否か? #TDDMeetUp](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f8627b4c905d25b8b4cb7/html5/thumbnails/3.jpg)
TestLevel
ソフトウェアテストの言葉入門 - うさぎ組 -
http://d.hatena.ne.jp/kyon_mm/20121217/1356444948
![Page 4: UnitTestは最もTDDしやすいか否か? #TDDMeetUp](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f8627b4c905d25b8b4cb7/html5/thumbnails/4.jpg)
TDD
TDDを明確に定義する-うさぎ組-
http://d.hatena.ne.jp/kyon_mm/20120830/1346344839
http://tomykaira.hatenablog.com/entry/2012/09/02/235405
http://d.hatena.ne.jp/kyon_mm/20120909/1347241462
![Page 5: UnitTestは最もTDDしやすいか否か? #TDDMeetUp](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f8627b4c905d25b8b4cb7/html5/thumbnails/5.jpg)
TDD Speeeeed
テストコードを考える
テストコードを書く RED
プロダクトコードを実装する GREEN
リファクタリングする REFACTOR
![Page 6: UnitTestは最もTDDしやすいか否か? #TDDMeetUp](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f8627b4c905d25b8b4cb7/html5/thumbnails/6.jpg)
TestLevel Speeeeed
Unit > Component > Integration > System
テストレベルが上がると考慮すべき事が多い
テストコード自体の難しさが上がる
![Page 7: UnitTestは最もTDDしやすいか否か? #TDDMeetUp](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f8627b4c905d25b8b4cb7/html5/thumbnails/7.jpg)
Large TestLevelComplex Problem
複雑な問題をいきなり解くのは難しい
より小さな問題に分割して解決するのは正しい
テストレベルを小さくするのは物事を習う上でも自然な流れ
![Page 8: UnitTestは最もTDDしやすいか否か? #TDDMeetUp](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f8627b4c905d25b8b4cb7/html5/thumbnails/8.jpg)
Speed is Justice ?
TDDは開発者が気持ちよくコードを書く事を支援するのであれば、スピードだけではないはずである。。。?
![Page 9: UnitTestは最もTDDしやすいか否か? #TDDMeetUp](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f8627b4c905d25b8b4cb7/html5/thumbnails/9.jpg)
Outer SpecInner Spec
TDDは外部仕様に着目する事がなににおいても重要である
であれば、外部仕様と内部仕様を分割しやすいテストがあるはずである
![Page 10: UnitTestは最もTDDしやすいか否か? #TDDMeetUp](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f8627b4c905d25b8b4cb7/html5/thumbnails/10.jpg)
Outer SpecInner Spec
UnitTestはスピードがあがる一方で、内部仕様に着目してしまう可能性が高くなる
Integration Testはスピードが遅くなる一方で、内部仕様をあまり気にしなくなる可能性が高くなる
![Page 11: UnitTestは最もTDDしやすいか否か? #TDDMeetUp](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f8627b4c905d25b8b4cb7/html5/thumbnails/11.jpg)
Outer SpecInner Spec
Unit Componet Integration System
テストレベル
内部仕様を気にしなくなる度合いTDDのスピード
![Page 12: UnitTestは最もTDDしやすいか否か? #TDDMeetUp](https://reader034.vdocuments.site/reader034/viewer/2022052618/554f8627b4c905d25b8b4cb7/html5/thumbnails/12.jpg)
TDD is Learning
外部設計に着目しながら開発する意味ではテストレベルは高い方がよい(Integration Test以上
スピードを重視する意味ではテストレベルは低い方がよい(ComponentTest以下
どんなTDDにするか選択する必要がある
両立出来るように努力するのも大切