Haikara

1,298 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,298
On SlideShare
0
From Embeds
0
Number of Embeds
332
Actions
Shares
0
Downloads
1
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Haikara

  1. 1. は あ い あ か る ら す ぺ つ@jewel_x12 く
  2. 2. カップ春雨にハマっている!!!!
  3. 3. モダンなRails開発のイベントや!!!!!うおーーーーー!!!
  4. 4. モダンなRails Rails3 かなぁ?
  5. 5. DHH
  6. 6. はいからなRails開発のイベントや!!!!うおーーーーー!!!
  7. 7. どちらにしろ、自分の知識はRails2で止まっている
  8. 8. イケてるRails3アプリを 読みましょう! Fat Free CRMのRSpec辺りを読んだ!
  9. 9. Fat Free CRMhttps://github.com/fatfreecrm/fat_free_crm オープンソースな顧客関係管理プラットホーム「今読みたいRuby on Rails3アプリ 10選 」 ( http://el.jibun.atmarkit.co.jp/rails/2012/07/ruby-on-rails3--ae71.html ) から一発で動いたものを選んできた。
  10. 10. 今日の内容Fat Free CRMより Spork Simplecov fuubar factory_girl ffaker capybara
  11. 11. Ψ Spork Ψ テストの高速化• Distributed Ruby(DRb)を利用したサーバにRailsアプリを前もって読み込ませておく• RSpecやCucumberに対応• RSpec •spork rspec --bootstrap してから spork で起動• Cucumber •spork cucumber --bootstrap したら spork cuc で起動
  12. 12. % Simplecov % テストのカバレッジを見る
  13. 13. % Simplecov % テストのカバレッジを見る• RSpecやCucumberにも対応• simplecov-rcovでRCov出力ができるので、Jenkinsと連携可能• そのままSporkと使おうとすると動かないhttps://github.com/colszowka/simplecov/issues/42#issuecomment-4440284
  14. 14. = Fuubar = RSpecテストのプログレスバーテストの進 状況を確認!進まないプログレスバー!
  15. 15. ♥ FactoryGirl ♥ テスト用データを記述するFactoryGirl.define do factory :precure do name "Misumi Nagisa" cure_name "Cure Black" end factory :cure_dream, class: Precure do name "Yumehara Nozomi" cure_name "Cure Dream" endend# データを作るだけcure_black = FactoryGirl.build :precure# 保存まで行うcure_dream = FactoryGirl.create :cure_dream
  16. 16. ♥ FactoryGirl ♥ テスト用データを記述するFactoryGirl.define do factory :precure do base_name "Peach" cure_name "Cure #{base_name}" endendFactoryGirl.build(:precure, base_name:”Pine”).cure_name#=> “Cure Pine” 他の属性に依存することもできる
  17. 17. ♥ FactoryGirl ♥ テスト用データを記述する # Defines a new sequence FactoryGirl.define do sequence :email do |n| "person#{n}@example.com" end end FactoryGirl.generate :email # => "person1@example.com" FactoryGirl.generate :email # => "person2@example.com" 連続的に生成できるデータhttps://github.com/thoughtbot/factory_girl/blob/master/GETTING_STARTED.md
  18. 18. ♥ FactoryGirl ♥ テスト用データを記述する•has_manyな関係も記述できる•Spork と使う時は、factory を書き換えても反映されない•Spork.each_run で FactoryGirl.reload
  19. 19. ☁ FFaker ☁ それっぽいデータを作るrequire ffakerFaker::Name.name => "Christophe Bartell"Faker::Internet.email =>"kirsten.greenholt@corkeryfisher.info" https://github.com/EmmanuelOga/ffaker• FactoryGirl とかと組み合わせて使う• 本家の Faker より20倍早いらしい
  20. 20. ω capybara ω ブラウザをシミュレート • Rackアプリの結合テストをサポート • cucumberで使うと便利describe "the signup process", :type => :request do before :each do User.make(:email => user@example.com, :password => caplin) end it "signs me in" do within("#session") do fill_in Login, :with => user@example.com fill_in Password, :with => password end click_link Sign in endend https://github.com/jnicklas/capybara/
  21. 21. ω capybara ω ブラウザをシミュレート page.should have_selector(table tr) page.should have_selector(:xpath, //table/tr) page.should have_no_selector(:content) page.should have_xpath(//table/tr) page.should have_css(table tr.foo) page.should have_content(foo)• page オブジェクトが生成される • page.has_selector? を持っている• current_path オブジェクトも生成される• page.save_screenshot( yabai.png )
  22. 22. まとめ• 便利なのがたくさんある• 紹介したのは道具でしかなく、テストケースをどうするかが本質
  23. 23. まとめ• 便利なのがたくさんある• 紹介したのは道具でしかなく、テストケースをどうするかが本質 おじゃんでした♪
  24. 24. _人人人人人人人人人_> 突然のcucumber < ̄^Y^Y^Y^Y^Y^Y^Y^ ̄
  25. 25. 胡 Cucumber 瓜 顧客受け入れテスト とりあえずメモを貼 り付けておきます。
  26. 26. 胡 Cucumber 瓜 受け入れテスト 顧客-開発者間等と、お互いが理 解できる言葉で記述できる。 統合テストはCucumber RSpecで単体テストという感じかrails generate cucumber:install --spork --capybara --rspec
  27. 27. 胡 Cucumber 瓜 顧客受け入れテストフィーチャ、cucumberコマンド、ステップ定義の3つの部分で構成シナリオをRubyで書かれたステップ定義にマッピング
  28. 28. 胡 Cucumber 瓜 顧客受け入れテストフィーチャ ユーザの視点似たっておおまかに表現された要件誰に対するフィーチャなのか--- 在庫管理者が在庫品目を追加する--- 匿名の訪問者がブログコメントを追加する
  29. 29. 胡 Cucumber 瓜 顧客受け入れテストGherkin .feature ファイルを解釈するインタプリタ文法(キーワード)はFeature, Background, Scenario (Outline), Scenarios (Examples), Given, When,Then, And, Butフィーチャ, 背景, シナリオ, シナリオアウトライン, サンプル (例), 前提, もし, ならば,かつ, ただし多くの言語に翻訳されている。featureファイルの最初に # language: ja
  30. 30. 胡 Cucumber 瓜 顧客受け入れテストシナリオ ソフトウェアがどのような振る舞いをすべきか 一般的なシナリオから始まり、特異なケースを説明 するシナリオを追加していく
  31. 31. 胡 Cucumber 瓜 顧客受け入れテストステップ Given, When, THen, And, But のステップ キーワードで始まる行(前提, もし, ならば, か つ, ただし) これらのキーワードは振る舞いを表す「当座預金口座の残高が100ドルであるとすれば(Given)、もし70ドルを引き出せば(When)、残高は30ドルになるはずである(Then)。
  32. 32. 胡 Cucumber 瓜 顧客受け入れテストGiven(前提) シナリオにおいて事実として受け入れるもの当座預金口座の残高が100ドルであるとすれば僕が娘溺泉に落ちたとすれば女の子は誰でもプリキュアになれるとすれば
  33. 33. 胡 Cucumber 瓜 顧客受け入れテスト When(もし) シナリオにおけるイベント 15ドル引き出した 水をかぶる キュアドリームに変身する
  34. 34. 胡 Cucumber 瓜 顧客受け入れテストThen(ならば) 残高は85ドルである 女性になる プリキュアシューティングスターが使える
  35. 35. 胡 Cucumber 瓜 顧客受け入れテストタグ @ タグは関係者に開発途中のシナリオは見せない場合 やテーマを設定する場合に使うBefore等のフックもある
  36. 36. 胡 Cucumber 瓜 顧客受け入れテストWorld 各シナリオは World オブジェクトの文脈で実行さ れる/features/support/world.rb にヘルパーメソッドを持つモジュール定義等を書いておきWorld( Mod ) として World を拡張することができる
  37. 37. 胡 Cucumber 瓜 顧客受け入れテスト実物見たほうが早いわ!!! おじゃんでした♪

×