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
AIエージェントによるテストフレームワーク Arbigent
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
takahirom
May 31, 2025
Programming
1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AIエージェントによるテストフレームワーク Arbigent
デモ動画が見られるリンク:
https://github.com/takahirom/arbigent
takahirom
May 31, 2025
More Decks by takahirom
See All by takahirom
AndroidアプリのAI実装をAndroidifyで学ぶ ー Google公式サンプルによる体験と実装 ー
takahirom
0
140
Google の LLM ライブラリ を Android アプリで 使うには?
takahirom
1
2.1k
Robolectric Native Graphics and Roborazzi
takahirom
1
2.3k
Androidアプリで安定して動作させ継続的に開発するために設計の原則を利用して開発した話
takahirom
3
1.4k
Android Tools & Performance
takahirom
1
1.2k
Jetpack Compose State Practices
takahirom
1
1.4k
Inside Jetpack Compose
takahirom
1
1.1k
What’s new in Android Jetpack and Tools
takahirom
0
430
ABEMAのKotlin Multiplatform
takahirom
4
6.2k
Other Decks in Programming
See All in Programming
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
0
170
RTSPクライアントを自作してみた話
simotin13
0
510
Inside Stream API
skrb
1
650
プロパティの順序で型推論が壊れる!? TypeScript6.0の修正からContext-Sensitivityの仕組みを追う
bicstone
2
1.3k
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
510
Lessons from Spec-Driven Development
simas
PRO
0
150
AI駆動開発勉強会 広島支部 第一回勉強会 AI駆動開発概要とワークショップ
hayatoshimiu
0
450
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.3k
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
150
New "Type" system on PicoRuby
pocke
1
680
Composerを使ったサプライチェーン攻撃の様子を眺めてみる #phpstudy
o0h
PRO
2
230
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
660
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
57
14k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
62
54k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
210
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
How to train your dragon (web standard)
notwaldorf
97
6.7k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
200
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
310
Paper Plane
katiecoart
PRO
1
51k
Transcript
(Arbiter-Agent) Arbigent AIエージェントによるテストフレームワーク UIテストの脆さ、AIエージェントの扱いにくさ… 感じたことはありませんか? takahirom takahirom/ arbigent
DEMO動画 https://github.com/ takahirom/arbigent
具体的な「よくある悩み」 から見ていきましょう…
UIテスト、すぐ壊れませんか? Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク 従来のUIテストの課題 UIの少しの変更 (A/Bテスト, 広告, ダイアログ, ユーザー投稿コンテンツ) ですぐ失敗…
UIの少しの変更 (A/Bテスト, 広告, ダイアログ, ユーザー投稿コンテンツ) ですぐ失敗… 要素の特定 (テキスト, ID) が変更されて落ちてしまう… 要素の特定 (テキスト, ID) が変更されて落ちてしまう… 表示要素のローディング待ちで不安定に… 表示要素のローディング待ちで不安定に… メンテナンスに追われる日々… テストがボトルネックになっていませんか? メンテナンスに追われる日々… テストがボトルネックになっていませんか?
UIテストだけでなく、 AIエージェント自体にも課題が… 5 / 20
AIエージェント、期待通りに動きますか? UIテストの脆さへの解決策として期待されるAIエージェント。しかし… UIテストの脆さへの解決策として期待されるAIエージェント。しかし… シンプルなAIエージェントの限界 複雑なタスクを与えると、意図しない動きをすることも… (例: 違うボタンを押す、関係ないアプリを開く) • テストの安定性・再現性に課題が残る場合も… •
シンプルなAIエージェントの限界 複雑なタスクを与えると、意図しない動きをすることも… (例: 違うボタンを押す、関係ないアプリを開く) • テストの安定性・再現性に課題が残る場合も… • AIの可能性は感じるけれど、そのままではうまく動かせない… Arbigent は、これらの課題解決を目指します。 AIの可能性は感じるけれど、そのままではうまく動かせない… Arbigent は、これらの課題解決を目指します。 Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク
手動テストの項目書、例えば… 前提条件 テスト項目 期待する結果 (アプリ起動済み) ログインする ホーム画面表示 ログイン済み 商品を検索する 検索結果表示
ログイン済み 先頭アイテムを開く アイテム詳細表示 ... ... ... このように、多くのテストには 前提条件 があり、 手順 を追って実行されますよね。 このように、多くのテストには 前提条件 があり、 手順 を追って実行されますよね。 では、これをAIエージェントで扱うにはどうすれば良いでしょうか? では、これをAIエージェントで扱うにはどうすれば良いでしょうか? Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク
Arbigentはこれを「シナリオ」として扱います Arbigentでは、テスト項目書の各行(前提+手順)のような単位を 「シナリオ」 として定義します 。 Arbigentでは、テスト項目書の各行(前提+手順)のような単位を 「シナリオ」 として定義します
。 複雑なタスク(例: 購入フロー全体)を、依存関係のある小さな「シナリオ」に分割します 。 複雑なタスク(例: 購入フロー全体)を、依存関係のある小さな「シナリオ」に分割します 。 シナリオ1: 「ログインする」 シナリオ2: 「商品を検索する」 (シナリオ1に依存) シナリオ3: 「カートに追加する」 (シナリオ2に依存) 大きな目標を段階的に達成させます 。 大きな目標を段階的に達成させます 。 手動テストの考え方を、AIエージェントで再現しやすくするアプローチです 。 手動テストの考え方を、AIエージェントで再現しやすくするアプローチです 。 Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク
ログイン ログイン 検索 検索 先頭アイテムを開く 先頭アイテムを開く この流れ(依存関係)を、どう賢く管理する? ? 9 /
20
依存関係があると、どう実行される? 前のスライドの図のように、YAMLファイルで依存関係を定義すると… # (YAMLファイルのイメージ) scenarios id goal : - :
: "login" "ログインする" - : : : id goal dependency "search" "商品を検索する" "login" # loginシナリオに依存 - : : : id goal dependency "open_head_item" "先頭アイテムを開く" "login" # loginシナリオに依存 Arbigentはこれを解釈し、 自動的 に以下のように実行します: 依存関係に基づき、 「ログイン」 シナリオを実行 「ログイン」完了後、 「検索」 シナリオを実行 (再度)依存関係に基づき、 「ログイン」 シナリオを実行 「ログイン」完了後、 「先頭アイテムを開く」 シナリオを実行 Arbigentはこれを解釈し、 自動的 に以下のように実行します: 依存関係に基づき、 「ログイン」 シナリオを実行 「ログイン」完了後、 「検索」 シナリオを実行 (再度)依存関係に基づき、 「ログイン」 シナリオを実行 「ログイン」完了後、 「先頭アイテムを開く」 シナリオを実行 Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク
このアプローチを、 「誰が」「どうやって」使う? 12 / 20
UIによるシナリオ作成 QAエンジニアなど、非プログラマー でも直感的なUIでテストシナリオ を設計可能。 作成したシナリオはYAMLファイルとして保存。 UIによるシナリオ作成 QAエンジニアなど、非プログラマー でも直感的なUIでテストシナリオ を設計可能。
作成したシナリオはYAMLファイルとして保存。 コード/CLIによる実行 エンジニア は保存されたYAMLファイルを使い、プログラムやCLIからテ ストを実行。 CI/CDなど既存のテストインフラへの統合が容易。 # CLIインストール (Homebrew) brew tap takahirom/homebrew-repo brew install takahirom/repo/arbigent # YAMLファイルを指定して実行 arbigent --project-file=your_project.yaml ... コード/CLIによる実行 エンジニア は保存されたYAMLファイルを使い、プログラムやCLIからテ ストを実行。 CI/CDなど既存のテストインフラへの統合が容易。 # CLIインストール (Homebrew) brew tap takahirom/homebrew-repo brew install takahirom/repo/arbigent # YAMLファイルを指定して実行 arbigent --project-file=your_project.yaml ... 役割分担しやすく、チームでの協力体制を築きやすい Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク
12 / 20 実際どうやって、 Arbigent は動く?
Arbigent: AIエージェントテストフレームワークの実装 ArbigentはAIエージェントを活用したテストフレームワークで、 画面の画像、UIツリー情報、会話履歴をAI に渡し、次のアクションを決定するサイクルを繰り返します。 Input 設定された目標・タ ス ク
設定された目標・タ ス ク 画面のスクリーン ショット 画面のスクリーン ショット UIツリー情報 UIツリー情報 会話履歴 (History) 会話履歴 (History) AIモデル処理 AIに情報送信 Goal + 画像 + history AIに情報送信 Goal + 画像 + history Output 画像のAIが認識した内 容 画像のAIが認識した内 容 AIの思考メモ AIの思考メモ 次の行動 次の行動 実行 ツール実行結果 ツール実行結果 記録 履歴に追加 履歴に追加 目標・入力データ AIモデル処理 AI出力 アクション実行 履歴・記録 Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク
では、Arbigentの 具体的な特徴を見ていきましょう。 14 / 20
まずは対応範囲 → 特徴 (1): マルチプラットフォーム対応 Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク • 幅広いデバイス・OSをサポート:
Android 幅広いAndroidデバイス と様々なバージョンに 対応 iOS iPhoneとiPadの各種モ デルに対応 Web (Chrome) Webアプリケーション のテストに対応 TV D-Padナビゲーション を含むTVアプリに対応 Maestro というテストライブラリを活用し、実現しています。 好きなデバイスでテストできる 好きなデバイスでテストできる
次にAIの効率性 → 特徴 (2): AIの理解度向上 & コスト効率化 幅広いデバイスで動くだけでなく、AI自体を賢く、効率的に使う工夫も必要です。 幅広いデバイスで動くだけでなく、AI自体を賢く、効率的に使う工夫も必要です。
AIの「目」を助ける工夫 アクセシビリティ情報がなくても、注釈付きスクリーンショットでAI の理解を支援。 複雑な画面をAIが理解しやすいように情報を構造化。 AIに渡されるプロンプト 0:View(accessibilityText=Search, bounds=...) 1:View (accessibilityText=Settings, bounds=...) 2:View(text=Android Studio & Tools, ... ) 3:View(accessibilityText=Android Studio & Tools, ...) AIに渡される注釈付きスクリーンショット Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク
次にAIの効率性 → 特徴 (2): AIの理解度向上 & コスト効率化 幅広いデバイスで動くだけでなく、AI自体を賢く、効率的に使う工夫も必要です。 幅広いデバイスで動くだけでなく、AI自体を賢く、効率的に使う工夫も必要です。
AIの「目」を助ける工夫 アクセシビリティ情報がなくても、注釈付きスクリーンショットでAI の理解を支援。 複雑な画面をAIが理解しやすいように情報を構造化。 コストを意識した設計 オープンソースでライセンス費用不要。 都合が良いAIモデルを選択し利用可能 AI結果キャッシュ: UIツリーや履歴が同一の場合、キャッシュを利用 しコスト削減 処理の最適化による不要なAI呼び出しの削減 賢く そして経済的に AIを活用することができます。 賢く そして経済的に AIを活用することができます。 Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク
AIテストで気になるのは 安定性 → 特徴 (3): 堅牢性 17 / 20
AIで気になるのは堅牢性 → 特徴 (3): テストをより確実に! AIによる画像ダブルチェック Roborazzi スクリーンショットテストライブラリ Roborazziの機能を統合し、”リストが表示されていること”などを画像でAIを使いダブルチェックし、
それをAIへフィードバックすることで、自己修正することが可能になり、テスト結果の信頼性を高めます。 前回のアクションにより画面が変化しなかったこと(スタック)を検出 & 回復 AIが操作不能になっても、それを検知して回復を試みます。エラー状態からの自動復帰機能により、テストの継続性を確保します。 AI自体の不安定さへの耐性 例えば起動中のローディングを待ってくれたりします。リトライなしでも安定動作することが多いという特性を活かし、テスト実行の効率性と 確実性を両立しています。 「AIテストって不安定そう…」という不安を軽減する機能が備えています。 「AIテストって不安定そう…」という不安を軽減する機能が備えています。 Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク
安定性に加え、 柔軟性も重要 → 特徴 (4): 高い拡張性 18 / 22
柔軟性も重要 → 特徴 (4): ニーズに合わせて進化! AIプロバイダー AIプロバイダー
OpenAI, Gemini, Azure OpenAI etc. ArbigentAi I/Fで追加可 デバイス デバイス Android, iOS, Web, TV ArbigentDevice I/Fで追加可 柔軟な設定 初期化・クリーンアップ処理を追加可能 柔軟な設定 初期化・クリーンアップ処理を追加可能 柔軟なカスタマイズ 特定の環境や要件に合わせて拡張できます。 Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク
AIに道具を与え可能性を広げる → 特徴 (5): MCPサポート
AIに道具を与え可能性を広げる → 特徴 (5): MCPサポート Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク MCP (Model
Context Protocol) サポート ArbigentがUI操作に加えて、 外部ツール や サービスとの連携 を実現し ます。 MCP (Model Context Protocol) サポート ArbigentがUI操作に加えて、 外部ツール や サービスとの連携 を実現し ます。 MCPサポートにより可能になることの例 アプリのインストールなどのセットアップ サーバーログの確認 デバッグログの取得 MCPサポートにより可能になることの例 アプリのインストールなどのセットアップ サーバーログの確認 デバッグログの取得 実現できるテストシナリオ例 「 UIを操作 → (MCP経由で) サーバーログを確認 」のような、 UI操作と外部ツール連携を組み合わせた高度なテストが可能になります。 実現できるテストシナリオ例 「 UIを操作 → (MCP経由で) サーバーログを確認 」のような、 UI操作と外部ツール連携を組み合わせた高度なテストが可能になります。
既存のテストなどと どう比較して 考えたらいいんだろう? 22 / 22
比較してみていくために - GoogleのSMURFの紹介 SMURFは従来のテストピラミッドを超えた、バランスの取れたテストスイート構築のための新しいフレーム ワークです。 5つの要素のトレードオフを考慮することで、より効果的なテスト戦略を実現します。 Speed (速度) ユニットテストは他のテストタイプより高速で、よ り頻繁に実行可能
→ 問題を早期発見 S Speed (速度) ユニットテストは他のテストタイプより高速で、よ り頻繁に実行可能 → 問題を早期発見 M Maintainability (保守性) テストのデバッグと保守にかかるコストは急速に 増加 → 自己完結性が重要 M Maintainability (保守性) テストのデバッグと保守にかかるコストは急速に 増加 → 自己完結性が重要 U Utilization (使用率) U Utilization (使用率) テストが頻繁に実行され、価値を提供する度合い → コスト対効果の最大化 R Reliability (信頼性) R Reliability (信頼性) 信頼性の高いテストは実際の問題がある場合のみ失敗 → フレーキーテスト排除 F Fidelity (忠実度) F Fidelity (忠実度) 本番環境での実際の動作をどれだけ正確に再現できるか → 現実的な検証 出典: Google Testing Blog - SMURF: Beyond the Test Pyramid (2024) SMURFを使ってArbigentをみていってみましょう
GoogleのSMURFフレームワークで5点満点で評価 → まずは強み Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク Maintainability (保守性) 4/5 • AIがUI変化に適応
• 自然言語ゴール • タスク分解 • 非エンジニアでもメンテ可 Fidelity (忠実度) 5/5 • 実環境でテスト • 動画再生確認など従来困難だったテストも可能 Maintainability (保守性) 4/5 • AIがUI変化に適応 • 自然言語ゴール • タスク分解 • 非エンジニアでもメンテ可 Maintainability (保守性) 4/5 • AIがUI変化に適応 • 自然言語ゴール • タスク分解 • 非エンジニアでもメンテ可 Fidelity (忠実度) 5/5 • 実環境でテスト • 動画再生確認など従来困難だったテストも可能 Fidelity (忠実度) 5/5 • 実環境でテスト • 動画再生確認など従来困難だったテストも可能 特に保守性と忠実度 の高さが特徴です
もちろん、良い点ばかりではありません。 現状の課題は?
SMURF評価: 課題と対策 Speed (速度) 1/5 遅い (AI連携/実機操作) 対策:
--shardで並列化して実行可能 Speed (速度) 1/5 遅い (AI連携/実機操作) 対策: --shardで並列化して実行可能 Utilization (利用率) 1/5 高コスト (デバイス+AIリソース) 対策: AI結果キャッシュすることで ある程度抑えられる 状況: AI技術の進化による改善し ていっている 4o → 4.1 (25%コスト改善など) Utilization (利用率) 1/5 高コスト (デバイス+AIリソース) 対策: AI結果キャッシュすることで ある程度抑えられる 状況: AI技術の進化による改善し ていっている 4o → 4.1 (25%コスト改善など) Reliability (信頼性) 3/5 改善機能はあるが外部要因も影響 状況: 起動してくれれば、AIが勝手 に起動待ちなどを待ってくれたり する。 外的要因: Emulatorの起動に失敗 したり、Emulatorが通信に失敗し たりなどをうまくハンドリングす る必要がある Reliability (信頼性) 3/5 改善機能はあるが外部要因も影響 状況: 起動してくれれば、AIが勝手 に起動待ちなどを待ってくれたり する。 外的要因: Emulatorの起動に失敗 したり、Emulatorが通信に失敗し たりなどをうまくハンドリングす る必要がある 速度やコストは現状の課題ですが、AI技術の進化による改善が期待されます。
Firebase アプリ テスト エージェントや Journeys for Android
Studio と比べてArbigentの特徴は?
AIエージェントテストフレームワーク比較 (1/2) 主要機能の比較(2025/05/24時点) 主要な AIエージェントテストフレームワーク の機能比較 それぞれの特徴と適用シーンを理解して、最適な選択をしましょう フレームワーク Made by
Google シナリオ 依存関係管理 シナリオ 自動作成機能 マネージド 環境 自分のCI 環境での実行 MCP 対応 Arbigent ✗ ✗ ✓ ✓ ✓ ✓ Firebase App Testing ✓ ✗ ✗ ✓ ✗ ✗ Journeys for Android Studio ✓ ✗ ✓ ✗ ✗ ✗
AIエージェントテストフレームワーク比較 (2/2) 連携・対応プラットフォームの比較(2025/05/24時点) 各フレームワークの 連携機能 と 対応プラットフォーム の比較 フレームワーク Googleログイン
連携 iOS, AndroidTV Web対応 Gemini以外の モデル Android Studio との連携 Arbigent ✗ ✓ ✓ ✗ Firebase App Testing ✓ ✗ ✗ ✗ Journeys for Android Studio ✗ ✗ ✗ ✓ まとめ Arbigent はマルチプラットフォーム対応と複数AIモデル対応で幅広い環境に対応。 FirebaseはGoogle連携、JourneysはAndroid Studio統合に特化。
では、実際にどうやって 使い始めるのでしょうか?
Arbigent 使い始め方フローチャート まずUIで試す あなたの会社で使える AIのAPIを使い UIでシナリオを作成 OpenAI Gemini Azure
など 1 まずUIで試す あなたの会社で使える AIのAPIを使い UIでシナリオを作成 OpenAI Gemini Azure など 1 1 シナリオを保存する 保存マークで yamlファイルを保存 リポジトリに格納 2 シナリオを保存する 保存マークで yamlファイルを保存 リポジトリに格納 2 2 CIで動かす GitHub Actions などのCIで yamlファイルを実行 arbigent --os=android --project-file=arbigent-project.yaml CIサンプル: https://github.com/takahirom/arbigent-sample 3 CIで動かす GitHub Actions などのCIで yamlファイルを実行 arbigent --os=android --project-file=arbigent-project.yaml CIサンプル: https://github.com/takahirom/arbigent-sample 自動的に品質を確認 3 3 Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク
まとめ & 今後の可能性 Arbigent とは 複雑なタスクをシナリオに分解し、AIエージェントテストを実践的・スケーラブル にするフレームワーク。 Arbigent
とは 複雑なタスクをシナリオに分解し、AIエージェントテストを実践的・スケーラブル にするフレームワーク。 主な特徴 高い保守性・忠実度 、ハイブリッドワークフロー、クロスプラットフォーム、高い拡張性(MCP含む)。 主な特徴 高い保守性・忠実度 、ハイブリッドワークフロー、クロスプラットフォーム、高い拡張性(MCP含む)。 現状と展望 速度・コストに課題はあるが、AI技術の進化と共に改善が期待される開発中のOSSプロジェクトです。 現状と展望 速度・コストに課題はあるが、AI技術の進化と共に改善が期待される開発中のOSSプロジェクトです。 AIエージェントテストが、より身近で強力な選択肢になる未来は近いかもしれません。 AIエージェントテストが、より身近で強力な選択肢になる未来は近いかもしれません。 Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク
ご清聴ありがとうございました Arbigent モダンアプリケーション向けAIエージェントテストフレームワーク takahirom/arbigent オープンソースプロジェクト