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
320
「Magic Pod」で モバイルアプリのUIテストをもっと簡単に
Nozomi Ito
February 18, 2021
Tweet
Share
More Decks by Nozomi Ito
See All by Nozomi Ito
ノーコードに学ぶE2Eテスト自動化ベストプラクティス
nozomiito
0
830
ノーコードE2Eテストで実現する高速開発
nozomiito
0
610
MagicPodで実現するE2Eテスト自動化
nozomiito
0
2.9k
MagicPod開発におけるテスト自動化とCI
nozomiito
0
710
最近のMagicPodまとめ
nozomiito
0
570
テスト自動化スタートアップがエバンジェリストを募集するワケ
nozomiito
0
270
MagicPodが取り組むテスト自動化最前線
nozomiito
0
440
ロケーターを学んでテスト自動化上級者を目指そう
nozomiito
1
6.6k
テスト自動化で起業した10年とテスト自動化普及の歴史を振り返る
nozomiito
4
2.2k
Other Decks in Technology
See All in Technology
モジュラーモノリスでスケーラブルなシステムを作る - BASE のリアーキテクチャのいま
panda_program
7
2k
Amazon GuardDuty Malware Protection for Amazon S3を使おう
ryder472
2
100
年末調整プロダクトの内部品質改善活動について
kaomi_wombat
0
210
頻繁リリース × 高品質 = 無理ゲー? いや、できます!/20250306 Shoki Hyo
shift_evolve
0
150
Compose MultiplatformにおけるiOSネイティブ実装のベストプラクティス
enomotok
1
210
20250328_OpenAI製DeepResearchは既に一種のAGIだと思う話
doradora09
PRO
0
150
OPENLOGI Company Profile for engineer
hr01
1
22k
セマンティックレイヤー入門
ikkimiyazaki
8
3.2k
DevinはクラウドエンジニアAIになれるのか!? 実践的なガードレール設計/devin-can-become-a-cloud-engineer-ai-practical-guardrail-design
tomoki10
3
1.3k
銀行でDevOpsを進める理由と実践例 / 20250317 Masaki Iwama
shift_evolve
1
110
Explainable Software Engineering in the Public Sector
avandeursen
0
360
AWS のポリシー言語 Cedar を活用した高速かつスケーラブルな認可技術の探求 #phperkaigi / PHPerKaigi 2025
ytaka23
7
1.5k
Featured
See All Featured
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Docker and Python
trallard
44
3.3k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Mobile First: as difficult as doing things right
swwweet
223
9.5k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
28
1.6k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
4
470
Practical Orchestrator
shlominoach
187
10k
A Philosophy of Restraint
colly
203
16k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
51
2.4k
How to train your dragon (web standard)
notwaldorf
91
5.9k
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 • ຊ൪ڥͱݕূڥͰɺσʔλɾαʔόઃఆɾΠϯϑϥ͕ҟ ͳΔͷͰɺຊ൪Ͱ͚͕ͩى͜Δ͜ͱ͋Δ
ͥͻ͝׆༻͍ͩ͘͞ʂ ᶃϦϦʔεલखಈςετͷࣗಈԽ ᶄϚϧνςετ ᶅ$* ᶆຊ൪ڥࢹ ͓͢͢Ίͷ͍ํ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ