Upgrade to Pro — share decks privately, control downloads, hide ads and more …

STFとAPPIUMを使ってテスト 工数を半分にした話

STFとAPPIUMを使ってテスト 工数を半分にした話

Minami Aoyama Night#2で発表した内容となります。

NAVITIME JAPAN
PRO

March 23, 2017
Tweet

More Decks by NAVITIME JAPAN

Other Decks in Programming

Transcript

  1. STFͱAPPIUMΛ࢖ͬͯςετ
    ޻਺Λ൒෼ʹͨ͠࿩

    View Slide

  2. ࣗݾ঺հ
    ▸ לౡ
    ▸ 2005೥ NAVITIME JAPAN ೖࣾ
    ▸ ௚ۙͷ͓࢓ࣄ
    ▸ ৐׵NAVITIMEͷAWSҠߦ
    ▸ શࣾతͳվળPJ
    ▸ झຯɿϥϯχϯάɺΰϧϑɺ໺ٿ

    View Slide

  3. NAVITIMEαʔϏεͷ͝঺հ

    View Slide

  4. τϥοΫΧʔφϏ
    ▸ ೔ຊॳʂτϥοΫ޲͚ΧʔφϏͷఏڙΛ։࢝

    View Slide

  5. NAVITIMEτϥϕϧ
    2016೥10݄ϦϦʔεʂ
    A

    View Slide

  6. NAVITIMEτϥϕϧ

    View Slide

  7. ANDROID޲͚ͷUIςετςε
    τΛࣗಈԽ͓ͨ͠࿩

    View Slide

  8. UIςετࣗಈԽͷഎܠ
    ▸ ༷ʑͳαʔϏεΛϚϧνσόΠεʹରԠ
    Android/iOS߹Θͤͯ ໿
    46 छྨͷΞϓϦΛӡ༻

    View Slide

  9. UIςετࣗಈԽͷഎܠ
    ▸ ΞϓϦϦϦʔεͷ౓ʹϦάϨογϣϯςετͷίετ͕ൃੜ
    ϦάϨογϣϯςετΛࣗಈԽ͢ΔࣄͰίετΛ࡟ݮ

    View Slide

  10. ࢝Ίʹݕ౼ͨ͜͠ͱ
    ଞࣾͷϚωʔδυαʔϏεΛར༻͢Δʁ
    ▸ AWS Device FarmɺXamarin Test CloudɺGoogle test Lab
    Λར༻͢Δʁ
    ▸ ࣗࣾͰUIςετͷ࢓૊ΈΛߏங͢Δʁ

    View Slide

  11. ϚωʔδυαʔϏεൺֱ
    AWS device farm Xamarin Test Cloud
    Google Cloud Test
    Lab
    ςετ୺຤
    iOS:192छྨ
    Android:198छྨ
    iOS:໿1245୺຤
    Android:1272୺຤
    AsusɺHTCɺLGɺ
    MotorolaɺSamsungɺ
    Sonyͷ୺຤͕ར༻Մೳ
    αϙʔτOS
    iOSɺAndroidɺFire
    OS
    iOSɺAndroid Android
    αϙʔτ͍ͯ͠Δ
    framework
    AppiumɺCalabash
    AppiumɺCalabashɺ
    Xamarin UI TestɺEspresso
    instrumentɺRoboςετ

    View Slide

  12. ॴײ
    ▸ ࠃ಺୺຤͕গͳ͍
    ▸ ςετ࣮ߦ͕࣌ؒ௕͍ʢAWS Device Farmʣ
    ▸ UIςετͷ࣮ߦ͕೉͔ͬͨ͠ʢXamarin Test Cloudʣ

    View Slide

  13. ݁Ռతʹ
    ࣗࣾͰUIςετͷ࢓૊ΈΛߏங
    ▸ ࣾ಺ʹ͋Δ༨৒୺຤Λར༻
    ▸ ࣗલͰ༻ҙ͢ΔͷͰ௿ίετ
    ͱ Λ૊Έ߹ΘͤͨγεςϜΛߏங

    View Slide

  14. APPIUMͱ͸ʁ
    ▸ εϚϗΞϓϦ޲͚ͷςετϑϨʔϜϫʔΫ
    ▸ iOS/Android྆ํʹରԠ
    ▸ ֤OSͷςετπʔϧΛϥοϓ͢ΔAPIαʔόʔɻAppium͕
    ༻ҙ͢ΔAPIΛհͯ͠γϡϛϨʔλ/࣮ػʹରͯ͠ςετ͕࣮
    ߦ͞ΕΔɻ

    View Slide

  15. APPIUMͱ͸ʁ
    APPIUM
    ΫϥΠΞϯτ
    ϥΠϒϥϦ
    ςετίʔυ
    Mobile JSON Wire Protocol
    ͰAppiumAPIΛ࣮ߦ
    UiAutomatorͷϦϞʔτσόοΫػೳ
    Λ࢖ͬͯUIςετΛ࣮ߦ

    View Slide

  16. STFͱ͸ʁ
    ▸ αΠόʔΤʔδΣϯτ͕ࣾ։ൃͨ͠πʔϧ
    ▸ ϒϥ΢β͔ΒAndroidͷ࣮ػʹରͯ͠ૢ࡞/ݕূ͢Δ͜ͱ͕
    Ͱ͖Δɻ
    ▸ ը໘Ωϟϓνϟɺ୺຤ͷϦιʔεঢ়گɺϩά৘ใࢀর΋ϒϥ
    ΢β͔ΒՄೳ
    ▸ ୺຤ͷି͠आΓָ͕ɻฆࣦϦεΫ΋ݮΔɻ

    View Slide

  17. γεςϜߏ੒
    ςετ࣮ߦ
    αʔόʔ
    RSPEC
    STFαʔόʔ
    RUBY
    ɾtestίʔυ͸rubyͰ࣮૷
    STFͷ remoteConnect APIΛհͯ͠
    औಘͨ͠ΤϯυϙΠϯτʹରͯ͠
    adb connectͰ઀ଓ
    ᶄadb connect
    ᶃremoteConnectAPI
    ɹᶅTest࣮ߦ

    View Slide

  18. ࠔͬͨࣄ
    ▸ ೔ຊޠೖྗํ๏͕෼͔Βͳ͍
    ▸ WebViewը໘ͷཁૉऔಘʹࣦഊ͢Δ
    ▸ Appium࣮ߦ؀ڥߏஙʹϋϚΔ

    View Slide

  19. ೔ຊޠೖྗํ๏͕෼͔Βͳ͍
    ▸ ΩʔϘʔυೖྗ͢Δࡍɺલճར༻͍ͯͨ͠IME͕σϑΥϧτ
    Ͱઃఆ͞ΕΔɻ

    View Slide

  20. ೔ຊޠೖྗํ๏͕෼͔Βͳ͍
    ରࡦ
    ▸ ςετ࣮ߦ͢ΔલʹGoogle೔ຊޠೖྗΛσϑΥϧτIMEʹ
    ઃఆ͢Δ͜ͱͰରԠ

    View Slide

  21. WEBVIEWը໘ͷཁૉऔಘʹࣦഊ͢Δ
    ▸ WebViewը໘ͷཁૉऔಘʹࣦഊ͢Δɻ
    WebviewͷཁૉΛૢ࡞͢ΔҝͷɺContext੾ସ͑ॲཧʹͯΤϥʔ

    View Slide

  22. WEBVIEWը໘ͷཁૉऔಘʹࣦഊ͢Δ
    ରࡦ
    ▸ ςετର৅୺຤಺ʹΠϯετʔϧ͞Ε͍ͯΔʮAndroidγε
    ςϜͷWebViewʯͷόʔδϣϯΛ࠷৽ʹ͢Δɻ
    ▸ AppiumαʔόʔʹΠϯετʔϧͨ͠chromedriverͷόʔ
    δϣϯΛ࠷৽ʹ͢Δɻ
    ▸ setWebContentsDebuggingEnabledʹtrueΛઃఆ͢Δɻ

    View Slide

  23. APPIUM࣮ߦ؀ڥߏஙʹϋϚΔ
    ▸ Appium࣮ߦ؀ڥߏஙʙsampleςετίʔυ࣮ߦ·Ͱʹগ
    ͕͔͔࣌ؒͬͨ͠ɻ
    QA୲౰͕؆୯ʹ؀ڥߏஙͰ͖ΔΑ͏ͳ࢓૊ΈΛ࡞Γ͍ͨ

    View Slide

  24. APPIUM࣮ߦ؀ڥߏஙʹϋϚΔ
    ରࡦ
    ▸ Appium࣮ߦ؀ڥΛDockerԽ͠·ͨ͠ɻ
    ▸ ࢀߟɿvbanthia/appium-docker-demo

    View Slide

  25. ̦A୲౰ऀ޲͚ ϩʔΧϧ؀ڥͷߏ੒ਤ
    APPIUMαʔόʔ
    RSPEC
    /dev/bus/usb
    RUBY
    ɾVagrant্ͷUbuntuαʔόʔͰՔಇͤͨ͞Docker಺ʹAppiumαʔόʔΛཱͯΔ

    View Slide

  26. VAGRANTΛ࢖ͬͨཧ༝
    ɾDocker for MacɺDocker for Windows͸USB FilterʹରԠ͍ͯ͠ͳ͔ͬͨɻ
    ʢίϯςφ಺͔ΒUSBσόΠεΛೝࣝͰ͖ͳ͍ʣ
    Docker toolbox
    Docker for macɺDocker for windows

    View Slide

  27. ςετ݁Ռը໘
    ▸ લճͷςετ݁Ռͱͷࠩ෼Λදࣔ

    View Slide

  28. DEMO

    View Slide

  29. ϦάϨογϣϯςετ
    ࣗಈԽʹΑΔ੒Ռ

    View Slide

  30. ੒Ռ
    ▸ खಈͰ࣮ࢪ͍ͯͨ͠ϦάϨογϣϯςετʢճؼςετʣͷ20%Λ
    ࣗಈԽͰ͖ͨɻ
    ▸ ෭࣍తͳޮՌͱͯ͠ɺςετ߲໨ͷݟ௚͠(ςετ߲໨ͷ࠷దԽ)Λ
    ߦͬͨࣄʹΑΓɺϦάϨογϣϯςετͷ޻਺͕൒෼ʹͳΓ·ͨ͠ɻ
    ▸ ҙਤ͠ͳ͍σάϨΛൃݟͰ͖Δɻ
    ▸ ো֐ݕ஌ΛૣΊΔɻ
    ▸ ྫɿձһొ࿥/ղআϑϩʔɺΞϓϦॳظॲཧ

    View Slide

  31. ӡ༻ޙʹݟ͖͑ͯͨ՝୊

    View Slide

  32. ՝୊
    ▸ ςετίʔυ࡞੒ʹ͋Δఔ౓ϓϩάϥϜεΩϧ͕ඞཁ
    ▸ ਓʹΑͬͯ͸Ϛελʔ͢Δ·Ͱ͕͔͔࣌ؒΔ
    ▸ QA୲౰ऀ͚ͩͰӡ༻Λճ͢ͷ͸೉͍͠ɻΤϯδχΞͷα
    ϙʔτ͸ඞਢ
    ▸ AndroidΞϓϦˠChromeϒϥ΢βɺAndroidΞϓϦˠଞͷ
    AndroidΞϓϦͱ͍ͬͨΞϓϦέʔγϣϯ࿈ܞ෦෼ͷςετ
    ͸AppiumͰ͸Ͱ͖ͳ͍ɻ

    View Slide

  33. ཧ૝తͳUIςετͷӡ༻ํ๏
    ▸ શͯͷૢ࡞ΛࣗಈԽ͠Α͏ͱ͠ͳ͍ɻ
    ▸ ʮมΘͬͯ͸͍͚ͳ͍ʯը໘/ॲཧʹରͯ͠ςετ͢Δͱޮ཰త
    ▸ খ͞ͳ୯ҐͰςετ͢Δɻ
    ▸ ֎෦తͳཁ݅ʹґଘ͢ΔػೳͷࣗಈԽ͸༏ઌ౓ΛԼ͛Δɻ
    ▸ NAVIIMEͰͷྫɿӡߦ৘ใػೳɺौ଺৘ใػೳ
    ▸ ৗʹςετ͕੒ޭ͢ΔΑ͏ͳ؀ڥΛҡ࣋͢Δɻ
    ▸ ݕূ؀ڥͷWEBαʔόʔ͕ෆ҆ఆ

    View Slide

  34. ࢀߟϦϯΫ
    ▸ openstf/stf
    ▸ vbanthia/appium-docker-demo
    ▸ stf-appium-example
    ▸ STFʹ઀ଓ͞Εͨ୺຤ʹappiumܦ༝Ͱςετ࣮ߦ͢Δ
    sampleίʔυ

    View Slide