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.

20130921 カジュアルにテストしてフォーマルに検証する #toRuby

1,142 views

Published on

とちぎRuby会議05 で発表したスライドです
http://regional.rubykaigi.org/tochigi05

  • Be the first to like this

20130921 カジュアルにテストしてフォーマルに検証する #toRuby

  1. 1. カジュアルにテストして、 フォーマルに検証する 2013.9.21 toRuby 福井修@iR3 13年9月21日土曜日
  2. 2. ルビールビールビー Ruby大好き 福井修@iR3 2012 Rubykaja sendagaya.rb #七輪life Ruby関西cofounder 2009Ruby会議スタッフ &スポンサー 13年9月21日土曜日
  3. 3. 2002年KOFにて Matzを囲む 13年9月21日土曜日
  4. 4. 刻言道場「まいトレ」 http://maitore.net/ 販売管理・在庫管理システム 株式会社 iRubySystems 13年9月21日土曜日
  5. 5. 2013.8.31 関西Ruby会議05 福井修@iR3 No Ruby No Test 13年9月21日土曜日
  6. 6. Test テストから逃れられない 13 August 31 2013 13年9月21日土曜日
  7. 7. Rubyなしでは Testはできない Rubyのない テストなんて 13年9月21日土曜日
  8. 8. 結論を先に • DevOpsの開発と運用の間には     検証Verificationという場が必要    → DevVerOps • VerificationにはGherkin+Capybaraと いう検証DSLをTurnipで使うのがよさげ • Turnipでエンドツーエンド検証自動化の 波を! 13年9月21日土曜日
  9. 9. ではまず世間を鳥瞰 13年9月21日土曜日
  10. 10. Javaがメイン Rubyは1.8% 出典テストツールの導入状況/キーマンズネット http:// www.keyman.or.j p/at/dev/debug/ 30004610/ 13年9月21日土曜日
  11. 11. 「テストツール丸わかりガイド」より 13年9月21日土曜日
  12. 12. http://www.ipa.go.jp/files/000005144.pdf 13年9月21日土曜日
  13. 13. 高信頼性ソフトウェアのための開発手法ハンドブックより 13年9月21日土曜日
  14. 14. Andreas Spillner: “The W-MODEL – Strengthening the Bond Between Development and Test” STAREAST2002 13年9月21日土曜日
  15. 15. 高信頼性ソフトウェアのための開発手法ハンドブックより 13年9月21日土曜日
  16. 16. 自論      展開 13年9月21日土曜日
  17. 17. DevOps DevOpsBiz DevVerOpsBiz Verfication 13年9月21日土曜日
  18. 18. 開発 Dev 運用 Ops 検証 Ver 開発 Dev 運用 Ops 正しいということを検証するという ベリフィケーション を経て受け渡し 13年9月21日土曜日
  19. 19. ベリフィケーション 【 verfication 】 と バリデーション 【 validation 】 妥当性を確認する, 実証(する) (正しいということの)確認; 立証,検証,証明 正しいということを検証するという意味では ベリフィケーション が使われる。 13年9月21日土曜日
  20. 20. 開発 Dev 運用 Ops 検証 Ver 設計→実装→テスト ↓↑ ここを俊敏に 繰り返し やるのがAgile 回帰テスト 受け入れテスト システムテスト 経営 Biz 評価 リーン 13年9月21日土曜日
  21. 21. では「本番系で検証をする」 「テストなら開発系でやれよ」となる というのには違和感 「本番系でテストをする」 というのはどう? →とても納得感あり そうか「エンドツーエンド回帰テスト」は 「エンドツーエンド検証」 と言う方がよさげという気づき!!! 13年9月21日土曜日
  22. 22. カジュアルにテストして、 フォーマルに検証する 2013.9.21 toRuby 福井修@iR3 13年9月21日土曜日
  23. 23. 開発 Dev 運用 Ops 検証 Ver 設計→実装→テスト ↓↑ ここを俊敏に 繰り返し やるのがAgile 経営 Biz 評価 リーン フォーマル に検証 カジュアル にテスト 13年9月21日土曜日
  24. 24. 次はエンドツーエンド検証自動化へ Turnip 13年9月21日土曜日
  25. 25. エンドツーエンド検証 TurnipとCapybara 13年9月21日土曜日
  26. 26. 郡司さん編集では 大変お世話になりました。 ありがとうございました 13年9月21日土曜日
  27. 27. Turnipとは? feature ファイルと step_definitions ファイル の構成 (Gherkin 書式) を RSpec 内で実行す ることができるツール(Rspec一本化) Cucumber の面倒さである正規表現を使用し ないという改善(代わりにプレースフォルダ) 13年9月21日土曜日
  28. 28. 13年9月21日土曜日
  29. 29. gherkin書式 システムの振る舞いを記述するための自然言 語に近い書式のこと。 Business Readable DSLとも呼ばれ、ベタなテ ストコードにメタな説明 (機能・シナリオ・ス テップ) の層 (レイヤ) を付加し、プログラム の実装者でなく第三者や受け入れ者が記述し 理解できる (日本語でも記述できる) 道が開か れました。 13年9月21日土曜日
  30. 30. 検証項目列挙方式 単体テスト項目積み上げ ボトムアップアプローチ 機能仕様書から掘り下げ トップダウンアプローチ TDD/BDDの 成果物 Excelシート テスト設計 13年9月21日土曜日
  31. 31. Gerkin書式は 機能feature シナリオ ステップ の3階層 13年9月21日土曜日
  32. 32. # encoding: utf-8 # language: ja 機能: 1.画面表示確認 シナリオ: 1.トップページ確認 前提 対象ページを表示する ならば 'ようこそ 関西Ruby会議05' が表示されて いること view01.feature 13年9月21日土曜日
  33. 33. Excelテストケース .feature ファイル xx_step.rb ファイル Excelから文言を抜き出 して.featureの骨組みを 作るツールは作成可能 step.rbファイルを記述するには Capybara,Rspecのmatcherや Web操作仕様の詳細を理解し ておく必要があり習熟コストは かかる 自動化の肝は、.featureファイルとxx_step.rbファイルの作成 この2種類のファイルさえ作成すれば、ツール群で自動実行可能! ただしxx_step.rbに記述できない処理は当然実行できない 13年9月21日土曜日
  34. 34. Jenkins 検証コンテンツ Gherkin書式 RSpec Turnip xx. feature xx_steps .rb Capybara Spork Capybara- webkit Polterguist selenium systemu expect 本番サーバ ステージング サーバ エンドツーエンド検証 13年9月21日土曜日
  35. 35. demoサイト 関西Ruby会議05用Rails4 demoサイト 高速郵便番号検索 http://kanrk05.ruby.iijgio.com/zipcodes MOGOKは速い! mogokでRails4は使える! mogok無料枠美味しい!!! 13年9月21日土曜日
  36. 36. # encoding: utf-8 # language: ja 機能: 1.画面表示確認 シナリオ: 1.トップページ確認 前提 対象ページを表示する ならば 'ようこそ 関西Ruby会議05' が表示されて いること view01.feature 13年9月21日土曜日
  37. 37. # encoding: utf-8 require 'capybara/rspec' Capybara.javascript_driver = :webkit step 'kanrk05サイトにアクセスする' do Capybara.app_host = "http://kanrk05.ruby.iijgio.com/" Capybara.current_driver = :webkit end step 'トップページを表示する' do visit '/' end step '対象ページを表示する' do send 'kanrk05サイトにアクセスする' send 'トップページを表示する' end step ":hoge が表示されていること" do |hoge| expect(page).to have_content hoge end common_steps.rb 13年9月21日土曜日
  38. 38. ## encoding: utf-8 # language: ja 機能: 2.検索動作確認 @javascript シナリオ: 2.一覧確認 前提 対象ページを表示する かつ 郵便番号一覧 をクリックする ならば Zipcode が表示されていること view02.feature 13年9月21日土曜日
  39. 39. #encoding: utf-8 step '郵便番号一覧 をクリックする' do #click_link '郵便番号一覧' first(:link, '郵便番号一覧').click end view2_steps.rb 13年9月21日土曜日
  40. 40. Turnip入門のソースコード https://github.com/ir3/e2etest 13年9月21日土曜日
  41. 41. おまけ 13年9月21日土曜日
  42. 42. Rails,sinatraはWebのDSL RSpecはテストのDSL ChefはシステムアドミストレーションのDSL Fluentdはマシン間配送のDSL DSL ゴレンジャー 13年9月21日土曜日
  43. 43. Rails,sinatraはWebのDSL RSpecはテストのDSL ChefはシステムアドミストレーションのDSL Fluentdはマシン間配送のDSL ↓ VDMは仕様記述DSL Turnipは検証のDSL 今日からはDSL 7レンジャー 13年9月21日土曜日
  44. 44.  カジュアルなテストから  フォーマルな検証に 「検証自動化」もっと大事! 検証自動化にTurnipを 活用しよう!! ご清聴ありがとうございました 13年9月21日土曜日

×