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
62
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
STFとAPPIUMを使ってテスト 工数を半分にした話
Minami Aoyama Night#2で発表した内容となります。
NAVITIME JAPAN
PRO
March 23, 2017
More Decks by NAVITIME JAPAN
See All by NAVITIME JAPAN
株式会社ナビタイムジャパン 会社紹介資料2026
navitimejapan
PRO
1
2.2k
つよつよリーダーが 抜けたらどうする? 〜ナビタイムのAgile⽀援組織の変遷〜
navitimejapan
PRO
23
16k
実践ジオフェンス 効率的に開発するために
navitimejapan
PRO
3
1.1k
安全で使いやすいCarPlayアプリの 魅せ方:HIGと実例から学ぶ
navitimejapan
PRO
1
300
見えないユーザの声はログに埋もれている! ~ログから具体的なユーザの体験を数値化した事例紹介~
navitimejapan
PRO
6
3.4k
ユーザーのためなら 『デザイン』 以外にも手を伸ばせる
navitimejapan
PRO
2
2k
フツーのIT女子が、 Engineering Managerになるまで
navitimejapan
PRO
3
470
不確実性に打ち勝つOKR戦略/How to manage uncertainty with OKR strategy
navitimejapan
PRO
4
4.1k
アジャイルを小さいままで 組織に広める 二周目 / Agile Transformation in NAVITIME JAPAN iteration 2
navitimejapan
PRO
4
1.6k
Other Decks in Programming
See All in Programming
私のClaude Code活用法 (個人開発編) - PHPerKaigi mini #4(2026/08/24)
panda_program
1
210
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
460
Deep dive into the select statement (GopherCon UK)
jespino
0
170
まずはプロンプトガイドを読もう、話はそれからだ
kiakiraki
1
260
Oxlintはいいぞ(続)
yug1224
1
540
リアルな遅延を測る仕様
kota_yata
1
140
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
210
初めての模倣学習とVLA
natsutan
0
460
kubernetes コンポーネント開発入門 / 新卒N年目の勉強会&交流会!〜〇〇への誘い〜 #n_study
mazrean
0
160
XHTMLが残したもの
yosuke_furukawa
PRO
1
390
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.5k
What We Talk About When We Talk About XP
m_seki
2
350
Featured
See All Featured
sira's awesome portfolio website redesign presentation
elsirapls
0
400
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
490
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Believing is Seeing
oripsolob
1
210
Everyday Curiosity
cassininazir
0
310
Odyssey Design
rkendrick25
PRO
2
800
[RailsConf 2023] Rails as a piece of cake
palkan
59
7k
Automating Front-end Workflow
addyosmani
1369
210k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
The World Runs on Bad Software
bkeepers
PRO
72
12k
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ίʔυ