Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité

Consultez-les par la suite

1 sur 17 Publicité

Plus De Contenu Connexe

Diaporamas pour vous (20)

Les utilisateurs ont également aimé (18)

Publicité

Plus par Yoichi Toyota (20)

Publicité

Turnip

  1. 1. 株式会社エクストーン 下っ端 豊田陽一
  2. 2.   Turnip ◦  概要説明   外部テストツール   実践的なお話 ◦  Turnip + Capybara + ?   Capybara-webkit   PhantomJS + Poltergeist   Selenium WebDriver
  3. 3.   Ruby第三世代テストツール ◦  第一世代:Test::Unit ◦  第二世代:Rspec ◦  第三世代:Gherkin (Cucumber / Turnip)   作者 ◦  Jonas Nicklas さん ◦  Capybara開発者
  4. 4.   Cucumberが微妙に使われてない ◦  Rspecと完全に別系統のテストとして存 在している ◦  ステップファイル書くのが大変   正規表現の箇所とか特に ◦  関連する技術大杉   CapybaraとかSeleniumとか、なんとかJSと か、どれがなにやってるのかさっぱり分からん   この部分は別にTurnipでも解決しないですw
  5. 5.   ステップ記述に正規表現を使わない   RSpec内で実行可能
  6. 6. Cucumber Turnip When(/^"([^"]*)"ページを表示する$/ do |page| visit path_to page end When /^"([^"]*)"に"([^"]*)"と入力する$/ do |field, value| fills_in(field, :with => value) end When /^"([^"]*)"ボタンをクリックする$/ do |button| click_button(button) end Then /^"([^"]*)"と表示されていること$/ do |text| response.body.should =~ /#{Regexp.escape(text)}/m end step “:page を表示する” do |page| visit path_to page end step “:field に :value と入力する” do |field, value| fills_in(field, :with => value) end step “:button ボタンをクリックする” do |button| click_button(button) end step :text と表示されていること” do |text| response.body.should =~ /#{Regexp.escape(text)}/m end
  7. 7.   ブラウザテスト ◦  Turnip   テストを記述するためのライブラリ ◦  Capybara   Webブラウザを操作するためのライブラリ   クリックする、特定の要素を取得する、etc.   ドライバによって、操作対象のブラウザを選ぶ
  8. 8.   Capybaraのドライバ ◦  Capybara-webkit   Rubyから操作可能なヘッドレスなWebkit   Capybaraのドライバ ◦  Poltergeist   PhantomJSを叩くためのドライバ ◦  Selenium WebDriver   Seleniumサーバを叩くためのドライバ   Selenium経由で実際のブラウザを叩くことが 出来る
  9. 9.   以下の構成で実現可能 ◦  Turnip + Capybara + Selenium ◦  Android上で動作するSeleniumサーバ   http://code.google.com/p/selenium/wiki/ AndroidDrive ◦  adb   Android上のSeleniumサーバにテストサー バーへのリクエストをフォワードする
  10. 10.   テストしたい実機にインストールする ◦  エミュレータでも問題なし ◦  手順   http://code.google.com/p/selenium/wiki/ AndroidDriver   上記サイトの Install th WebDriver APK に書 いてある ◦  http://localhost:8080/を叩いて何かし ら表示されたら準備完了
  11. 11.   Capybara Driverの定義 ◦  spec_helper.rbあたりに書くと良さげ Capybara.register_driver :remote_android do |app| caps = Selenium::WebDriver::Remote::Capabilities.chrome url = "http://localhost:8080/wd/hub" opts = { desired_capabilities: caps, browser: :remote, url: url } Capybara::Selenium::Driver.new(app, opts) end NFC.pptx
  12. 12. 機能: 登録関連(スマートフォン版) 背景: 前提 Android(実機)で接続 シナリオ: ログイン前にトップページを表示 もし "/" を表示する ならば "smartphone/トップページ(未ログイン)" にス ナップショットを保存 シナリオ: ログイン 前提 "/" を表示する もし "マイページ" をクリックする ならば "/login" へ遷移する ならば "smartphone/ログイン" にスナップショットを保存
  13. 13. step "Android(実機)で接続" do Capybara.default_driver = :remote_android end step ":path を表示する" do |path| visit path end step ":name にスナップショットを保存" do |name| page.save_screenshot( File.expand_path("../../../snapshot/#{name}.png", __FILE__) ) end step ":next_page へ遷移する" do |next_page| page.html.should match /#{next_page}/ end
  14. 14. $ bundle exec rspec
  15. 15.   Android実機側へのポートフォワード ◦  127.0.0.1:8080 -> (Android):8080 ◦  外部から叩けない   (テストサーバ) -> (Androidエミュレータホス ト) -> (Androidエミュレータ)が出来ない   実際にIPアドレスを付与してある実機とかなら 直接叩けば出来るかも(まだ試してない)
  16. 16.   Capybaraのドライバによって出来る ことが違う Poltergeistでテスト動作確認 ↓ Seleniumで実機テストする ↓ (́・ω・`) ショボーン ◦  慣れましょう
  17. 17.   実機の自動テストが出来た ◦  Turnipあんまり関係ないw   それはそれとしてTurnip書きやすい ◦  自動テストの環境を整えるきっかけには なった ◦  Capybaraが2.0になって進化してた   要素のマッチングは厳密にしないとエラーが出 るようになった   要素の名前付けを意識する良い機会になるかも

×