TDD最初の一歩
2014/3/30 ミニTDDBC presented by yokohama.devtesting
大中浩行(@setoazusa)
Copyright 2014 Hiroyuki Ohnaka
自己紹介
• 大中浩行 (Ohnaka, Hiroyuki)
• 泣き笑いせつなポップ中年。
• yokohama.devtesting / devtesting-ja
• @set...
Copyright 2014 Hiroyuki Ohnaka
yokohama.devtestingとは
• Developer Testing およびその周辺領域について、ディス
カッションやハンズオンなど、ゆるく行うコミュニティで
す。
•...
4Copyright 2014 Hiroyuki Ohnaka
TDDとは
Copyright 2014 Hiroyuki Ohnaka
TDD
• テスト
• 駆動
• 開発
• テストによって駆動される開発
Copyright 2014 Hiroyuki Ohnaka
テスト
「全てのライフサイクルを通じて実施する静的、動的なプ
ロセスにおいて、成果物が特定の要件を満足するかを判定
し、目的に合致することを実証し、欠陥を見つけるため、
ソフトウェア...
Copyright 2014 Hiroyuki Ohnaka
駆動
テスト駆動開発は、プログラム中の不安を管理する方法で
ある。ここで言う不安とは悪い意味ではない。...(略)...
道理にかなった不安、すなわち「これは困難な問題だから
最初か...
Copyright 2014 Hiroyuki Ohnaka
開発
我々が最も価値を置くのは、価値あるソフトウェアを早いうち
から継続的にデリバリーすることを通じて顧客を満足させるこ
とである。
そのための、「価値の流れ」を構成する一連の営み
...
9Copyright 2014 Hiroyuki Ohnaka
TDDのゴール
Copyright 2014 Hiroyuki Ohnaka
「動作するきれいなコード」
和田卓人(2014) TDDのこころ@OHC2014 より
Copyright 2014 Hiroyuki Ohnaka
「動作するきれいなコードへの2つの道」
和田卓人(2014) TDDのこころ@OHC2014 より
Copyright 2014 Hiroyuki Ohnaka
TDDのサイクル
1. 次の目標を考える
2. その目標を示すテストを書く
3. そのテストを実行して失敗させる(Red)
4. 目的のコードを書く
5. 2で書いたテストを成功させ...
Copyright 2014 Hiroyuki Ohnaka
TDDと黄金の回転
和田卓人(2014) TDDのこころ@OHC2014 より
Copyright 2014 Hiroyuki Ohnaka
キーワード
• テストファースト
• TODOリスト
• アサートファースト
• 仮実装
• 三角測量
• 明白な実装
• リファクタリング
Copyright 2014 Hiroyuki Ohnaka
TDD三原則(「クリーンコード」より)
• 失敗する単体テストのコードを書く前に、製品のコードを書い
てはならない
• コンパイルが通り、適切に失敗する単体テストができるまでは、
次...
16Copyright 2014 Hiroyuki Ohnaka
TDDのこころ
Copyright 2014 Hiroyuki Ohnaka
• 小さく回す
• 複数を相手にしない
「わが全力をもって敵の分力を撃つ。
つねに敵をつつむがごとくに運動す
る」
司馬遼太郎「坂の上の雲」より
http://ja.wikipedi...
Copyright 2014 Hiroyuki Ohnaka
ユニットテストあるある
• 他のテストと一緒に流したら落ちるテスト
• 他のテストと一緒に流さないと落ちるテスト
• 月が変わると落ちるテスト
• リファクタリングするとコンパイルエ...
良いテストのために優先すべきもの
• 再現性、繰り返し可能(Repeatable)
• 独立していること(Independent)
• 詳しくは、http://xunitpatterns.com/
20Copyright 2014 Hiroyuki Ohnaka
現場で戦う
荒みきったコード
疲弊しきった現場
爆弾処理のようなリリース
http://www.flickr.com/photos/okinawa-soba/2951808529/
http://www.flickr.com/photos/22719239...
Copyright 2014 Hiroyuki Ohnaka
僕たちはアムロにはなれない
• TDDは銀の弾丸ではない
• 全ての問題をテクニカルなプラクティスで解決しようとしな
い
• 原理主義に走らない
• 「テストを書かなければならない」...
Copyright 2014 Hiroyuki Ohnaka
「2人目を探す」
• 「より良い開発」を目指すというコンセンサス
• 日々是改善
• そのことを考えた時に、TDDより先にやることがあるかも
しれない
• テストデータの整備
• デ...
Copyright 2014 Hiroyuki Ohnaka
もうウンザリです。何も改善できません。
「しかし、私たちにはプログラミングをする本当の
理由があるはずです。」
「もし、自分や同僚がプログラミングを楽しめるな
ら、どんなシステムに取...
Copyright 2014 Hiroyuki Ohnaka
「レガシーコードで成功する鍵は、やりがいを見出すこと
です。」
Copyright 2014 Hiroyuki Ohnaka
「君にも君を動かしているものがあるでしょう?」
牛木義隆(2008) 夢喰いメリー(1) 芳文社
Copyright 2014 Hiroyuki Ohnaka
さいごに
「君が質の高いソフトウェアを届けることは誰にも止められ
ない。君が現場に立って、お客さんに向けてプロジェクトの
状況と、プロジェクトに必要なことを誠実に伝えることも誰
にも...
Copyright 2014 Hiroyuki Ohnaka
参考文献
• Beck,Kent(2002) Test Driven Development: By Example Addison-Wesley Professional (長瀬 ...
Upcoming SlideShare
Loading in …5
×

2014/3/30 ミニTDDBC presented by yokhama.devtesting

9,616 views

Published on

Published in: Software
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
9,616
On SlideShare
0
From Embeds
0
Number of Embeds
551
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

2014/3/30 ミニTDDBC presented by yokhama.devtesting

  1. 1. TDD最初の一歩 2014/3/30 ミニTDDBC presented by yokohama.devtesting 大中浩行(@setoazusa)
  2. 2. Copyright 2014 Hiroyuki Ohnaka 自己紹介 • 大中浩行 (Ohnaka, Hiroyuki) • 泣き笑いせつなポップ中年。 • yokohama.devtesting / devtesting-ja • @setoazusa • http://blog.fieldnotes.jp/ • Javaプログラマ • グロースエクスパートナーズ(株)所属
  3. 3. Copyright 2014 Hiroyuki Ohnaka yokohama.devtestingとは • Developer Testing およびその周辺領域について、ディス カッションやハンズオンなど、ゆるく行うコミュニティで す。 • TDDBC横浜からスピンアウトしたコミュニティ
  4. 4. 4Copyright 2014 Hiroyuki Ohnaka TDDとは
  5. 5. Copyright 2014 Hiroyuki Ohnaka TDD • テスト • 駆動 • 開発 • テストによって駆動される開発
  6. 6. Copyright 2014 Hiroyuki Ohnaka テスト 「全てのライフサイクルを通じて実施する静的、動的なプ ロセスにおいて、成果物が特定の要件を満足するかを判定 し、目的に合致することを実証し、欠陥を見つけるため、 ソフトウェアプロダクトや関連成果物に対し、計画、準備、 評価をすること」 ソフトウェアテスト標準用語集 日本語版 Version 2.2.J01
  7. 7. Copyright 2014 Hiroyuki Ohnaka 駆動 テスト駆動開発は、プログラム中の不安を管理する方法で ある。ここで言う不安とは悪い意味ではない。...(略)... 道理にかなった不安、すなわち「これは困難な問題だから 最初から最後までは分からない」という感覚である。 「コードをどのように書けばいいのかわからない」とい う不安を、失敗するテストとして表現することで、開発 を駆動させる原動力とするという、制御の逆転(Inversion of Control)を表している 「テスト駆動開発入門」から
  8. 8. Copyright 2014 Hiroyuki Ohnaka 開発 我々が最も価値を置くのは、価値あるソフトウェアを早いうち から継続的にデリバリーすることを通じて顧客を満足させるこ とである。 そのための、「価値の流れ」を構成する一連の営み Principles behind the Agile Manifesto http://agilemanifesto.org/principles.html (訳は 和智・高木(2012))
  9. 9. 9Copyright 2014 Hiroyuki Ohnaka TDDのゴール
  10. 10. Copyright 2014 Hiroyuki Ohnaka 「動作するきれいなコード」 和田卓人(2014) TDDのこころ@OHC2014 より
  11. 11. Copyright 2014 Hiroyuki Ohnaka 「動作するきれいなコードへの2つの道」 和田卓人(2014) TDDのこころ@OHC2014 より
  12. 12. Copyright 2014 Hiroyuki Ohnaka TDDのサイクル 1. 次の目標を考える 2. その目標を示すテストを書く 3. そのテストを実行して失敗させる(Red) 4. 目的のコードを書く 5. 2で書いたテストを成功させる(Green) 6. テストが通るままでリファクタリングを行う(Refator) 7. 1~6を繰り返す
  13. 13. Copyright 2014 Hiroyuki Ohnaka TDDと黄金の回転 和田卓人(2014) TDDのこころ@OHC2014 より
  14. 14. Copyright 2014 Hiroyuki Ohnaka キーワード • テストファースト • TODOリスト • アサートファースト • 仮実装 • 三角測量 • 明白な実装 • リファクタリング
  15. 15. Copyright 2014 Hiroyuki Ohnaka TDD三原則(「クリーンコード」より) • 失敗する単体テストのコードを書く前に、製品のコードを書い てはならない • コンパイルが通り、適切に失敗する単体テストができるまでは、 次の単体テストを書いてはならない • 現在失敗している単体テストが通るまで、次の製品コードを書 いてはならない。
  16. 16. 16Copyright 2014 Hiroyuki Ohnaka TDDのこころ
  17. 17. Copyright 2014 Hiroyuki Ohnaka • 小さく回す • 複数を相手にしない 「わが全力をもって敵の分力を撃つ。 つねに敵をつつむがごとくに運動す る」 司馬遼太郎「坂の上の雲」より http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:MIKASAPAINTING.jpg
  18. 18. Copyright 2014 Hiroyuki Ohnaka ユニットテストあるある • 他のテストと一緒に流したら落ちるテスト • 他のテストと一緒に流さないと落ちるテスト • 月が変わると落ちるテスト • リファクタリングするとコンパイルエラーになるテスト • 仕様変更で全滅するテスト • バグがあるのにグリーンバーなテスト
  19. 19. 良いテストのために優先すべきもの • 再現性、繰り返し可能(Repeatable) • 独立していること(Independent) • 詳しくは、http://xunitpatterns.com/
  20. 20. 20Copyright 2014 Hiroyuki Ohnaka 現場で戦う
  21. 21. 荒みきったコード 疲弊しきった現場 爆弾処理のようなリリース http://www.flickr.com/photos/okinawa-soba/2951808529/ http://www.flickr.com/photos/22719239@N04/2246462044/ http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Bomb_neutralizing_EOD_9.jpg
  22. 22. Copyright 2014 Hiroyuki Ohnaka 僕たちはアムロにはなれない • TDDは銀の弾丸ではない • 全ての問題をテクニカルなプラクティスで解決しようとしな い • 原理主義に走らない • 「テストを書かなければならない」 • 「テストファーストしなければならない」 • 「全てのクラスにユニットテストがなければならない」
  23. 23. Copyright 2014 Hiroyuki Ohnaka 「2人目を探す」 • 「より良い開発」を目指すというコンセンサス • 日々是改善 • そのことを考えた時に、TDDより先にやることがあるかも しれない • テストデータの整備 • デプロイ手順の整備 • etc…
  24. 24. Copyright 2014 Hiroyuki Ohnaka もうウンザリです。何も改善できません。 「しかし、私たちにはプログラミングをする本当の 理由があるはずです。」 「もし、自分や同僚がプログラミングを楽しめるな ら、どんなシステムに取り組んでいるかは重要では ありません。そのシステムに対してきちんとした仕 事ができるはずで、そうでなければ待っているのは 落胆です。そうなってしまっては何の楽しみもあり ませんし、私たちはそんな目に遭うべきではありま せん。」
  25. 25. Copyright 2014 Hiroyuki Ohnaka 「レガシーコードで成功する鍵は、やりがいを見出すこと です。」
  26. 26. Copyright 2014 Hiroyuki Ohnaka 「君にも君を動かしているものがあるでしょう?」 牛木義隆(2008) 夢喰いメリー(1) 芳文社
  27. 27. Copyright 2014 Hiroyuki Ohnaka さいごに 「君が質の高いソフトウェアを届けることは誰にも止められ ない。君が現場に立って、お客さんに向けてプロジェクトの 状況と、プロジェクトに必要なことを誠実に伝えることも誰 にも止められないんだ。」
  28. 28. Copyright 2014 Hiroyuki Ohnaka 参考文献 • Beck,Kent(2002) Test Driven Development: By Example Addison-Wesley Professional (長瀬 嘉秀(監訳)テクノロジックアート(訳) (2003) テスト駆動開発入 門 ピアソンエデュケーソン ) • Feathers, Michael C. (2005) Michael C. Feathers Working Effectively with Legacy Code Pearson Education (ウルシステムズ株式会社(監訳) 平澤章、越智典 子、稲葉信之、Fearless Change: Patterns for Introducing New Ideas田村友彦、小堀真義(訳) (2009) レガシーコード改善ガイド 翔泳社) • Humble,Jef Farley David(2011) Continuous Delivery :Reliable Software Releases Though Build,Test,And Deployment Automation Addison-Wesley Professional (和智右桂、高木正弘(2012)継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化 アスキー・メディ アワークス) • Manns,Mary Linn, Rising,Linn(2004) Fearless Change: Patterns for Introducing New Ideas Addison-Wesley (川口恭伸、木村卓央(監訳) 高江洲睦、高橋一 貴、中込大祐、安井力、山口鉄平、角征典(訳) (2014) Fearless Change アジャイルに効く アイデアを組織に広めるための48のパターン 丸善出版) • Martin, Robert C. (2009) Clean CODE: A HANDBOOK OF AGILE OFTWARE CRAFTMANSHP Pearson Education (花井志生(訳) (2009) Clean Code アジャ イルソフトウェア達人の技 アスキー・メディアワークス) • Meszaros, Gerard (2007) xUnit Test Patterns: Refactoring Test Code Addison-Wesley Professional • 日本ソフトウェアテスト資格認定委員会(2012) ソフトウェアテスト標準用語集 日本語版 Version 2.2.J01 http://jstqb.jp/dl/JSTQB-glossary.V2.2.J01.pdf • Rasmusson, Jonathan(2010) The Agile Samurai: How Agile Masters Deliver Great Software Pragmatic Bookshelf (西村直人、角谷信太郎(監訳) 近藤修 平、角掛 拓未 アジャイルサムライ 達人開発者への道 オーム社) • 和田卓人(2014) TDDのこころ@OHC2014 http://www.slideshare.net/t_wada/osh2014-sprit-of-tdd

×