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
0
330
「Magic Pod」で モバイルアプリのUIテストをもっと簡単に
Nozomi Ito
February 18, 2021
Tweet
Share
More Decks by Nozomi Ito
See All by Nozomi Ito
ノーコードに学ぶE2Eテスト自動化ベストプラクティス
nozomiito
0
950
ノーコードE2Eテストで実現する高速開発
nozomiito
0
670
MagicPodで実現するE2Eテスト自動化
nozomiito
0
3.5k
MagicPod開発におけるテスト自動化とCI
nozomiito
0
790
最近のMagicPodまとめ
nozomiito
0
630
テスト自動化スタートアップがエバンジェリストを募集するワケ
nozomiito
0
310
MagicPodが取り組むテスト自動化最前線
nozomiito
0
490
ロケーターを学んでテスト自動化上級者を目指そう
nozomiito
1
8k
テスト自動化で起業した10年とテスト自動化普及の歴史を振り返る
nozomiito
4
2.4k
Other Decks in Technology
See All in Technology
GopherCon Tour 概略
logica0419
2
160
バイブコーディングと継続的デプロイメント
nwiizo
2
380
GC25 Recap+: Advancing Go Garbage Collection with Green Tea
logica0419
1
350
about #74462 go/token#FileSet
tomtwinkle
1
270
神回のメカニズムと再現方法/Mechanisms and Playbook for Kamikai scrumat2025
moriyuya
4
300
What is BigQuery?
aizack_harks
0
120
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
11
77k
「技術負債にならない・間違えない」 権限管理の設計と実装
naro143
35
10k
OpenAI gpt-oss ファインチューニング入門
kmotohas
2
850
"複雑なデータ処理 × 静的サイト" を両立させる、楽をするRails運用 / A low-effort Rails workflow that combines “Complex Data Processing × Static Sites”
hogelog
3
1.7k
業務自動化プラットフォーム Google Agentspace に入門してみる #devio2025
maroon1st
0
180
KAGのLT会 #8 - 東京リージョンでGAしたAmazon Q in QuickSightを使って、報告用の資料を作ってみた
0air
0
190
Featured
See All Featured
Into the Great Unknown - MozCon
thekraken
40
2.1k
KATA
mclloyd
32
14k
GraphQLの誤解/rethinking-graphql
sonatard
72
11k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.1k
Automating Front-end Workflow
addyosmani
1371
200k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
RailsConf 2023
tenderlove
30
1.2k
Done Done
chrislema
185
16k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Facilitating Awesome Meetings
lara
56
6.6k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
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 • ຊ൪ڥͱݕূڥͰɺσʔλɾαʔόઃఆɾΠϯϑϥ͕ҟ ͳΔͷͰɺຊ൪Ͱ͚͕ͩى͜Δ͜ͱ͋Δ
ͥͻ͝׆༻͍ͩ͘͞ʂ ᶃϦϦʔεલखಈςετͷࣗಈԽ ᶄϚϧνςετ ᶅ$* ᶆຊ൪ڥࢹ ͓͢͢Ίͷ͍ํ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ