Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
STFとAPPIUMを使ってテスト 工数を半分にした話
Search
NAVITIME JAPAN
PRO
March 23, 2017
Programming
0
46
STFとAPPIUMを使ってテスト 工数を半分にした話
Minami Aoyama Night#2で発表した内容となります。
NAVITIME JAPAN
PRO
March 23, 2017
Tweet
Share
More Decks by NAVITIME JAPAN
See All by NAVITIME JAPAN
つよつよリーダーが 抜けたらどうする? 〜ナビタイムのAgile⽀援組織の変遷〜
navitimejapan
PRO
23
15k
実践ジオフェンス 効率的に開発するために
navitimejapan
PRO
3
710
安全で使いやすいCarPlayアプリの 魅せ方:HIGと実例から学ぶ
navitimejapan
PRO
1
240
見えないユーザの声はログに埋もれている! ~ログから具体的なユーザの体験を数値化した事例紹介~
navitimejapan
PRO
6
3k
ユーザーのためなら 『デザイン』 以外にも手を伸ばせる
navitimejapan
PRO
2
1.6k
フツーのIT女子が、 Engineering Managerになるまで
navitimejapan
PRO
3
360
不確実性に打ち勝つOKR戦略/How to manage uncertainty with OKR strategy
navitimejapan
PRO
4
3.6k
アジャイルを小さいままで 組織に広める 二周目 / Agile Transformation in NAVITIME JAPAN iteration 2
navitimejapan
PRO
4
1.3k
変更障害率0%よりも「継続的な学習と実験」を価値とする 〜障害を「起こってはならないもの」としていた組織がDirtの実施に至るまで〜 / DevOps Transformation in NAVITIME JAPAN
navitimejapan
PRO
7
5.6k
Other Decks in Programming
See All in Programming
Kiroで始めるAI-DLC
kaonash
2
570
Go言語での実装を通して学ぶLLMファインチューニングの仕組み / fukuokago22-llm-peft
monochromegane
0
120
AIと私たちの学習の変化を考える - Claude Codeの学習モードを例に
azukiazusa1
2
900
モバイルアプリからWebへの横展開を加速した話_Claude_Code_実践術.pdf
kazuyasakamoto
0
310
Processing Gem ベースの、2D レトロゲームエンジンの開発
tokujiros
2
120
Swift Updates - Learn Languages 2025
koher
2
460
ファインディ株式会社におけるMCP活用とサービス開発
starfish719
0
230
テストカバレッジ100%を10年続けて得られた学びと品質
mottyzzz
2
490
ぬるぬる動かせ! Riveでアニメーション実装🐾
kno3a87
1
130
機能追加とリーダー業務の類似性
rinchoku
2
1.1k
HTMLの品質ってなんだっけ? “HTMLクライテリア”の設計と実践
unachang113
4
2.4k
奥深くて厄介な「改行」と仲良くなる20分
oguemon
1
460
Featured
See All Featured
Optimizing for Happiness
mojombo
379
70k
Become a Pro
speakerdeck
PRO
29
5.5k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3.1k
The Art of Programming - Codeland 2020
erikaheidi
55
13k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Rails Girls Zürich Keynote
gr2m
95
14k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Side Projects
sachag
455
43k
Making Projects Easy
brettharned
117
6.4k
Transcript
STFͱAPPIUMΛͬͯςετ Λʹͨ͠
ࣗݾհ ▸ לౡ ▸ 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 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ςετ
ॴײ ▸ ࠃ͕গͳ͍ ▸ ςετ࣮ߦ͕͍࣌ؒʢ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ͷ࣮ػʹରͯ͠ૢ࡞/ݕূ͢Δ͜ͱ͕ Ͱ͖Δɻ ▸ ը໘ΩϟϓνϟɺͷϦιʔεঢ়گɺϩάใࢀরϒϥ β͔ΒՄೳ ▸
ͷି͠आΓָ͕ɻฆࣦϦεΫݮΔɻ
γεςϜߏ ςετ࣮ߦ αʔόʔ RSPEC STFαʔόʔ 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/usb RUBY ɾVagrant্ͷUbuntuαʔόʔͰՔಇͤͨ͞DockerʹAppiumαʔόʔΛཱͯΔ
VAGRANTΛͬͨཧ༝ ɾDocker for MacɺDocker for WindowsUSB FilterʹରԠ͍ͯ͠ͳ͔ͬͨɻ ʢίϯςφ͔ΒUSBσόΠεΛೝࣝͰ͖ͳ͍ʣ Docker toolbox
Docker 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ίʔυ