Minami Aoyama Night#2で発表した内容となります。
STFͱAPPIUMΛͬͯςετΛʹͨ͠
View Slide
ࣗݾհ▸ לౡ▸ 2005 NAVITIME JAPAN ೖࣾ▸ ۙͷ͓ࣄ▸ NAVITIMEͷAWSҠߦ▸ શࣾతͳվળPJ▸ झຯɿϥϯχϯάɺΰϧϑɺٿ
NAVITIMEαʔϏεͷ͝հ
τϥοΫΧʔφϏ▸ ຊॳʂτϥοΫ͚ΧʔφϏͷఏڙΛ։࢝
NAVITIMEτϥϕϧ201610݄ϦϦʔεʂA
NAVITIMEτϥϕϧ
ANDROID͚ͷUIςετςετΛࣗಈԽ͓ͨ͠
UIςετࣗಈԽͷഎܠ▸ ༷ʑͳαʔϏεΛϚϧνσόΠεʹରԠAndroid/iOS߹Θͤͯ 46 छྨͷΞϓϦΛӡ༻
UIςετࣗಈԽͷഎܠ▸ ΞϓϦϦϦʔεͷʹϦάϨογϣϯςετͷίετ͕ൃੜϦάϨογϣϯςετΛࣗಈԽ͢ΔࣄͰίετΛݮ
࢝Ίʹݕ౼ͨ͜͠ͱଞࣾͷϚωʔδυαʔϏεΛར༻͢Δʁ▸ AWS Device FarmɺXamarin Test CloudɺGoogle test LabΛར༻͢Δʁ▸ ࣗࣾͰUIςετͷΈΛߏங͢Δʁ
ϚωʔδυαʔϏεൺֱAWS device farm Xamarin Test CloudGoogle Cloud TestLabςετiOS:192छྨAndroid:198छྨiOS:1245Android:1272AsusɺHTCɺLGɺMotorolaɺSamsungɺSonyͷ͕ར༻ՄೳαϙʔτOSiOSɺAndroidɺFireOSiOSɺAndroid Androidαϙʔτ͍ͯ͠ΔframeworkAppiumɺCalabashAppiumɺCalabashɺXamarin UI TestɺEspressoinstrumentɺRoboςετ
ॴײ▸ ࠃ͕গͳ͍▸ ςετ࣮ߦ͕͍࣌ؒʢAWS Device Farmʣ▸ UIςετͷ࣮ߦ͕͔ͬͨ͠ʢXamarin Test Cloudʣ
݁ՌతʹࣗࣾͰUIςετͷΈΛߏங▸ ࣾʹ͋Δ༨Λར༻▸ ࣗલͰ༻ҙ͢ΔͷͰίετͱ ΛΈ߹ΘͤͨγεςϜΛߏங
APPIUMͱʁ▸ εϚϗΞϓϦ͚ͷςετϑϨʔϜϫʔΫ▸ iOS/Android྆ํʹରԠ▸ ֤OSͷςετπʔϧΛϥοϓ͢ΔAPIαʔόʔɻAppium͕༻ҙ͢ΔAPIΛհͯ͠γϡϛϨʔλ/࣮ػʹରͯ͠ςετ͕࣮ߦ͞ΕΔɻ
APPIUMͱʁAPPIUMΫϥΠΞϯτϥΠϒϥϦςετίʔυMobile JSON Wire ProtocolͰAppiumAPIΛ࣮ߦUiAutomatorͷϦϞʔτσόοΫػೳΛͬͯUIςετΛ࣮ߦ
STFͱʁ▸ αΠόʔΤʔδΣϯτ͕ࣾ։ൃͨ͠πʔϧ▸ ϒϥβ͔ΒAndroidͷ࣮ػʹରͯ͠ૢ࡞/ݕূ͢Δ͜ͱ͕Ͱ͖Δɻ▸ ը໘ΩϟϓνϟɺͷϦιʔεঢ়گɺϩάใࢀরϒϥβ͔ΒՄೳ▸ ͷି͠आΓָ͕ɻฆࣦϦεΫݮΔɻ
γεςϜߏςετ࣮ߦαʔόʔRSPECSTFαʔόʔRUBYɾtestίʔυrubyͰ࣮STFͷ remoteConnect APIΛհͯ͠औಘͨ͠ΤϯυϙΠϯτʹରͯ͠adb connectͰଓᶄadb connectᶃremoteConnectAPIɹᶅTest࣮ߦ
ࠔͬͨࣄ▸ ຊޠೖྗํ๏͕͔Βͳ͍▸ WebViewը໘ͷཁૉऔಘʹࣦഊ͢Δ▸ Appium࣮ߦڥߏஙʹϋϚΔ
ຊޠೖྗํ๏͕͔Βͳ͍▸ ΩʔϘʔυೖྗ͢Δࡍɺલճར༻͍ͯͨ͠IME͕σϑΥϧτͰઃఆ͞ΕΔɻ
ຊޠೖྗํ๏͕͔Βͳ͍ରࡦ▸ ςετ࣮ߦ͢ΔલʹGoogleຊޠೖྗΛσϑΥϧτIMEʹઃఆ͢Δ͜ͱͰରԠ
WEBVIEWը໘ͷཁૉऔಘʹࣦഊ͢Δ▸ WebViewը໘ͷཁૉऔಘʹࣦഊ͢ΔɻWebviewͷཁૉΛૢ࡞͢ΔҝͷɺContextସ͑ॲཧʹͯΤϥʔ
WEBVIEWը໘ͷཁૉऔಘʹࣦഊ͢Δରࡦ▸ ςετରʹΠϯετʔϧ͞Ε͍ͯΔʮAndroidγεςϜͷWebViewʯͷόʔδϣϯΛ࠷৽ʹ͢Δɻ▸ AppiumαʔόʔʹΠϯετʔϧͨ͠chromedriverͷόʔδϣϯΛ࠷৽ʹ͢Δɻ▸ setWebContentsDebuggingEnabledʹtrueΛઃఆ͢Δɻ
APPIUM࣮ߦڥߏஙʹϋϚΔ▸ Appium࣮ߦڥߏஙʙsampleςετίʔυ࣮ߦ·Ͱʹগ͕͔͔࣌ؒͬͨ͠ɻQA୲͕؆୯ʹڥߏஙͰ͖ΔΑ͏ͳΈΛ࡞Γ͍ͨ
APPIUM࣮ߦڥߏஙʹϋϚΔରࡦ▸ Appium࣮ߦڥΛDockerԽ͠·ͨ͠ɻ▸ ࢀߟɿvbanthia/appium-docker-demo
̦A୲ऀ͚ ϩʔΧϧڥͷߏਤAPPIUMαʔόʔRSPEC/dev/bus/usbRUBYɾVagrant্ͷUbuntuαʔόʔͰՔಇͤͨ͞DockerʹAppiumαʔόʔΛཱͯΔ
VAGRANTΛͬͨཧ༝ɾDocker for MacɺDocker for WindowsUSB FilterʹରԠ͍ͯ͠ͳ͔ͬͨɻʢίϯςφ͔ΒUSBσόΠεΛೝࣝͰ͖ͳ͍ʣDocker toolboxDocker for macɺDocker for windows
ςετ݁Ռը໘▸ લճͷςετ݁ՌͱͷࠩΛදࣔ
DEMO
ϦάϨογϣϯςετࣗಈԽʹΑΔՌ
Ռ▸ खಈͰ࣮ࢪ͍ͯͨ͠ϦάϨογϣϯςετʢճؼςετʣͷ20%ΛࣗಈԽͰ͖ͨɻ▸ ෭࣍తͳޮՌͱͯ͠ɺςετ߲ͷݟ͠(ςετ߲ͷ࠷దԽ)ΛߦͬͨࣄʹΑΓɺϦάϨογϣϯςετͷ͕ʹͳΓ·ͨ͠ɻ▸ ҙਤ͠ͳ͍σάϨΛൃݟͰ͖Δɻ▸ োݕΛૣΊΔɻ▸ ྫɿձһొ/ղআϑϩʔɺΞϓϦॳظॲཧ
ӡ༻ޙʹݟ͖͑ͯͨ՝
՝▸ ςετίʔυ࡞ʹ͋ΔఔϓϩάϥϜεΩϧ͕ඞཁ▸ ਓʹΑͬͯϚελʔ͢Δ·Ͱ͕͔͔࣌ؒΔ▸ QA୲ऀ͚ͩͰӡ༻Λճ͢ͷ͍͠ɻΤϯδχΞͷαϙʔτඞਢ▸ AndroidΞϓϦˠChromeϒϥβɺAndroidΞϓϦˠଞͷAndroidΞϓϦͱ͍ͬͨΞϓϦέʔγϣϯ࿈ܞ෦ͷςετAppiumͰͰ͖ͳ͍ɻ
ཧతͳUIςετͷӡ༻ํ๏▸ શͯͷૢ࡞ΛࣗಈԽ͠Α͏ͱ͠ͳ͍ɻ▸ ʮมΘ͍͚ͬͯͳ͍ʯը໘/ॲཧʹରͯ͠ςετ͢Δͱޮత▸ খ͞ͳ୯ҐͰςετ͢Δɻ▸ ֎෦తͳཁ݅ʹґଘ͢ΔػೳͷࣗಈԽ༏ઌΛԼ͛Δɻ▸ NAVIIMEͰͷྫɿӡߦใػೳɺौใػೳ▸ ৗʹςετ͕ޭ͢ΔΑ͏ͳڥΛҡ࣋͢Δɻ▸ ݕূڥͷWEBαʔόʔ͕ෆ҆ఆ
ࢀߟϦϯΫ▸ openstf/stf▸ vbanthia/appium-docker-demo▸ stf-appium-example▸ STFʹଓ͞Εͨʹappiumܦ༝Ͱςετ࣮ߦ͢Δsampleίʔυ