Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

2,201 views

Published on

2016/9/24 XP祭り2016

Published in: Software

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/

×