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
860
ノーコードE2Eテストで実現する高速開発
nozomiito
0
620
MagicPodで実現するE2Eテスト自動化
nozomiito
0
3.1k
MagicPod開発におけるテスト自動化とCI
nozomiito
0
720
最近のMagicPodまとめ
nozomiito
0
590
テスト自動化スタートアップがエバンジェリストを募集するワケ
nozomiito
0
280
MagicPodが取り組むテスト自動化最前線
nozomiito
0
450
ロケーターを学んでテスト自動化上級者を目指そう
nozomiito
1
6.9k
テスト自動化で起業した10年とテスト自動化普及の歴史を振り返る
nozomiito
4
2.3k
Other Decks in Technology
See All in Technology
AWSを利用する上で知っておきたい名前解決の話
nagisa53
6
790
時間がないなら、つくればいい 〜数十人規模のチームが自律性を発揮するために試しているいくつかのこと〜
kakehashi
PRO
23
5.2k
TanStack Start 技術選定の裏側 / Findy-Lunch-LT-TanStack-Start
iktakahiro
0
110
RubyKaigi NOC 近況 2025
sorah
1
740
ペアーズにおける評価ドリブンな AI Agent 開発のご紹介
fukubaka0825
9
2.5k
非root化Androidスマホでも動く仮想マシンアプリを試してみた
arkw
0
120
さくらのクラウド開発の裏側
metakoma
PRO
0
460
GraphQLを活用したリアーキテクチャに対応するSLI/Oの再設計
coconala_engineer
0
210
Cursorをチョッパヤインタビューライターにチューニングする方法 / how to tuning cursor for interview write
shuzon
2
120
Azure × MCP 入門
ry0y4n
8
1.6k
AIによるコードレビューで開発体験を向上させよう!
moongift
PRO
0
420
Compose におけるパスワード自動入力とパスワード保存
tonionagauzzi
0
210
Featured
See All Featured
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
52
2.5k
Documentation Writing (for coders)
carmenintech
71
4.8k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
700
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
120
52k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Fontdeck: Realign not Redesign
paulrobertlloyd
84
5.5k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Fireside Chat
paigeccino
37
3.4k
[RailsConf 2023] Rails as a piece of cake
palkan
54
5.5k
Raft: Consensus for Rubyists
vanstee
137
6.9k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.7k
Rebuilding a faster, lazier Slack
samanthasiow
81
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 • ຊ൪ڥͱݕূڥͰɺσʔλɾαʔόઃఆɾΠϯϑϥ͕ҟ ͳΔͷͰɺຊ൪Ͱ͚͕ͩى͜Δ͜ͱ͋Δ
ͥͻ͝׆༻͍ͩ͘͞ʂ ᶃϦϦʔεલखಈςετͷࣗಈԽ ᶄϚϧνςετ ᶅ$* ᶆຊ൪ڥࢹ ͓͢͢Ίͷ͍ํ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ