Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.

20140226_TDD

779 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

20140226_TDD

  1. 1. Agile Evening 2014 Agile Evening #8 2014-02-26 (Wed) 19:00~ Hakozaki 10F @ryohei_nakazawa What is a TDD ?
  2. 2. Agile Evening 2014 1 Welcome お集り頂き ありがとう ございます Golder@2014Sochi Golder@2014Sochi Golder@2014Sochi Golder@2014Sochi
  3. 3. Agile Evening 2014 2 Introduction ■自己紹介 - About myself ✔ @ryohei_nakazawa ✔ Sierで約15年 ✔ プログラマ → 設計者 → PM → プロセス改善 ✔ 今年初の担当会(2回目は7月) [ テスト と 私 ] ・1999年ぐらい、DISPLAYコマンドでデバッグをしまくる @ COBOL ・2004年ぐらい、『ソフトウェアテストPRESS』と出会い、 これからはテストだ!自動化だ!と意気込む ・2006年ぐらい、PMだったが、新人のプログラムを奪う → 挫折 JUnitは触れず ・2011年ぐらい、テスト専門ベンダーさんと出会う ・2014年、両手にサポートを得て、遂にJUnitを動かすことに成功! 業務外で参加ですよ イマココ
  4. 4. Agile Evening 2014 3 Today’s Theme Red GreenRefactor est riven evelopment 今日のテーマ 『 明日からTDDを始めてみよう 』
  5. 5. Agile Evening 2014 ふりー でぃすかっしょん 4 Story of Today(TDD) 今日の流れはこのような感じ。 第1部 そもそもTDDって何なのさ? - What is a TDD ? 第2部 明日からTDDをやってみよう! - Let’s try a TDD starting tomorrow !! ✔ どうやって?( How to … ) ✔ デモ ( demonstration ) Red GreenRefactor しつもん etc
  6. 6. Agile Evening 2014 5 Story of Today(TDD) Part.1 そもそもTDDって何なのさ? - What is a TDD ? Part.2 明日からTDDをやってみよう! - Let’s try a TDD starting tomorrow !! ✔ どうやって?( How to … ) ✔ デモ ( demonstration ) Red GreenRefactor
  7. 7. Agile Evening 2014 6 1. TDDとは 2. TDDの基本サイクル 3. TDDが目指すところ Part.1 そもそもTDDって何なのさ? - What is a TDD ? Red GreenRefactor
  8. 8. Agile Evening 2014 7 1. TDDとは Wikipedia先生によると。
  9. 9. Agile Evening 2014 8 1. TDDとは ■TDDをざっくり見てみましょう。 ① 開発手法(プラクティス)のひとつです ② サムライが「問答無用で実践すべき」といっています ③ ライトウィングです ④ テストファーストという考え方です ⑤ xUnitをつかいます むむ?
  10. 10. Agile Evening 2014 9 ① 開発手法(プラクティス)のひとつです テスト駆動開発 (てすとくどうかいはつ、test-driven development; TDD) とは、プログラム開発手法の 一種で、プログラムに必要な各機能について、最初にテストを書き(これをテストファーストと言う)、 そのテストが動作する必要最低限な実装をとりあえず行った後、コードを洗練させ る、という短い工程を繰り返すスタイルである。多くのアジャイルソフトウェア開発手法、例えばエクストリーム・ プログラミングにおいて強く推奨されている。近年はビヘイビア駆動開発へと発展を遂げている。 (以下略) ※引用元:http://ja.wikipedia.org/wiki/テスト駆動開発 1. TDDとは (1/5) 【参考】「~駆動開発」家の親戚 ・TiDD : チケット ・DDD : ドメイン ・BDD : ビヘイビア ・MDD : モデル ・ODD:オカン(ビックオー)(Yammerにリンクあり) などなど
  11. 11. Agile Evening 2014 10 ② サムライが「問答無用で実践すべき」といっています 1. TDDとは (2/5) 1/4 ではなく 3/4で リーチ!! http://www.amazon.co.jp/
  12. 12. Agile Evening 2014 11 ③ ライトウィングです 1. TDDとは (3/5) (引用元)An Agile Way 『アジャイルの「ライトウィング」と「レフトウィング」』 平鍋健児氏 http://blogs.itmedia.co.jp/hiranabe/2012/09/rightwing-and-leftwing-of-agile.html よーく見てみると。。。 This is this
  13. 13. Agile Evening 2014 12 ④ テストファーストという考え方です ※V字モデルでいうところの実装前後でイメージください 1. TDDとは (4/5) • 実装する前にテストを考える! • どのように動けば良いか(仕様)を明確化 • テストコード ⇒ 動くコード(プロダクションコード)⇒ リファ (蛇足)設計書が不要という話ではなく、動作するコードを中心に考えている。 アジャイル宣言「包括的なドキュメントより動くソフトウェアを、」にとありますが 設計書が不要だなんて何処にも無い! ⇒ アジャイルに対するよくある誤解・・・ about
  14. 14. Agile Evening 2014 13 1. TDDとは (4/5) ④ テストファーストという考え方です(つづき) point 動かしながら、きれいなコードへ ※これは昨年12/8のイベントでt-wada氏の資料より なるほど!設計を突き詰めることよりも、動くコードをどんどんキレイにしていくのですね!! TDD!! 従来型!? 引用元:http://www.slideshare.net/t_wada 「TDDのこころ」 (CC BY 2.1 JP)
  15. 15. Agile Evening 2014 14 ⑤ xUnitをつかいます ・テスティングフレームワーク ・プログラムの最小単位(ユニット)をテスト可能 ・テストコードを書き、動くコード(プロダクションコード)をテスト実施 ・Eclipseのプラグインとして、JUnitがデフォルトで用意されている ・使っているプロジェクトは多い!? 1. TDDとは (5/5) 【参考】「xUnit」家の親戚 ・JUnit : Java用 ・NUnit : .NET Framework用 ・CUnit : C言語用 ・VBUnit : Visual Basic用 ・SUnit:Smalltalk用(Kent Beck) などなど 『 テスト駆動開発入門』 は絶版! もう中古市場で出回っているだけ でも @kakutaniさんがなんとかしてくれる (ヒュー! ヒュー! @12/8) https://speakerdeck.com/kakutani/opening- keynote-for-agilesamurai-basecamp
  16. 16. Agile Evening 2014 15 1. TDDとは (まとめ) ■TDDを超・超・超ざっくり言うと・・・ 【仕様書】 「現在時刻」に応じて、挨拶の内容を下記のようにそれぞれ返す。 朝(05:00以上 12:00未満)の場合、「おはようございます」 昼(12:00以上 18:00未満)の場合、「こんにちは」 夜(18:00以上 05:00未満)の場合、「こんばんは」 という仕様がある時に、 「この仕様を満たすコード」をテストするための 「テストコード」から書き始めるってイメージです なんだ簡単じゃん。 詳しくは後半デモで。
  17. 17. Agile Evening 2014 16 1. TDDとは 2. TDDの基本サイクル 3. TDDが目指すところ Part.1 そもそもTDDって何なのさ? - What is a TDD ? Red GreenRefactor
  18. 18. Agile Evening 2014 17 2. TDDの基本サイクル TDDには、とても大事な基本サイクルがあります。 これを無くしては、いくらテストコードを書いても、TDDにならない。 この基本サイクルを回すこと、これがテスト駆動開発。 これかいな・・・? Red GreenRefactor
  19. 19. Agile Evening 2014 18 1. 次の目標を考える 2. その目標を示すテストを書く 3. そのテストを実行して失敗する(Red) 4. 目的のコードを書く 5. 2.で書いたテストを成功させる(Green) 6. テストが通る状態のまま、コードをリファクタリン グしてキレイに (Refactoring) 7. 1.~6.を繰り返す 2. TDDの基本サイクル Red GreenRefactor 【仕様書】 「現在時刻」に応じて、挨拶の内容を下記のようにそれぞれ返す。 朝(05:00以上 12:00未満)の場合、「おはようございます」 昼(12:00以上 18:00未満)の場合、「こんにちは」 夜(18:00以上 05:00未満)の場合、「こんばんは」 参考:http://www.slideshare.net/t_wada 「TDDのこころ」 (CC BY 2.1 JP)
  20. 20. Agile Evening 2014 19 Refactoring 引用元:http://www.slideshare.net/t_wada 「TDDのこころ」 (CC BY 2.1 JP) この基本サイクルを回せ!回せ!回せ! 2. TDDの基本サイクル
  21. 21. Agile Evening 2014 20 2. TDDの基本サイクル TDD!! 引用元:http://www.slideshare.net/t_wada 「TDDのこころ」 (CC BY 2.1 JP) この基本サイクルを回すことで、コードが成長していくイメージ! 更に。この回し方にはコツがあるらしい!
  22. 22. Agile Evening 2014 21 2. TDDの基本サイクル この基本サイクルを回すコツ。 一.徐々に(一度に沢山やらない) 二.素早く(慣れるとスゴいスピード) 三.何度も何度も(サイクリングサイクリング、ヤホーヤホー) Red GreenRefactor
  23. 23. Agile Evening 2014 22 1. TDDとは 2. TDDの基本サイクル 3. TDDが目指すところ Part.1 そもそもTDDって何なのさ? - What is a TDD ? Red GreenRefactor
  24. 24. Agile Evening 2014 23 3. TDDが目指すところ TDDについて、なんとなくイメージがついてきましたか? ちなみに、このTDD。誰が嬉しいのでしょうかね? 顧客? マネージャ? テスター? 次は 「TDDが目指すところ」 です。 いいことあるの?
  25. 25. Agile Evening 2014 24 ■結論■ TDDは素晴らしいコードをつくる と い う よ り も 素晴らしいエンジニアを育てる 3. TDDが目指すところ
  26. 26. Agile Evening 2014 25 3. TDDが目指すところ 「エンジニアを育てる」 とは ① TDDの基本サイクルから常にフィードバックがあり、 ② テストし易いコードが身に付き、 ③ ボトムアップで良い設計を知ることができる つまり 自分の書いたコードに自信を持てるようになる コードを書くことに自信を持てるようになる 落ちないで… http://free-photos.gatag.net/
  27. 27. Agile Evening 2014 26 3. TDDが目指すところ で?誰なの? 開発者自身。 私も。 あなたも。 我々全員! 我々は良いシステム・ソフトウェアを顧客に届けることが仕事。 それができるエンジニアをTDDは育ててくれそうだ。Agileかどうかではなく。
  28. 28. Agile Evening 2014 27 3. TDDが目指すところ いや、実はとても取っつきやすい! = ハードル低い = 明日からだって出来る でも、なんか難しそう。。。
  29. 29. Agile Evening 2014 28 3. TDDが目指すところ なぜ難しそうなのかを考えてみる。 Q1.そもそもうちのシステムにテストコードないんですけど。 Q2.テストコード書くなんて作業量が増えるだけじゃ?メンテも大変そう。 Q3. テストデータをちゃんと揃えたり・・・ Q4.リファクタリングの工数なんて無いんですけど。 Q5.「TDDやろう」と周りを説得できそうもないんですけど。
  30. 30. Agile Evening 2014 29 Q1.そもそもうちのシステムにテストコードないんですけど。 3. TDDが目指すところ Unitテストをした方がよさげなところから着手しましょう。 それで良い。 すこしづつ。すこしづつ。 レガシーコード(注)改善にTDD。 (注)レガシーコードとは、テストコードの無いプロダクションコードのこと http://www.amazon.co.jp/
  31. 31. Agile Evening 2014 30 Q2.テストコード書くなんて作業量が増えるだけじゃ?メンテも大変そう。 3. TDDが目指すところ 確かにコード書く量は増えます。 逆にそれが良い。沢山書ける。書きなおせる。育つ。 やりたい人だけやればいい!(not やらされ仕事)
  32. 32. Agile Evening 2014 31 Q3.テストデータをちゃんと揃えたり・・・ 複雑なテストにならないようなロジックを心がける。 また、仕様のテストをやろうとしない。ハマる。 ✔ 仕様のテスト・・・いつものテスト ✔ 実装のテスト・・・TDD 12/8、実際に聞いた話 ・PHPの環境 ・Junitで実装のテストをした上で、 ・Selenium+Jenkins+git+Cucumber で仕様のテスト(自動化)をしている
  33. 33. Agile Evening 2014 32 Q4.リファクタリングの工数なんてなんですけど・・・ 3. TDDが目指すところ 「リファクタリングやらしてください」 は 負け いつものサイクルの中で、リファクタリングする。 少しづつ。少しづつ。 素早く。素早く。
  34. 34. Agile Evening 2014 33 Q5.「TDDやろう」と周りを説得できそうもないんですけど。 3. TDDが目指すところ コーディング&デバッグの世界はLocal環境。 ひとりで始めてしまえばエエヤン。 やってみて良かったら、 周りを巻き込んでみるって感じで。 ※ちなみにTDDとペアプロは相性良いようです 12/8に見たライブコーディングはペアプロでした
  35. 35. Agile Evening 2014 34 3. TDDが目指すところ(まとめ) TDD実践者たちの生の声(12/8@渋谷) ・やってみたら分かるよ! ・TDDが身に付いたら勝ちです ・半年もかからないよ。 などなど
  36. 36. Agile Evening 2014 35 3. TDDが目指すところ(まとめ) TDD 7つの心得 一 、 自 発 的 な 姿 勢 一 、 気 に な る と こ ろ か ら 一 、 常 に 基 本 サ イ ク ル を 意 識 一 、 大 が か り な 工 事 は 止 め る ( 仮 実 装 す る / 徐 々 に 作 る ) 一 、 テ ス ト コ ー ド 作 成 も プ ロ グ ラ ミ ン グ の 一 部 と 割 り 切 る × 仕 様 の テ ス ト ◎ 実 装 の テ ス ト 一 、 T D D は 万 能 薬 で は な い × U I ( 画 面 描 画 系 ) ◎ 共 通 ビ ジ ネ ス ロ ジ ッ ク 一 、 テ ス ト の 基 本 に 立 ち 返 る 同 値 分 割 境 界 値 分 析 オ ー ル ペ ア デ シ ジ ョ ン テ ー ブ ル ・ ・ ・
  37. 37. Agile Evening 2014 36 Story of Today(TDD) Part.1 そもそもTDDって何なのさ? - What is a TDD ? Part.2 明日からTDDをやってみよう! - Let’s try a TDD starting tomorrow !! ✔ どうやって?( How to … ) ✔ デモ ( demonstration ) Red GreenRefactor
  38. 38. Agile Evening 2014 37 ① How to … TDDってなんか良さげだねぇ ホントに明日からやれるの? できます! Javaの場合だと・・・
  39. 39. Agile Evening 2014 38 ① How to … 1.Javaをいんすと~る。 2.Eclipseをいんすと~る。 いじょ。
  40. 40. Agile Evening 2014 39 Story of Today(TDD) Part.1 そもそもTDDって何なのさ? - What is a TDD ? Part.2 明日からTDDをやってみよう! - Let’s try a TDD starting tomorrow !! ✔ どうやって?( How to … ) ✔ デモ ( demonstration ) Red GreenRefactor
  41. 41. Agile Evening 2014 40 ① demonstration このデモの目的 TDDの基本サイクルのイメージを具体的に掴む ※細かいところは気にせずにm(__)m Red GreenRefactor
  42. 42. Agile Evening 2014 41 【仕様書】 「現在時刻」に応じて、挨拶の内容を下記のようにそれぞれ返す機能。 なお、タイムゾーンはAsia/Tokyoとする。 朝(05:00:00以上 12:00:00未満)の場合、「おはようございます」と返す 昼(12:00:00以上 18:00:00未満)の場合、「こんにちは」と返す 夜(18:00:00以上 05:00:00未満)の場合、「こんばんは」と返す 例: 8時にgreeter.greet()を呼ぶと”おはようございます”と返す ※題材はCodeIQのものをカスタマイズしております https://codeiq.jp/ace/wada_takuto/q469 https://codeiq.jp/magazine/2013/11/1475/ ① demonstration (想定) 運用保守プロジェクト。 ユーザーから問合せの電話が。 12:00なのに「おはよう」って言われたんですけど! さて、調査して直しましょう。TDDで。
  43. 43. Agile Evening 2014 42 デモの大きな流れ 1. JUnitをつかって再現 ↓ 2. 欠陥を修正する ↓ 3. テストコードを今後も使えるものにする ① demonstration Red GreenRefactor
  44. 44. Agile Evening 2014 43 TDDどうですか? やってみませんか? Red GreenRefactor Let’s TDD !!
  45. 45. Agile Evening 2014 Thank you ! 44 To be continue… (from now on) Special thanks to. . . Mr.Masuda Mr.Sano
  46. 46. Agile Evening 2014 45 ■Agile Samurai Base Camp – 2013/12/8@渋谷マークシティ http://www.agilesamuraibasecamp.org/ ■TDD伝道師、t-wadaさん http://d.hatena.ne.jp/t-wada/ https://codeiq.jp/magazine/2013/11/1475/ http://gihyo.jp/dev/serial/01/tdd?ard=1393337028 ■参考URL(English) http://lewuathe.com/blog/2013/12/09/agile-samurai-basecamp-in-tokyo/ ■参考URL(Japanese) http://www.objectclub.jp/technicaldoc/testing/stack_tdd.pdf http://appkitbox.com/knowledge/test/2013/01/15/tdd_basic http://blog.madoro.org/mn/70 http://www.slideshare.net/youtaroutakahashi http://d.hatena.ne.jp/shuji_w6e/20111204/1323011355 TDDに関する参考資料
  47. 47. Agile Evening 2014 46 OSはWindows7 1)Java開発環境の基本、JDKをインスト http://www.kkaneko.com/rinkou/javaintro/javac.html http://www.searchman.info/java_eclipse/1010.html 2)Pathなどを設定し、コマンドプロンプトでHelloWorld!! http://note.chiebukuro.yahoo.co.jp/detail/n151046 http://www.javaroad.jp/java_basic1.htm http://mibc.blog.fc2.com/blog-entry-56.html 3)Eclipse4.3インスト&日本語化 http://www.kkaneko.com/rinkou/javaintro/eclipse.html#2 4)EclipseでHelloWorld!! http://www.searchman.info/java_eclipse/1080.html 6)EclipseでJunit(テストコード) http://www.javaroad.jp/opensource/js_eclipse9.htm ★その他★ 早わかり Junit 30分講座 デモ環境作成メモ
  48. 48. Agile Evening 2014 47 ※当資料の画像については、以下サイトからも利用させていただきました。 ■野鳥の写真素材 http://www.glumdog.com/ ■ソザイング http://sozaing.com/ ■.foto project http://free.foto.ne.jp/ その他

×