tdd #nagoyatesting

43
うさぎ組 in Nagoya.Testing 2012.02.26

Upload: kyon-mm

Post on 29-Jan-2018

2.936 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: TDD #NagoyaTesting

うさぎ組 in

Nagoya.Testing2012.02.26

Page 2: TDD #NagoyaTesting

Self Introduction名前:きょん(kyon_mm)

Blog : うさぎ組

Target : 開発環境改善

Groovy、テスト、自動化、アジャイル、品質保証

24歳うさみみ系男子

SCMBootCamp、Nagoya.Testing主宰

Page 3: TDD #NagoyaTesting

今日のテーマ

Page 4: TDD #NagoyaTesting

TDD概論

Page 5: TDD #NagoyaTesting

以降は個人の解釈に基づくものであり公式見(ry

Page 6: TDD #NagoyaTesting

TDD概論TDDとは?

TDDはテストなのか?

TDDの種類は?

TDDの特性は?

TDDのスキル

まとめ

Page 7: TDD #NagoyaTesting

TDD概論TDDとは?

TDDはテストなのか?

TDDの種類は?

TDDの特性は?

TDDのスキル

まとめ

Page 8: TDD #NagoyaTesting

TDDはドッグフーディングにより不安を解消する

Page 9: TDD #NagoyaTesting

TDDのライフサイクル

Page 10: TDD #NagoyaTesting

TDDのライフサイクル

画像引用元 http://d.hatena.ne.jp/shuji_w6e/20110429/1304079615

Page 11: TDD #NagoyaTesting

TDDのライフサイクル

画像引用元 http://d.hatena.ne.jp/shuji_w6e/20110429/1304079615

TODOリスト

Page 12: TDD #NagoyaTesting

TDDのライフサイクル

画像引用元 http://d.hatena.ne.jp/shuji_w6e/20110429/1304079615

RED -> GREEN -> REFACTORING ->

TODOリスト

Page 13: TDD #NagoyaTesting

TDDのライフサイクル

画像引用元 http://d.hatena.ne.jp/shuji_w6e/20110429/1304079615

RED -> GREEN -> REFACTORING ->

テストリスト

個人的に重要なのはテストリスト

REFACTORING

Page 14: TDD #NagoyaTesting

TDD概論TDDとは?

TDDはテストなのか?

TDDの種類は?

TDDの特性は?

TDDのスキル

まとめ

Page 15: TDD #NagoyaTesting

TDDはテストをしているわけじゃない

Page 16: TDD #NagoyaTesting

プロダクトに自信をもつための行為がTDDであり、現状では単体テスト以降の自動テストにも流用できている。

Page 17: TDD #NagoyaTesting

現状の結果として単体テストの代替物と勘違いさ

れることがある

Page 18: TDD #NagoyaTesting

Developer TestCustomer Test

QA Test

Page 19: TDD #NagoyaTesting

Developer TestCustomer Test

QA Test

TDD

結合テストなど

非機能

TDD

Page 20: TDD #NagoyaTesting

Developer TestCustomer Test

QA Test

TDD

結合テストなど

非機能

TDDこれはテストじゃない

Page 21: TDD #NagoyaTesting

でも、

Page 22: TDD #NagoyaTesting

品質保証の自動テストに流用できるようにする方向でいくなら、TDDは

Test Architecture として捉えられるのでテストになると思う。

Page 23: TDD #NagoyaTesting

TDD概論TDDとは?

TDDはテストなのか?

TDDの種類は?

TDDの特性は?

TDDのスキル

まとめ

Page 24: TDD #NagoyaTesting

TDDの種類

TDD

BDD

STDD

SATDD

UATDD

VOTDD

Page 25: TDD #NagoyaTesting

TDDの種類

TDD

BDD

STDD

SATDD

UATDD

VOTDD

STDD, SATDD, UATDD, VOTDDはTDDの何かを明確にしたり、付加したもの

TDDとBDDは表現方法の違い

Page 26: TDD #NagoyaTesting

TDD(=テスト)

開発者の不安を対象にテストコードを書く

いわゆる原義のTDD

この頃はxUnit系と言われているテストフレームワークが主流

だった

Page 27: TDD #NagoyaTesting

BDD(=振る舞い)

基本的にはTDDと一緒(表現方法が異なるのみ)

決定的に違うのは自然言語指向で書くということ

目的は顧客やPOに書いてもらえるテストコード

これを実現するためにSpec系のテストフレームワークが発生

Webアプリ化したのがFitNesse

Page 28: TDD #NagoyaTesting

STDD(=ストーリーテスト)

ユースケースやユーザーシナリオをテストコードにする

Spec系フレームワークで書かれる事が多い

BDDではSTDDとTDDがあると言われる事が多いが、BDDは

表現方法が異なるだけなので、TDDが他のTDDになりえるよ

うにBDDも他のTDDになりえる。

Page 29: TDD #NagoyaTesting

SATDD(=ストーリー受け入れテスト)

スクラムなどをはじめとするアジャイルでのストーリーに対

する受け入れテストをテストコードにする

個人的にはストーリーって言うよりフィーチャーの方が似

合っていると思うというか、随分とプロセス依存な名前だ

なぁと思ったり。

Page 30: TDD #NagoyaTesting

UATDD(=ユーザー受け入れテスト)

ユーザーの受け入れ基準をテストコードにする

ATDDの初出はUATDDの意味合いで出てきたけど、STDDが

派生して、アジャイルの文脈でSATDDが出現してきたように

見える。

Page 31: TDD #NagoyaTesting

VOTDD(=検証指向テスト)

TDDに検証指向のテストを組み込んだプロセス

目標はTDDに検証を持ち込む点なので、従来のソフトウェア

テストのあらゆるフェーズや技法が投入可能だと思われる

例)AllPair法、原因結果グラフ、HAYST法、ゆもつよメソッ

Page 32: TDD #NagoyaTesting

TDD概論TDDとは?

TDDはテストなのか?

TDDの種類は?

TDDの特性は?

TDDのスキル

まとめ

Page 33: TDD #NagoyaTesting

TDDの特性

テストコードを書くタイミング

リファクタリングをするタイミング

網羅基準

対象範囲

モックやスタブの範囲

Page 34: TDD #NagoyaTesting

テストコードを書くタイミング

TestFirst

プロダクトコード変更前に必ず失敗するテストコードを書く

変更箇所対象切り替え毎

次の変更箇所に移るまでには現在実装している箇所のテストコードを

書く

対象機能実装完了時

現在取り組んでいる機能が実装できてからテストコードを書く

Page 35: TDD #NagoyaTesting

リファクタリングをするタイミング

Greenになったら

テストコードが通るたびにリファクタリングの機会を伺う

変更箇所対象切り替え毎

次の変更箇所に移るまでには現在実装している箇所のリファクタリングを

する

対象機能実装完了時

現在取り組んでいる機能が実装できてからリファクタリングをする

Page 36: TDD #NagoyaTesting

網羅基準

三角測量、境界値分析、原因結果グラフ、状態遷移な

ど、どの程度まで厳密にテストコードに表現するか

Page 37: TDD #NagoyaTesting

対象範囲

テストコードを書く対象をどこまで広げるか モデル、

GUI、DB、通信処理など

Page 38: TDD #NagoyaTesting

モックやスタブの範囲

どこまでをプロダクトコード以外のモックやスタブと

するか パッケージレベルでの境界、ネットワークレベ

ルでの境界など

Page 39: TDD #NagoyaTesting

TDD概論TDDとは?

TDDはテストなのか?

TDDの種類は?

TDDの特性は?

TDDのスキル

まとめ

Page 40: TDD #NagoyaTesting

TDDのスキル成長=TDDしなくなること

Page 41: TDD #NagoyaTesting

TDD概論TDDとは?

TDDはテストなのか?

TDDの種類は?

TDDの特性は?

TDDのスキル

まとめ

Page 42: TDD #NagoyaTesting

TDD概論まとめ

TDDはテストではない

いろんな種類があるけど、自分で認識してカテゴライズでき

ればそれでいい

原則や行為のレベルを自分で最適化することが大切

最後にはTDDしなくてもいいようになろう

Page 43: TDD #NagoyaTesting

ご清聴ありがとうぴょん◆