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
モバイルアプリ開発へE2Eテストを導入しよう
Search
asmz
July 11, 2025
0
17
モバイルアプリ開発へE2Eテストを導入しよう
Talked at 宮城アプリ開発勉強会 2025
asmz
July 11, 2025
Tweet
Share
More Decks by asmz
See All by asmz
React Native+Expoで始めるWebフロント開発
asmz
0
290
UIデザインを考える全ての人たちに捧げる Apple Human Interface Guidelinesのススメ
asmz
1
2.3k
Overview of Swift and iOS App development
asmz
0
1.2k
How to get mobile app logs using Firebase Crashlytics
asmz
0
850
OK Google, Deploy the iOS app
asmz
1
870
Cooperate with Adobe XD, Zeplin and Xcode
asmz
1
3.1k
phpconsen LT
asmz
0
740
SWWDC 39
asmz
1
240
Create voice assistant app by Dialogflow
asmz
0
840
Featured
See All Featured
How GitHub (no longer) Works
holman
314
140k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
107
19k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
Bash Introduction
62gerente
613
210k
Become a Pro
speakerdeck
PRO
29
5.4k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Making Projects Easy
brettharned
116
6.3k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
281
13k
Transcript
asmz.beer モバイルアプリ開発へ 自動E2Eテストを導入しよう – Maestro, Firebase App Testing Agent -
2025/7/11 宮城アプリ開発勉強会 2025 Akira Shimizu / asmz
asmz.beer 誰なのか? • Akira Shimizu / asmz (@_asmz) • https://asmz.beer/
• モバイルアプリエンジニア ◦ iOS / Android / React Native / 最近はFlutter • 株式会社フライヤー所属 ◦ https://www.flierinc.com/ ◦ モバイルアプリケーションG テックリード
asmz.beer flierとは • 1冊10分で本の要約が読めるサービス • 約4,000冊超の要約が読み放題 • 通勤時間などスキマ時間で知識を吸収
asmz.beer アジェンダ • E2Eテスト導入の動機付け • Maestroによる自動E2Eテスト • Firebase App Testing
Agent(AIテスト) • まとめ
asmz.beer E2Eテスト導入の動機付け
asmz.beer 現在のアプリチームの開発の流れ • 1スプリント2週間 ◦ 前半1週間:開発 ◦ 後半1週間:QA、リリース準備 Sprint N
Sprint N+1 Week N Week N+1 Week N+2 feature A feature B feature C feature D feature E QA, Release - feature A - feature B - feature C QA, Release - feature D - feature E Week N+3
asmz.beer 現在のアプリチームの開発の流れ • QA(Quality Assurance)対象 ◦ スプリント内で行ったコード変 更箇所とその周辺 差分無し アプリケーションコード全体
新規追加コード 変更コード QA対象
asmz.beer 現在のアプリチームの開発の流れ • 課題感 ◦ デグレチェックが不十分 ◦ カバーするリソース不足 差分無し アプリケーションコード全体
新規追加コード 変更コード QA対象外
asmz.beer 現在のアプリチームの開発の流れ • 対応案(今回の動機付け) ◦ E2Eテストでカバーしたい 差分無し アプリケーションコード全体 新規追加コード 変更コード
E2E対象 QA対象
asmz.beer Maestroによる自動 E2Eテスト
asmz.beer Maestroとは • https://maestro.dev/ • E2Eテストフレームワーク • iOS/Androidネイティブ、React Native、Flutterに対応
asmz.beer Maestroの特徴 • Yamlによる直感的なテストシナリオ定義 • アプリ起動 • ボトムナビゲーションのBlogタブを タップ •
リスト内で「Kotlin」から始まる要素 までスクロール • その要素をタップ • 左上のボタンを押して戻る
asmz.beer Maestroの特徴 • Flutter integration testと比較 ボイラープレートが大幅に少なく、手順のみの記述で済む
asmz.beer 実演
asmz.beer 実運用での課題 • 起動フローが複雑な場合、それを突破するシナリオを 用意するのが結構たいへん ◦ 初回起動時オンボーディング ◦ ホームへ辿り着くにはログイン必須 ◦
起動後不特定多数のポップアップ表示
asmz.beer 実運用での課題 例)起動後不特定多数の ポップアップ表示を閉じる OSによって表示が異な る場合はフロー分岐が 必要 発生しうるパターン全て で閉じるよう対処 もう少しfuzzyにやりたい気持ち...
asmz.beer Firebase App Testing Agent(AIテスト)
asmz.beer Firebase App Testing Agentとは https://firebase.google.com/docs/app-distribution/android/app-testing-agent?hl=ja • Gemini in Firebaseがベース
• 自然言語で定義したテストケースをAI Agentが理解し、 動作をシミュレートしてくれる自動テストツール • 現在プレビュー版でAndroidのみサポート
asmz.beer 自然言語によるテストケース作成 目標: テストエージェントが行う べき操作を記述 ヒント: テストエージェントの理解 を促す追加情報を提供 成功基準 :
テストエージェントがステッ プを正常に完了したか判 断する基準
asmz.beer 実行結果 テストエージェントが各ス テップでどういう動作をし たのかダイジェストで見れ る テストのフル動画や全ログは GCSに保存されており、ここの ボタンから行ける
asmz.beer これならfuzzyにやってくれるのでは ...?
asmz.beer 実験 • 「起動後不特定多数のポップアップを 表示」を再現 ◦ Firebase In-App Messageを1つ表示 ◦
モーダル表示、閉じたらアラート表示 ◦ アラート閉じたらSnackBar表示
asmz.beer 対応前テストケース • モーダル表示されると成功基準を達成できず失敗 6つの要素を見つけられ ずテスト失敗
asmz.beer テストケース編集 ここの記述を追記 モーダルやアラートがいく つ出るかは不確定なので 細かい言及はせずfuzzy に記載
asmz.beer 対応後テストケース • いい感じに突破してくれた!
asmz.beer その他使ってみて所感 • 同じテストケースでも実行の都度動きが違ったりしてまだ安定しない ◦ 公式ドキュメントにも 既知の問題として挙がっている • 1ステップでうまくいかない時はステップを分割した方が精度が上がった ◦
例) メアド・パスワードを入れてログインボタンを押し、ログイン成功させホーム画面へ遷移 する ▪ メアド・パスワードを入力 • 成功基準:メアド・パスワード欄に文字が入力されていること ▪ ログインボタンを押し、ログインを実行する • 成功基準:ローディングが消え「ホーム」という文字列が表示されていること
asmz.beer まとめ
asmz.beer まとめ • しっかりとテストケース通りの動作を保証する厳密な E2Eテストをしたい ◦ Maestroはいいぞ • 細かい挙動は置いといて、ざっと全体的な挙動確認を 自動で行いたい
◦ Firebase App Testing Agentはいいぞ
asmz.beer Enjoy, Engineering! 2025/7/11 宮城アプリ開発勉強会 2025 Akira Shimizu / asmz