Your SlideShare is downloading. ×
0
テスト駆動開発の進化	#kansumiA3 和智 右桂	                    グロースエクスパートナーズ株式会社	                    ソリューションデリバリー部 ITアーキテクト	             ...
自己紹介§  和智右桂(わち ゆうけい) §  @digitalsoul0124§  システム開発 §  グロースエクスパートナーズ株式会社 §  ITアーキテクト§  翻訳(鈍器系) §  エリック・エヴァンスのドメイン駆動設計...
GOOS日本語版出版      Developers Summit 2012
テスト駆動開発の進化  2002   Developers Summit 2012                                  2007
Ø テスト駆動開発の進化とは?Ø GOOSのポイントØ 開発の現場に活かすには?       Developers Summit 2012
テスト駆動開発の進化テスト駆動開発の進化とは?             Developers Summit 2012
TDDの基本的なサイクルレッド/グリーン/リファクタリング      Developers Summit 2012
TDDの基本的なサイクルクラスをひとつ書く場合ならテストコードも悩まず書ける   テスト                     Money   コード                       クラス         Developers ...
TDDの基本的なサイクル本格的なアプリを作る場合、どこから手をつければいいだろう?                              他システム      APサーバ                     DBサーバ     Deve...
TDDの黄金律“まずは                            を書く”   どんなテストを書けばよいだろう?       Developers Summit 2012
受け入れテスト§  システムが実装すべきフィーチャ      Menu http://www.flickr.com/photos/sifu_renka/6761779847/ by Sifu Renka	             Develo...
システムのスライス§  受け入れテストはエンドツーエンドに                                  他システム                                      DB    UI     端か...
進化したTDDサイクル   二重のテストループ                    “Growing Object-Oriented Software, Guided by Tests” p.8より	     Developers Summi...
外から内へ§  外側のテストは   進 の指標に§  内側のテストは   コードの質のため          London assembly stair http://www.flickr.com/photos/mcginnly/21968...
テスト駆動開発の進化とは…    Developers Summit 2012
コードを書くことから  356/365: An Evolution of Rivalry- for Matt http://www.flickr.com/photos/practicalowl/1468829205/ by an practic...
テスト駆動開発の進化GOOSのポイント             Developers Summit 2012
GOOSのポイントとは?• モック• ウォーキングスケルトン    I Just Have To Make One More Call, He Said http://www.flickr.com/photos/an_untrained_eye...
モックについて  Developers Summit 2012
オブジェクト指向観オブジェクト指向システムは協力し合うオブジェクトの網の目のようなものだクラスよりも      Developers Summit 2012
網の目の中のオブジェクトは どうテストしたらいいだろう?テスト                                       ?	      ?	                                ?	        ...
モックの登場隣り合うオブジェクトをモックに差し替える            モッカリーテスト                                  ?	      ?	                            ?	  ...
具体例Developers Summit 2012
仕様§ オブジェクトをロードするフレー   ムワークに対してキーを元にした   検索を行い、その結果をキャッ   シュする§ ロードされてから一定時間が経つ   と、そのインスタンスは使えなく   なるので、時々リロードする      De...
クラス構造ObjectLoaderの手前に、TimedCacheクラスを作る              Timed                     Object テスト              Cache               ...
呼び出しシーケンスTimedCacheは、最初に呼び出されたとき、ObjectLoaderにアクセスする テストコード         TimedCache                ObjectLoader      lookup("KE...
テストコード@Testpublic void キャッシュされていないオブジェクトはロードする()  throws Exception {      final ObjectLoader mockLoader         = context....
参考§ ロールをモックせよ §  http://jmock.org/oopsla2004_ja.pdf                                       http://www.jmock.org/	        ...
インターフェイスの発見インターフェイスを発見しながら、外から内へ開発を進める                                 B受け入れ       UI         A          B テスト            ...
オブジェクトの登場パターン§  分解(Breaking out)  §  あるオブジェクトが責務を持ちすぎている      場合、ふるまいの凝集した単位を分割する§  発芽(Budding off)  §  新しい概念が登場したときにプレ...
ビジネスドメインの概念§  アプリケーションの中核は、   ビジネスドメインの言語を使って記述する   Business Ambassadors http://www.flickr.com/photos/number10gov/5345434...
あわせて読みたい     Developers Summit 2012
ウォーキングスケルトン   について   Developers Summit 2012
最初のフィーチャのパラドクス§  フィーチャをエンドツーエンドに開発§  テスト基盤も同時に開発  Paradox of Freedom: the leash http://www.flickr.com/photos/theilr/4265...
ウォーキングスケルトン§  フィーチャの薄いスライス§  ただし、エンドツーエンドに      Cake http://www.flickr.com/photos/rosada/7244940166/ by TAU*	           ...
継続的デリバリーまずは基盤をつくり、ビルド/デプロイ/テストを自動化する 下準備           アーキテクチャを              ビルド、デプロイ、テストの 問題を理解する             定める            ...
あわせて読みたい     Developers Summit 2012
中間のまとめ Developers Summit 2012
フィードバックループ§  エンドツーエンドのベースを作ろう§  一フィーチャずつ差し込んでいこう          “Growing Object-Oriented Software, Guided by Tests” p.8より	    ...
ふるまい駆動開発テストを考えるということは、外側から見たシステムのふるまいを考えるということ          Just lookin in http://www.flickr.com/photos/eyesore9/4223978728/ b...
テスト駆動開発の進化開発の現場に活かすには             Developers Summit 2012
想定§ 受託開発 § お客様の業務を学びながら開発§ 中規模∼大規模 § 画面/帳票/バッチで200など § プログラマ30名程度 § ある程度のウォーターフォール          Developers Summit 2012
...どうしよう?Puzzled http://www.flickr.com/photos/54027476@N07/4999919941/ by andy.brandon50	                      Developers ...
二重ループのさらに外最初の受け入れテストはどうやって書いたらいいだろう?下準備          アーキテクチャを              ビルド、デプロイ、テストの問題を理解する            定める                ...
GrowingObject-OrientedSoftware,Guided by Tests      Developers Summit 2012
事前のドメイン分析業務分析からドメインを抽出ドメインごとに特性を見極める                         ドメインC       ドメインA                                        ドメイン...
複雑さを吸収する場所業務が複雑化すれば、システムも複雑化する。それをどこで受け止めるのか?        Role                                 Entity Role           Role      ...
エンティティ主体のドメイン§ ロジックがSQLに集約§ 設計すべきはデータパターン    Diagram http://www.flickr.com/photos/synx508/4817848887/ by synx508	       ...
ロール主体のドメイン§ ロジックがオブジェクト間の   インタラクションに集約§ 設計すべきはシナリオパターン       Developers Summit 2012
まとめ§ 作るべきものの特性を見極め、   それに合わせたアーキテクチャを   策定しよう§ アーキテクチャとは   成長の方向性を   規定する型だ      Green Fields http://www.flickr.com/phot...
ありがとうございました!    Developers Summit 2012
Upcoming SlideShare
Loading in...5
×

テスト駆動開発の進化

18,067

Published on

「デブサミ関西 2012」での講演資料

Published in: Technology
1 Comment
24 Likes
Statistics
Notes
No Downloads
Views
Total Views
18,067
On Slideshare
0
From Embeds
0
Number of Embeds
19
Actions
Shares
0
Downloads
67
Comments
1
Likes
24
Embeds 0
No embeds

No notes for slide

Transcript of "テスト駆動開発の進化"

  1. 1. テスト駆動開発の進化 #kansumiA3 和智 右桂 グロースエクスパートナーズ株式会社 ソリューションデリバリー部 ITアーキテクト Developers Summit 2012
  2. 2. 自己紹介§  和智右桂(わち ゆうけい) §  @digitalsoul0124§  システム開発 §  グロースエクスパートナーズ株式会社 §  ITアーキテクト§  翻訳(鈍器系) §  エリック・エヴァンスのドメイン駆動設計 §  継続的デリバリー Developers Summit 2012
  3. 3. GOOS日本語版出版 Developers Summit 2012
  4. 4. テスト駆動開発の進化 2002 Developers Summit 2012 2007
  5. 5. Ø テスト駆動開発の進化とは?Ø GOOSのポイントØ 開発の現場に活かすには? Developers Summit 2012
  6. 6. テスト駆動開発の進化テスト駆動開発の進化とは? Developers Summit 2012
  7. 7. TDDの基本的なサイクルレッド/グリーン/リファクタリング Developers Summit 2012
  8. 8. TDDの基本的なサイクルクラスをひとつ書く場合ならテストコードも悩まず書ける テスト Money コード クラス Developers Summit 2012
  9. 9. TDDの基本的なサイクル本格的なアプリを作る場合、どこから手をつければいいだろう? 他システム APサーバ DBサーバ Developers Summit 2012
  10. 10. TDDの黄金律“まずは を書く” どんなテストを書けばよいだろう? Developers Summit 2012
  11. 11. 受け入れテスト§  システムが実装すべきフィーチャ Menu http://www.flickr.com/photos/sifu_renka/6761779847/ by Sifu Renka Developers Summit 2012
  12. 12. システムのスライス§  受け入れテストはエンドツーエンドに 他システム DB UI 端から端まで(End to End) Developers Summit 2012
  13. 13. 進化したTDDサイクル 二重のテストループ “Growing Object-Oriented Software, Guided by Tests” p.8より Developers Summit 2012
  14. 14. 外から内へ§  外側のテストは 進 の指標に§  内側のテストは コードの質のため London assembly stair http://www.flickr.com/photos/mcginnly/2196879337 by mcginnly Developers Summit 2012
  15. 15. テスト駆動開発の進化とは… Developers Summit 2012
  16. 16. コードを書くことから 356/365: An Evolution of Rivalry- for Matt http://www.flickr.com/photos/practicalowl/1468829205/ by an practicalowl ソフトウェアを作ることへ Developers Summit 2012
  17. 17. テスト駆動開発の進化GOOSのポイント Developers Summit 2012
  18. 18. GOOSのポイントとは?• モック• ウォーキングスケルトン I Just Have To Make One More Call, He Said http://www.flickr.com/photos/an_untrained_eye/2524462429/ Developers Summit 2012 by an untrained eye
  19. 19. モックについて Developers Summit 2012
  20. 20. オブジェクト指向観オブジェクト指向システムは協力し合うオブジェクトの網の目のようなものだクラスよりも Developers Summit 2012
  21. 21. 網の目の中のオブジェクトは どうテストしたらいいだろう?テスト ? ? ? “Growing Object Oriented Software, Guided By Tests” p.19の図を元に作成 Developers Summit 2012
  22. 22. モックの登場隣り合うオブジェクトをモックに差し替える モッカリーテスト ? ? ? Developers Summit 2012
  23. 23. 具体例Developers Summit 2012
  24. 24. 仕様§ オブジェクトをロードするフレー ムワークに対してキーを元にした 検索を行い、その結果をキャッ シュする§ ロードされてから一定時間が経つ と、そのインスタンスは使えなく なるので、時々リロードする Developers Summit 2012
  25. 25. クラス構造ObjectLoaderの手前に、TimedCacheクラスを作る Timed Object テスト Cache Loader load Developers Summit 2012
  26. 26. 呼び出しシーケンスTimedCacheは、最初に呼び出されたとき、ObjectLoaderにアクセスする テストコード TimedCache ObjectLoader lookup("KEY") load("KEY") "VALUE" "VALUE" Developers Summit 2012
  27. 27. テストコード@Testpublic void キャッシュされていないオブジェクトはロードする() throws Exception { final ObjectLoader mockLoader = context.mock(ObjectLoader.class); context.checking(new Expectations() { { oneOf(mockLoader).load("KEY"); will(returnValue("VALUE")); } }); TimedCache cache = new TimedCache(mockLoader); assertThat((String) cache.lookup("KEY"), is("VALUE"));} Developers Summit 2012
  28. 28. 参考§ ロールをモックせよ §  http://jmock.org/oopsla2004_ja.pdf http://www.jmock.org/ Developers Summit 2012
  29. 29. インターフェイスの発見インターフェイスを発見しながら、外から内へ開発を進める B受け入れ UI A B テスト D C C D ユニット E E テスト1 ユニット テスト2 外から内へ Developers Summit 2012
  30. 30. オブジェクトの登場パターン§  分解(Breaking out) §  あるオブジェクトが責務を持ちすぎている 場合、ふるまいの凝集した単位を分割する§  発芽(Budding off) §  新しい概念が登場したときにプレースホル ダー型をラップする(値)もしくは、サービ スを定義する(オブジェクト)§  包含(Bundling up) §  関連するオブジェクトの集団をひとつのオ ブジェクトにまとめる Developers Summit 2012
  31. 31. ビジネスドメインの概念§  アプリケーションの中核は、 ビジネスドメインの言語を使って記述する Business Ambassadors http://www.flickr.com/photos/number10gov/5345434419/ by The Prime Ministers Office Developers Summit 2012
  32. 32. あわせて読みたい Developers Summit 2012
  33. 33. ウォーキングスケルトン について Developers Summit 2012
  34. 34. 最初のフィーチャのパラドクス§  フィーチャをエンドツーエンドに開発§  テスト基盤も同時に開発 Paradox of Freedom: the leash http://www.flickr.com/photos/theilr/4265521288/ by theilr Developers Summit 2012
  35. 35. ウォーキングスケルトン§  フィーチャの薄いスライス§  ただし、エンドツーエンドに Cake http://www.flickr.com/photos/rosada/7244940166/ by TAU* Developers Summit 2012
  36. 36. 継続的デリバリーまずは基盤をつくり、ビルド/デプロイ/テストを自動化する 下準備 アーキテクチャを ビルド、デプロイ、テストの 問題を理解する 定める 自動化 二重のループ Developers Summit 2012
  37. 37. あわせて読みたい Developers Summit 2012
  38. 38. 中間のまとめ Developers Summit 2012
  39. 39. フィードバックループ§  エンドツーエンドのベースを作ろう§  一フィーチャずつ差し込んでいこう “Growing Object-Oriented Software, Guided by Tests” p.8より Developers Summit 2012
  40. 40. ふるまい駆動開発テストを考えるということは、外側から見たシステムのふるまいを考えるということ Just lookin in http://www.flickr.com/photos/eyesore9/4223978728/ by eyesore9 Developers Summit 2012
  41. 41. テスト駆動開発の進化開発の現場に活かすには Developers Summit 2012
  42. 42. 想定§ 受託開発 § お客様の業務を学びながら開発§ 中規模∼大規模 § 画面/帳票/バッチで200など § プログラマ30名程度 § ある程度のウォーターフォール Developers Summit 2012
  43. 43. ...どうしよう?Puzzled http://www.flickr.com/photos/54027476@N07/4999919941/ by andy.brandon50 Developers Summit 2012
  44. 44. 二重ループのさらに外最初の受け入れテストはどうやって書いたらいいだろう?下準備 アーキテクチャを ビルド、デプロイ、テストの問題を理解する 定める 自動化 二重のループ Developers Summit 2012
  45. 45. GrowingObject-OrientedSoftware,Guided by Tests Developers Summit 2012
  46. 46. 事前のドメイン分析業務分析からドメインを抽出ドメインごとに特性を見極める ドメインC ドメインA ドメインDユーザー 他システム ドメインB Developers Summit 2012
  47. 47. 複雑さを吸収する場所業務が複雑化すれば、システムも複雑化する。それをどこで受け止めるのか? Role Entity Role Role Entity Entity Role Entity Developers Summit 2012
  48. 48. エンティティ主体のドメイン§ ロジックがSQLに集約§ 設計すべきはデータパターン Diagram http://www.flickr.com/photos/synx508/4817848887/ by synx508 Developers Summit 2012
  49. 49. ロール主体のドメイン§ ロジックがオブジェクト間の インタラクションに集約§ 設計すべきはシナリオパターン Developers Summit 2012
  50. 50. まとめ§ 作るべきものの特性を見極め、 それに合わせたアーキテクチャを 策定しよう§ アーキテクチャとは 成長の方向性を 規定する型だ Green Fields http://www.flickr.com/photos/21257551@N02/2258301753/ by Pollys Dad Developers Summit 2012
  51. 51. ありがとうございました! Developers Summit 2012
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×