tdd #nagoyatesting
TRANSCRIPT
![Page 1: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/1.jpg)
うさぎ組 in
Nagoya.Testing2012.02.26
![Page 2: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/2.jpg)
Self Introduction名前:きょん(kyon_mm)
Blog : うさぎ組
Target : 開発環境改善
Groovy、テスト、自動化、アジャイル、品質保証
24歳うさみみ系男子
SCMBootCamp、Nagoya.Testing主宰
![Page 3: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/3.jpg)
今日のテーマ
![Page 4: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/4.jpg)
TDD概論
![Page 5: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/5.jpg)
以降は個人の解釈に基づくものであり公式見(ry
![Page 6: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/6.jpg)
TDD概論TDDとは?
TDDはテストなのか?
TDDの種類は?
TDDの特性は?
TDDのスキル
まとめ
![Page 7: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/7.jpg)
TDD概論TDDとは?
TDDはテストなのか?
TDDの種類は?
TDDの特性は?
TDDのスキル
まとめ
![Page 8: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/8.jpg)
TDDはドッグフーディングにより不安を解消する
![Page 9: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/9.jpg)
TDDのライフサイクル
![Page 10: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/10.jpg)
TDDのライフサイクル
画像引用元 http://d.hatena.ne.jp/shuji_w6e/20110429/1304079615
![Page 11: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/11.jpg)
TDDのライフサイクル
画像引用元 http://d.hatena.ne.jp/shuji_w6e/20110429/1304079615
TODOリスト
![Page 12: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/12.jpg)
TDDのライフサイクル
画像引用元 http://d.hatena.ne.jp/shuji_w6e/20110429/1304079615
RED -> GREEN -> REFACTORING ->
TODOリスト
![Page 13: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/13.jpg)
TDDのライフサイクル
画像引用元 http://d.hatena.ne.jp/shuji_w6e/20110429/1304079615
RED -> GREEN -> REFACTORING ->
テストリスト
個人的に重要なのはテストリスト
REFACTORING
![Page 14: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/14.jpg)
TDD概論TDDとは?
TDDはテストなのか?
TDDの種類は?
TDDの特性は?
TDDのスキル
まとめ
![Page 15: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/15.jpg)
TDDはテストをしているわけじゃない
![Page 16: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/16.jpg)
プロダクトに自信をもつための行為がTDDであり、現状では単体テスト以降の自動テストにも流用できている。
![Page 17: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/17.jpg)
現状の結果として単体テストの代替物と勘違いさ
れることがある
![Page 18: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/18.jpg)
Developer TestCustomer Test
QA Test
![Page 19: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/19.jpg)
Developer TestCustomer Test
QA Test
TDD
結合テストなど
非機能
TDD
![Page 20: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/20.jpg)
Developer TestCustomer Test
QA Test
TDD
結合テストなど
非機能
TDDこれはテストじゃない
![Page 21: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/21.jpg)
でも、
![Page 22: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/22.jpg)
品質保証の自動テストに流用できるようにする方向でいくなら、TDDは
Test Architecture として捉えられるのでテストになると思う。
![Page 23: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/23.jpg)
TDD概論TDDとは?
TDDはテストなのか?
TDDの種類は?
TDDの特性は?
TDDのスキル
まとめ
![Page 24: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/24.jpg)
TDDの種類
TDD
BDD
STDD
SATDD
UATDD
VOTDD
![Page 25: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/25.jpg)
TDDの種類
TDD
BDD
STDD
SATDD
UATDD
VOTDD
STDD, SATDD, UATDD, VOTDDはTDDの何かを明確にしたり、付加したもの
TDDとBDDは表現方法の違い
![Page 26: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/26.jpg)
TDD(=テスト)
開発者の不安を対象にテストコードを書く
いわゆる原義のTDD
この頃はxUnit系と言われているテストフレームワークが主流
だった
![Page 27: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/27.jpg)
BDD(=振る舞い)
基本的にはTDDと一緒(表現方法が異なるのみ)
決定的に違うのは自然言語指向で書くということ
目的は顧客やPOに書いてもらえるテストコード
これを実現するためにSpec系のテストフレームワークが発生
Webアプリ化したのがFitNesse
![Page 28: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/28.jpg)
STDD(=ストーリーテスト)
ユースケースやユーザーシナリオをテストコードにする
Spec系フレームワークで書かれる事が多い
BDDではSTDDとTDDがあると言われる事が多いが、BDDは
表現方法が異なるだけなので、TDDが他のTDDになりえるよ
うにBDDも他のTDDになりえる。
![Page 29: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/29.jpg)
SATDD(=ストーリー受け入れテスト)
スクラムなどをはじめとするアジャイルでのストーリーに対
する受け入れテストをテストコードにする
個人的にはストーリーって言うよりフィーチャーの方が似
合っていると思うというか、随分とプロセス依存な名前だ
なぁと思ったり。
![Page 30: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/30.jpg)
UATDD(=ユーザー受け入れテスト)
ユーザーの受け入れ基準をテストコードにする
ATDDの初出はUATDDの意味合いで出てきたけど、STDDが
派生して、アジャイルの文脈でSATDDが出現してきたように
見える。
![Page 31: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/31.jpg)
VOTDD(=検証指向テスト)
TDDに検証指向のテストを組み込んだプロセス
目標はTDDに検証を持ち込む点なので、従来のソフトウェア
テストのあらゆるフェーズや技法が投入可能だと思われる
例)AllPair法、原因結果グラフ、HAYST法、ゆもつよメソッ
ド
![Page 32: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/32.jpg)
TDD概論TDDとは?
TDDはテストなのか?
TDDの種類は?
TDDの特性は?
TDDのスキル
まとめ
![Page 33: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/33.jpg)
TDDの特性
テストコードを書くタイミング
リファクタリングをするタイミング
網羅基準
対象範囲
モックやスタブの範囲
![Page 34: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/34.jpg)
テストコードを書くタイミング
TestFirst
プロダクトコード変更前に必ず失敗するテストコードを書く
変更箇所対象切り替え毎
次の変更箇所に移るまでには現在実装している箇所のテストコードを
書く
対象機能実装完了時
現在取り組んでいる機能が実装できてからテストコードを書く
![Page 35: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/35.jpg)
リファクタリングをするタイミング
Greenになったら
テストコードが通るたびにリファクタリングの機会を伺う
変更箇所対象切り替え毎
次の変更箇所に移るまでには現在実装している箇所のリファクタリングを
する
対象機能実装完了時
現在取り組んでいる機能が実装できてからリファクタリングをする
![Page 36: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/36.jpg)
網羅基準
三角測量、境界値分析、原因結果グラフ、状態遷移な
ど、どの程度まで厳密にテストコードに表現するか
![Page 37: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/37.jpg)
対象範囲
テストコードを書く対象をどこまで広げるか モデル、
GUI、DB、通信処理など
![Page 38: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/38.jpg)
モックやスタブの範囲
どこまでをプロダクトコード以外のモックやスタブと
するか パッケージレベルでの境界、ネットワークレベ
ルでの境界など
![Page 39: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/39.jpg)
TDD概論TDDとは?
TDDはテストなのか?
TDDの種類は?
TDDの特性は?
TDDのスキル
まとめ
![Page 40: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/40.jpg)
TDDのスキル成長=TDDしなくなること
![Page 41: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/41.jpg)
TDD概論TDDとは?
TDDはテストなのか?
TDDの種類は?
TDDの特性は?
TDDのスキル
まとめ
![Page 42: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/42.jpg)
TDD概論まとめ
TDDはテストではない
いろんな種類があるけど、自分で認識してカテゴライズでき
ればそれでいい
原則や行為のレベルを自分で最適化することが大切
最後にはTDDしなくてもいいようになろう
![Page 43: TDD #NagoyaTesting](https://reader033.vdocuments.mx/reader033/viewer/2022061306/554f84f1b4c9052a518b4e49/html5/thumbnails/43.jpg)
ご清聴ありがとうぴょん◆