Successfully reported this slideshow.
Your SlideShare is downloading. ×

TDDのこれまで、そしてこれから

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 50 Ad
Advertisement

More Related Content

Slideshows for you (20)

Viewers also liked (19)

Advertisement

More from Hiroyuki Ohnaka (19)

Recently uploaded (20)

Advertisement

TDDのこれまで、そしてこれから

  1. 1. #ccc_r11 Copyright 2016 Hiroyuki Onaka TDDのこれまで、そしてこ れから 2016/9/24 XP祭り2016 大中浩行
  2. 2. #ccc_r11 Copyright 2016 Hiroyuki Onaka テスト駆動開発(Test Driven Development) TDDとは? Generated by 社畜ちゃん台詞メーカー http://blog.oukasoft.com/OS/
  3. 3. #ccc_r11 Copyright 2016 Hiroyuki Onaka By National Photo Company [Public domain], via Wikimedia Commons https://en.wikipedia.org/wiki/Bulletproof_vest テストファーストしたら?
  4. 4. #ccc_r11 Copyright 2016 Hiroyuki Onaka ? By NASA [Public domain], via Wikimedia Commons https://en.wikipedia.org/wiki/Self-replicating_machine テストが自動化されたら?
  5. 5. #ccc_r11 Copyright 2016 Hiroyuki Onaka TDDとは
  6. 6. #ccc_r11 Copyright 2016 Hiroyuki Onaka By Improve It (Flickr: Kent Beck no Workshop Mapping XP.) [CC BY-SA 2.0 (http://creativecommons.org/licenses/by-sa/2.0)], via Wikimedia Commons https://en.wikipedia.org/wiki/Kent_Beck Kent Beck
  7. 7. #ccc_r11 Copyright 2016 Hiroyuki Onaka ※絶版 TDDとは
  8. 8. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「テスト駆動開発入門」にTDDの定義って書い てないんですよね...
  9. 9. #ccc_r11 Copyright 2016 Hiroyuki Onaka TDDは何をする、というのは書いてある 1.素早くテストを追加する。 2.すべてのテストを実行し、新しいテストの失敗を確 認する。 3.小さな修正を行う。 4.すべてのテストを実行し、すべての成功を確認する。 5.重複を取り除くためにリファクタリングを行う。 ケント・ベック(著)長瀬嘉秀(訳)「テスト駆動開発入門」
  10. 10. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「実践テスト駆動開発」では テスト駆動開発(TDD:Test-Driven Development)の考え方は、一見簡単そうに思 える。すまわち、コードを書く前にテストを書 け、というだけだからだ。 Steve Freeman Nat Pryce(著) 和智右桂 髙木正弘(訳) 「実践テスト駆動開発 テストに導かれてオブジェクト指向ソフトウェアを育てる」
  11. 11. #ccc_r11 Copyright 2016 Hiroyuki Onaka とはいうものの、「テストを先に書く」という のは、TDDだけに見られるものではない
  12. 12. #ccc_r11 Copyright 2016 Hiroyuki Onaka Shift left Testing By DonFiresmith (Own work) [CC BY-SA 4.0 (http://creativecommons.org/licenses/by-sa/4.0)], via Wikimedia Commons https://en.wikipedia.org/wiki/Shift_left_testing
  13. 13. #ccc_r11 Copyright 2016 Hiroyuki Onaka Test Early and Often https://msdn.microsoft.com/library/ee330950.aspx
  14. 14. #ccc_r11 Copyright 2016 Hiroyuki Onaka TDDとは 「TDDとは、プログラミングとテストすること を工程として統合した開発スタイルです。」 - @setoazusa
  15. 15. #ccc_r11 Copyright 2016 Hiroyuki Onaka ただ、プログラマーとして手札は多いほうがよ いので、スキルとしてテストファーストできる にこしたことはないです。
  16. 16. #ccc_r11 Copyright 2016 Hiroyuki Onaka 今日のお題 • TDDとは • なぜTDDするのか • なぜTDDするのか(もう一回) • どうテストするか
  17. 17. #ccc_r11 Copyright 2016 Hiroyuki Onaka なぜTDDする のか
  18. 18. #ccc_r11 Copyright 2016 Hiroyuki Onaka 最初に答えをいいます 「継続的インテグレーションをもたらすための 核心である素早いフィードバックは、ユニット テストのカバレッジが十分にないと可能になら ないのだ」 Jez Humble,David Farley(著) 和智右桂(訳) 「継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化」
  19. 19. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「エラーが自動的に増殖するのがDevOps」 https://twitter.com/devops_borat/status/41587168870797312
  20. 20. #ccc_r11 Copyright 2016 Hiroyuki Onaka サービス開発は、開発者だけで行うものではない • プロダクトオーナー • QAエンジニア • インフラエンジニア • 運用エンジニア(SRE) • リモート開発(オフショア/ニアショア) • etc…
  21. 21. #ccc_r11 Copyright 2016 Hiroyuki Onaka DevOpsの各種プラクティス • いずれも、プロダクトの品質が安定している ことが前提条件 • A/Bテスト • オートスケール • カナリヤテスト / ダークカナリヤ • Blue-Green Deployment
  22. 22. #ccc_r11 Copyright 2016 Hiroyuki Onaka • 安定したプロダクトの品質が、チーム相互の 信頼をもたらす。 • 継続的インテグレーション(CI)を軸としたデ リバリーのワークフローの確立のために、自 動化されたテストが足場として必要。
  23. 23. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「安全性を前提条件に」 http://www.slideshare.net/imagire/ss-64457130 出典:https://www.industriallogic.com/blog/modern-agile/
  24. 24. #ccc_r11 Copyright 2016 Hiroyuki Onaka なぜTDDする のか(もう一回)
  25. 25. #ccc_r11 Copyright 2016 Hiroyuki Onaka TDD is dead. http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html
  26. 26. #ccc_r11 Copyright 2016 Hiroyuki Onaka テストなんて書かなくて良い? http://mosa-siru.hatenablog.com/entry/2016/03/06/173930
  27. 27. #ccc_r11 Copyright 2016 Hiroyuki Onaka …タイトルで釣るのはいけないと思います! (目をそらしながら)
  28. 28. #ccc_r11 Copyright 2016 Hiroyuki Onaka 迅速なサービス開発にテストは必要ないのか? …その前に、ちょっと寄り道をします。
  29. 29. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「日本で世界最先端のDevOpsチームに追いつき追い越す方法」 https://docs.com/ushio-tsuyoshi/6313
  30. 30. #ccc_r11 Copyright 2016 Hiroyuki Onaka
  31. 31. #ccc_r11 Copyright 2016 Hiroyuki Onaka ソフトウェア業 インターネット付随サービス業 総務省「ICTの経済分析に関する調査報告書」から作成 http://www.soumu.go.jp/johotsusintokei/link/link03_03.html
  32. 32. #ccc_r11 Copyright 2016 Hiroyuki Onaka • 「赤字サービスは付加価値を生んだことにな らない」から • 速く作ればいいというものではない • 生み出したプロダクトの総量 != 生産性
  33. 33. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「ビジネスに貢献するテストであるべきだ!」 https://www.flickr.com/photos/cognizant-worldwide/19037152723
  34. 34. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「ビジネスゴールは計測可能であるべきだ!」 DocChewbacca https://www.flickr.com/photos/st3f4n/2865510059/
  35. 35. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「そしてそれは金である!」 Tracy O https://www.flickr.com/photos/tracy_olson/61056391
  36. 36. #ccc_r11 Copyright 2016 Hiroyuki Onaka …と、「BDD in Action」 ではおっしゃるわけです が…
  37. 37. #ccc_r11 Copyright 2016 Hiroyuki Onaka やはりポイントは「価値」 …価値とは?
  38. 38. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「ソフトウェア品質知識体系ガイド」では 「すなわち、品質とは顧客が認識した価値に対 する顧客の評価である。」 SQuBOK 策定部会(編) ソフトウェア品質知識体系ガイド(第2版)-SQuBOK® Guide V2-
  39. 39. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「価値をテストする」 John Ferguson Smart 「BDD in Action Behavior-Driven Development for the whole software lifecycle」
  40. 40. #ccc_r11 Copyright 2016 Hiroyuki Onaka • コンポーネントのテスト • シナリオのテスト • メトリクスの計測 が相互に連携している状態があるべき姿。
  41. 41. #ccc_r11 Copyright 2016 Hiroyuki Onaka どうテストす るか
  42. 42. #ccc_r11 Copyright 2016 Hiroyuki Onaka 最近よく聞く話 • ユニットテスト • 「このコンポーネントのテストモックだらけでわ かりづらいんですけど…」 • エンドツーエンドのテスト • 「テストケースが増えてきてメンテナンスがつら いです…」
  43. 43. #ccc_r11 Copyright 2016 Hiroyuki Onaka • AWS上でのサービス構築に代表されるように、 テストを書くときに依存するサービス/ミド ルウェアが増えた • マイクロサービスアーキテクチャーがその流 れを加速
  44. 44. #ccc_r11 Copyright 2016 Hiroyuki Onaka それにも拘わらず、テストをはじめとして開発 の方法論がいわゆる三層アーキテクチャーに最 適化されすぎているが故の問題
  45. 45. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「テスト自動化ピラミッド」 Mike Cohn 「Suceeding with agile」
  46. 46. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「テスト自動化ピラミッド」 • 「マイクロサービスアーキテクチャ」で取り 上げられる • エンドツーエンドのテストとユニットテスト の間に、UIをバイパスしてサービスをテスト する層を挟む
  47. 47. #ccc_r11 Copyright 2016 Hiroyuki Onaka まとめ
  48. 48. #ccc_r11 Copyright 2016 Hiroyuki Onaka TDDは死んだ? • 単独の開発プラクティスが開発プロセス全体 を駆動する時代の終焉 • プログラミング、テスト、デリバリーなどの プラクティスを総合して価値あるソフトウェ アをデリバリーする時代へ
  49. 49. #ccc_r11 Copyright 2016 Hiroyuki Onaka • その中で、ユニットテストをすること、テス トファーストすることは、変わらず重要であ り続けます。 • なので、安心してテストを書いてください。
  50. 50. #ccc_r11 Copyright 2016 Hiroyuki Onaka ありがとうございました! • 大中浩行(Onaka,Hiroyuki) • @setoazusa • グロースエクスパートナーズ株式会社 アーキテクチャソリューション部 テクニカルリード • http://blog.fieldnotes.jp/

×