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
「Magic Pod」でモバイルアプリのUIテストをもっと簡単に
Search
Nozomi Ito
February 18, 2021
Technology
360
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
「Magic Pod」で モバイルアプリのUIテストをもっと簡単に
Nozomi Ito
February 18, 2021
More Decks by Nozomi Ito
See All by Nozomi Ito
ノーコードに学ぶE2Eテスト自動化ベストプラクティス
nozomiito
0
1.1k
ノーコードE2Eテストで実現する高速開発
nozomiito
0
810
MagicPodで実現するE2Eテスト自動化
nozomiito
0
4k
MagicPod開発におけるテスト自動化とCI
nozomiito
0
900
最近のMagicPodまとめ
nozomiito
0
700
テスト自動化スタートアップがエバンジェリストを募集するワケ
nozomiito
0
380
MagicPodが取り組むテスト自動化最前線
nozomiito
0
550
ロケーターを学んでテスト自動化上級者を目指そう
nozomiito
1
9.6k
テスト自動化で起業した10年とテスト自動化普及の歴史を振り返る
nozomiito
4
2.7k
Other Decks in Technology
See All in Technology
markdown-poster Introduction
kazamori
0
120
国家プロジェクトを支える「さくらONE」 大規模LLM開発におけるGPU障害を乗り越えるクラスター運用戦略
gpuunite_official
0
280
dbt in Microsoft Fabric
ryomaru0825
0
250
ClaudeCodeでセキュリティ監視業務を半自動化_1年の運用でわかったAIに任せる設計の5つのポイント
kintotechdev
2
290
AI・HPC開発を支えるGPU環境の新しい選択肢 液冷GPUシステム「AquSys」の取り組み
gpuunite_official
0
240
AIに持続⼒を与える 判断の⻑期記憶設計
eiei114
1
710
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
5k
RapidCopy2 Matrix I/Oエンジンによるファイルコピーソフトウェアの設計と実装
kengosawa2
1
410
2027年のMetricKit
kantacky
0
180
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
6
77k
AI for Science時代を切り開く、政府の次世代HPC戦略の展望
gpuunite_official
0
250
作って理解するCoding Agent 〜フレームワークに頼らないピュア Python での実装〜
takapy
4
1.3k
Featured
See All Featured
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
290
How to build a perfect <img>
jonoalderson
1
5.9k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
210
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
220
Done Done
chrislema
186
16k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
4
490
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
470
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Transcript
ʮ.BHJD1PEʯͰ ϞόΠϧΞϓϦͷ6*ςετΛͬͱ؆୯ʹ 53*%&/5 ҏ౻
"CPVUNF • ҏ౻ !JUP@OP[PNJ • גࣜձࣾ53*%&/5$&0 • ࣗಈςετπʔϧ։ൃྺҎ্ •
ʮຊ4FMFOJVNϢʔβʔίϛϡχςΟʯӡӦ • ஶॻ
ΞδΣϯμ ϞόΠϧΞϓϦ6*ςετͷ՝ .BHJD1PEͷհ "*ͷ׆༻ ػೳհ #JUSJTFͱͷ࿈ܞ ͓͢͢Ίͷ͍ํ
.BHJD1PEͷհ "*ͷ׆༻ ػೳհ #JUSJTFͱͷ࿈ܞ ͓͢͢Ίͷ͍ํ ϞόΠϧΞϓϦ6*ςετͷ՝
खಈ6*ςετͷ՝ ϦϦʔεͷͨͼʹ ಉ͡ςετ࡞ۀͷ܁Γฦ͠ ϞόΠϧΞϓϦ6*ςετͷ՝ ༷ʑͳ04όʔδϣϯɾ ػछͰͷಈ࡞֬ೝ テスト リリース 開発 テスト
リリース 開発 テスト リリース 開発
ղܾࡦ 6*ςετͷࣗಈԽ ϦϦʔεͷͨͼʹ ಉ͡ςετ࡞ۀͷ܁Γฦ͠ ϞόΠϧΞϓϦ6*ςετͷ՝ ༷ʑͳ04όʔδϣϯ ɾػछͰͷಈ࡞֬ೝ ҰςετΛ࡞͢Εɺ ίετͰԿճ࣮ࢪͰ͖Δ
ҰςετΛ࡞͢Εɺ ৭ʑͳڥͰ࣮ߦͰ͖Δ
༷ʑͳςετࣗಈԽ ϞόΠϧΞϓϦ6*ςετͷ՝ システム全体を通しでテスト UIテストツールなどを活用 複数の部品を結合してテスト APIテストツールなどを活用 個々の関数やクラスのテスト ユニットテストツールなどを活用 E2E Test
Integration Test Unit Test
ϞόΠϧΞϓϦ6*ࣗಈςετͷ՝ ༷ʑͳٕज़τϥϒϧ ϞόΠϧΞϓϦ6*ςετͷ՝ ςετίʔυͷཧղ "QQJVN9DPEFͷఆظߋ৽ 6*มߋ࣌ͷεΫϦϓτमਖ਼
ղܾࡦ .BHJD1PE ϞόΠϧΞϓϦ6*ςετͷ՝ ͔Γ͍͢εΫϦϓτ ΤΩεύʔτʹΑΔ҆ఆԽྗ ϝϯςφϯεෆཁͷΫϥυ "*ʹΑΔࣗಈम෮
ϞόΠϧΞϓϦ6*ςετͷ՝ .BHJD1PEͷհ "*ͷ׆༻ ػೳհ #JUSJTFͱͷ࿈ܞ ͓͢͢Ίͷ͍ํ
.BHJD1PE !53*%&/5*OD • 6*ςετࣗಈԽΫϥυαʔϏε • ϞόΠϧΞϓϦ 8FCαΠτͷςετʹରԠ • ແྉϓϥϯ ༗ྉϓϥϯ
• ར༻ऀॱௐʹ૿Ճத .BHJD1PEͷհ
͝ར༻اۀ͞· .BHJD1PEͷհ NBHJDQPEDPN
ϒϩάͰऔΓ্͍͍͛ͯͨͩͯ·͢ .BHJD1PEͷհ • 6*ςετͷࣗಈԽʹ.BHJD1PEΛಋೖͨ͠ • "*ࣗಈςετπʔϧ.BHJD 1PEͰɺະܦݧऀ͕ ࣗಈςετͷຽओԽʹઓͯ͠Έͨɻ • .BHJD
1PEϞόΠϧΞϓϦςετ࣮ͷٯҾ͖ • .BHJD 1PEΛͬͯΈ·ͨ͠ • OPUFࣾͰͷ.BHJD 1PE׆༻ࣄྫ • .BHJD 1PE ׆༻ࣄྫ • ଓɾϊϋφͷςετࣗಈԽ • ඇϓϩάϥϚʔͰࣗಈςετ
ରԠڥ ςετσʔλอଘઌ .BHJD1PEͷհ ςετ࣮ߦڥ Ϋϥυ ϩʔΧϧ .BHJD1PE Ϋϥυ ֎෦ Ϋϥυ
σϞ .BHJD1PEͷհ ςετฤूը໘ .BHJD1PE Ϋϥυ
.BHJD1PEͷհ σϞ https://www.youtube.com/watch/IrK3g-0_Ypc
ϞόΠϧΞϓϦ6*ςετͷ՝ .BHJD1PEͷհ "*ͷ׆༻ ػೳհ #JUSJTFͱͷ࿈ܞ ͓͢͢Ίͷ͍ํ
"*ͷ׆༻ ຊޠͷཁૉઆ໌จΛܭࢉ ςετεΫϦϓτࣗಈम෮
ຊޠͷཁૉઆ໌จ "*ͷ׆༻ r ຊޠͷཁૉઆ໌จΛܭࢉ 要素説明⽂: AIロジックで計算 ⾃由に書き換え可能 システム(Appium)ロケータ: 要素ツリーから計算
ཁૉઆ໌จͷܭࢉʹ͍ͬͯΔใ "*ͷ׆༻ r ຊޠͷཁૉઆ໌จΛܭࢉ • 6*πϦʔใଐੑɺςΩετɺλά໊ɺʑ • 0$3 ը૾͔Βͷจࣈೝࣝ •
σΟʔϓϥʔχϯάʹΑΔମछྨೝࣝ
ࣗಈम෮ ηϧϑώʔϦϯά ͱ "*ͷ׆༻ r ςετεΫϦϓτࣗಈम෮ ςετରը໘ͷόʔδϣϯΞοϓʹ߹Θ ͤɺ "*͕ςετεΫϦϓτΛࣗಈमਖ਼
.BHJD 1PEͷࣗಈम෮ σϞ "*ͷ׆༻ r ςετεΫϦϓτࣗಈम෮ • ͱ͋ΔσϞΞϓϦͷςετέʔε •
JE͕ͳ͍ͨΊɺ෦γεςϜ໊ʹจࣈྻʮొʯΛ༻
.BHJD1PEͷࣗಈम෮ σϞ • ͋Δɺʮొʯ͕ʮ͜ͷ༰Ͱొʯʹมߋ͞Εͨ • ͜ͷΞϓϦͰςετΛ࣮ߦ͢Δͱɺςετࣦഊͯ͠͠·͏͕ "*ͷ׆༻ r ςετεΫϦϓτࣗಈम෮
"*ͷ׆༻ r ςετεΫϦϓτࣗಈम෮ .BHJD1PEͷࣗಈम෮ σϞ https://www.youtube.com/watch/WcQ9lBatJpg
• ςετ࡞࣌ͱ࣮ߦ࣌ͷ6*πϦʔΛൺֱͯ͠ɺྨࣅ͕ߴ͍ ཁૉ͕͋Εར༻ ࣗಈम෮ͷΈ "*ͷ׆༻ r ςετεΫϦϓτࣗಈम෮ テスト作成時ロケータ テスト実⾏時UI テスト作成時UI
修復後の新ロケータ
• ཁૉͷ֤छଐੑɺҐஔɺଞͷཁૉͱͷࢠؔɺʑ • 0$3݁Ռ • σΟʔϓϥʔχϯάʹΑΔମछྨೝࣝ ྨࣅൺֱͷج४ "*ͷ׆༻ r ςετεΫϦϓτࣗಈम෮
ϞόΠϧΞϓϦ6*ςετͷ՝ .BHJD1PEͷհ "*ͷ׆༻ ػೳհ #JUSJTFͱͷ࿈ܞ ͓͢͢Ίͷ͍ํ
ΫϥυγϛϡϨʔλ ػೳհ • ϩʔΧϧڥΑΓ҆ఆɾߴ • J04ɺ"OESPJEʹରԠ
Ϋϥυ࣮ػ • #SPXTFS4UBDL 4BVDF-BCT 3FNPUF5FTU,JU )FBE4QJO ͱ࿈ܞՄೳ ֎෦αʔϏεͷܖ͕ඞཁ • աڈػछ͔Β࠷৽ػछ·Ͱ๛ͳἧ͑
ػೳհ SauceLabs Remote TestKit
Ϋϩεςετ • ৭ʑͳόʔδϣϯػछͷΈ߹ΘͤͰฒྻྻ࣮ߦ ػೳհ
Ϋϩεςετ • ςετϑϩʔΛׂͯ͠ฒྻ࣮ߦ͠ɺߴԽ͢Δ͜ͱՄೳ ػೳհ
֤छૢ࡞ • ͞·͟·ͳίϚϯυΛ༻ҙ ػೳհ
֤छૢ࡞ ػೳհ 画像アップロード ピッカー操作 端末回転 スワイプ
8FC7JFXαϙʔτ • $PSEPWBΞϓϦ .POBDBΞϓϦʹରԠ ػೳհ
νΣοΫ ػೳհ • ༷ʑͳ݅ͰظνΣοΫ
݅ذ ػೳհ • ʮμΠΞϩά͕ग़ͨͱ͖͚ͩλοϓ͢ΔʯͳͲͷ༻్ʹ
ڞ༗εςοϓ ػೳհ • ܁Γฦ͠ར༻͢Δॲཧڞ௨Խ
σʔλۦಈςετ ػೳհ • ύϥϝʔλΛม͑ͯɺಉ͡ςετΛԿ࣮ߦ
ϖʔδը૾ΛෳςετͰڞ༗ ػೳհ • 6*ϨϙδτϦɺ6*ϚοϓͷΑ͏ʹ͑Δ
ϩέʔλมߋ ػೳհ • ༷ʑͳީิ͔Β͖ͳͷΛબՄೳ
ม ػೳհ • ը໘্ͷͳͲΛอଘͯ͠ޙଓॲཧʹར༻Մೳ
ڞ༗ม ػೳհ • શςετͰڞ༗͞ΕΔύϥϝʔλ
γʔΫϨοτม ػೳհ • ϩάʹग़ͨ͘͠ͳ͍ϚεΩϯά
ม ػೳհ • ʮ໌ͷΛೖྗʯͳͲͷ༻్ʹ
γεςϜม ػೳհ • ಛఆͷ04Ͱ͚ͩߦ͍͍ͨॲཧͳͲʹ
)551ϦΫΤετૹ৴ ػೳհ • %#ͷνΣοΫσʔλΫϦΞͳͲʹ
&NBJMͷςετ ػೳհ • ʮ)551ϦΫΤετૹ৴ʯͱʮਖ਼نදݱϚονʯͷΈ߹Θͤ - (NBJMʹૹ৴͞Εͨ༰ͷνΣοΫ - (NBJMʹૹ৴͞ΕͨϦϯΫΛΫϦοΫ • IUUQTXXXUSJEFOURBDPNNBHJDQPEFNBJMUFTUJOH
ςετέʔεϥϕϧ ػೳհ • ςετʹϥϕϧΛ༩Մೳ • ϥϕϧΛࢦఆ PSআ֎ ͯ͠ςετҰׅ࣮ߦՄೳ
εέδϡʔϧ࣮ߦ ػೳհ • ຊ൪ڥͷࢹͳͲʹ
ίϝϯτ ػೳհ
ίϐʔɾషΓ͚ ػೳհ
ฤूΛݩʹ͢ɾΓ͢ ػೳհ
෦ςετ࣮ߦ ػೳհ
ςετ݁Ռը໘Ωϟϓνϟμϯϩʔυ ػೳհ • ΤϏσϯεऔಘը૾ൺֱʹ
ը૾ࠩൺֱϨϙʔτ ػೳհ • ը໘ΩϟϓνϟμϯϩʔυͱSFHDMJͷΈ߹ΘͤͰ࣮ݱ • IUUQTCMPHUSJEFOURBDPNSFHDMJNBHJDQPEFF
ϝϯόʔݖݶཧ ػೳհ • ϓϩδΣΫτ୯ҐͰͷݖݶઃఆ͕Մೳ
ଓݩ*1੍ݶ ػೳհ • ΤϯλʔϓϥΠζϓϥϯͷػೳ
4".-γϯάϧαΠϯΦϯ ػೳհ • ΤϯλʔϓϥΠζϓϥϯͷػೳ
ӳޠར༻Մೳ ػೳհ • ւ֎ͰΘΕ͍ͯ·͢
ϞόΠϧΞϓϦ6*ςετͷ՝ .BHJD1PEͷհ "*ͷ׆༻ ػೳհ #JUSJTFͱͷ࿈ܞ ͓͢͢Ίͷ͍ํ
#JUSJTF͔Βͷ.BHJD 1PEςετ࣮ߦ #JUSJTFͱͷ࿈ܞ • ʮ.BHJD1PEʯεςοϓͰ(6*ઃఆՄೳ
Ϗϧυ͔Βςετ·Ͱϒϥβ্Ͱ݁ #JUSJTFͱͷ࿈ܞ Bitriseの GUIで アプリのビルド設定 Magic Podの GUIで テスト作成 Magic
Podステップの GUIで テスト実⾏設定
$*ͷྲྀΕ .BHJD1PEΫϥυ্ͷςετ #JUSJTFͱͷ࿈ܞ γϛϡϨʔλɾ ΤϛϡϨʔλ༻ͷ BQQBQLΛϏϧυ ʮ.BHJD1PEʯ εςοϓͰ ςετ࣮ߦ .BHJD1PEͷ
ΫϥυͰ ςετ࣮ߦ
$*ͷྲྀΕ ֎෦Ϋϥυ্ͷςετ #JUSJTFͱͷ࿈ܞ ࣮ػ༻ͷ JQBBQLΛϏϧυ ʮ.BHJD1PEʯ εςοϓͰ ςετ࣮ߦ 4BVDF-BCTɾ #SPXTFS4UBDLͰ
ςετ࣮ߦ
ৄ͍͠ઃఆํ๏ #JUSJTFͱͷ࿈ܞ • J04 - IUUQTCMPHUSJEFOURBDPNCJUSJTFNBHJDQPE • "OESPJE - IUUQTCMPHUSJEFOURBDPNCJUSJTFNBHJDQPEBOESPJE
ϞόΠϧΞϓϦ6*ςετͷ՝ .BHJD1PEͷհ "*ͷ׆༻ ػೳհ #JUSJTFͱͷ࿈ܞ ͓͢͢Ίͷ͍ํ
͓͢͢Ίͷ͍ํ ᶃϦϦʔεલखಈςετͷࣗಈԽ ᶄϚϧνςετ ᶅ$* ᶆຊ൪ڥࢹ ͓͢͢Ίͷ͍ํ
ᶃϦϦʔεલखಈςετͷࣗಈԽ ͓͢͢Ίͷ͍ํ • ݄ճҎ্ͷසͰςετ͢Δ߹ʹɺಛʹ༗ޮ • ͓͢͢ΊͷࣗಈԽ༏ઌॱҐ まずは正常系を カバー 運⽤してみて、 課題を洗い出す
異常系は 正常系のあと
ᶄϚϧνςετ • ʮҰׅ࣮ߦςετʯΛ͞·͟·ͳύλʔϯͰ࣮ࢪ OSバージョン iPhone/iPad 多⾔語テスト OSバージョン メーカー iOS Android
共通 ͓͢͢Ίͷ͍ํ
ᶅ$* ͓͢͢Ίͷ͍ํ • ຖ൩ςετ࣮ߦ PS։ൃςετڥΛߋ৽͢Δͨͼʹ࣮ߦ • ෆ۩߹ʹ͙͢ʹؾ͚ΔͷͰɺ։ൃ͕ޮతʹ - ͕࣌ؒܦͭͱɺࢥ͍ग़͢ͷ͕େม -
ଟͷ։ൃऀͷमਖ਼͕ೖͬͨޙͩͱɺݪҼಛఆ͕େม
ᶅ$* ͓͢͢Ίͷ͍ํ ࠷৽ιʔείʔυͰ ΞϓϦΛϏϧυ ʮ.BHJD1PEʯεςοϓͰ ςετ࣮ߦ ΫϥυͰ ςετ࣮ߦ
ᶆຊ൪ࢹ ͓͢͢Ίͷ͍ํ • ༧ظͤ͵ʹΑΓຊ൪ڥͰ͕ى͖͍ͯͳ͍͔ࢹ - ϝϞϦɺσΟεΫɺωοτϫʔΫɺαʔόμϯɺखಈ࡞ۀϛεɺFUD • ຊ൪ڥͱݕূڥͰɺσʔλɾαʔόઃఆɾΠϯϑϥ͕ҟ ͳΔͷͰɺຊ൪Ͱ͚͕ͩى͜Δ͜ͱ͋Δ
ͥͻ͝׆༻͍ͩ͘͞ʂ ᶃϦϦʔεલखಈςετͷࣗಈԽ ᶄϚϧνςετ ᶅ$* ᶆຊ൪ڥࢹ ͓͢͢Ίͷ͍ํ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ