Upgrade to Pro — share decks privately, control downloads, hide ads and more …

AIエージェントによるテストフレームワーク Arbigent

AIエージェントによるテストフレームワーク Arbigent

デモ動画が見られるリンク: https://github.com/takahirom/arbigent

Avatar for takahirom

takahirom

May 31, 2025
Tweet

More Decks by takahirom

Other Decks in Programming

Transcript

  1. UIテスト、すぐ壊れませんか? Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク 従来のUIテストの課題 UIの少しの変更 (A/Bテスト, 広告, ダイアログ, ユーザー投稿コンテンツ) ですぐ失敗…

     UIの少しの変更 (A/Bテスト, 広告, ダイアログ, ユーザー投稿コンテンツ) ですぐ失敗… 要素の特定 (テキスト, ID) が変更されて落ちてしまう…  要素の特定 (テキスト, ID) が変更されて落ちてしまう… 表示要素のローディング待ちで不安定に…  表示要素のローディング待ちで不安定に… メンテナンスに追われる日々… テストがボトルネックになっていませんか?  メンテナンスに追われる日々… テストがボトルネックになっていませんか? 
  2. AIエージェント、期待通りに動きますか? UIテストの脆さへの解決策として期待されるAIエージェント。しかし… UIテストの脆さへの解決策として期待されるAIエージェント。しかし… シンプルなAIエージェントの限界 複雑なタスクを与えると、意図しない動きをすることも… (例: 違うボタンを押す、関係ないアプリを開く) • テストの安定性・再現性に課題が残る場合も… •

    シンプルなAIエージェントの限界 複雑なタスクを与えると、意図しない動きをすることも… (例: 違うボタンを押す、関係ないアプリを開く) • テストの安定性・再現性に課題が残る場合も… • AIの可能性は感じるけれど、そのままではうまく動かせない… Arbigent は、これらの課題解決を目指します。  AIの可能性は感じるけれど、そのままではうまく動かせない… Arbigent は、これらの課題解決を目指します。 Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク
  3. 手動テストの項目書、例えば… 前提条件 テスト項目 期待する結果 (アプリ起動済み) ログインする ホーム画面表示 ログイン済み 商品を検索する 検索結果表示

    ログイン済み 先頭アイテムを開く アイテム詳細表示 ... ... ... このように、多くのテストには 前提条件 があり、 手順 を追って実行されますよね。 このように、多くのテストには 前提条件 があり、 手順 を追って実行されますよね。 では、これをAIエージェントで扱うにはどうすれば良いでしょうか? では、これをAIエージェントで扱うにはどうすれば良いでしょうか? Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク
  4. Arbigentはこれを「シナリオ」として扱います  Arbigentでは、テスト項目書の各行(前提+手順)のような単位を 「シナリオ」 として定義します 。  Arbigentでは、テスト項目書の各行(前提+手順)のような単位を 「シナリオ」 として定義します

    。  複雑なタスク(例: 購入フロー全体)を、依存関係のある小さな「シナリオ」に分割します 。  複雑なタスク(例: 購入フロー全体)を、依存関係のある小さな「シナリオ」に分割します 。 シナリオ1: 「ログインする」 シナリオ2: 「商品を検索する」 (シナリオ1に依存) シナリオ3: 「カートに追加する」 (シナリオ2に依存) 大きな目標を段階的に達成させます 。  大きな目標を段階的に達成させます 。  手動テストの考え方を、AIエージェントで再現しやすくするアプローチです 。  手動テストの考え方を、AIエージェントで再現しやすくするアプローチです 。 Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク
  5. 依存関係があると、どう実行される? 前のスライドの図のように、YAMLファイルで依存関係を定義すると… # (YAMLファイルのイメージ) scenarios id goal : - :

    : "login" "ログインする" - : : : id goal dependency "search" "商品を検索する" "login" # loginシナリオに依存 - : : : id goal dependency "open_head_item" "先頭アイテムを開く" "login" # loginシナリオに依存  Arbigentはこれを解釈し、 自動的 に以下のように実行します: 依存関係に基づき、 「ログイン」 シナリオを実行 「ログイン」完了後、 「検索」 シナリオを実行 (再度)依存関係に基づき、 「ログイン」 シナリオを実行 「ログイン」完了後、 「先頭アイテムを開く」 シナリオを実行  Arbigentはこれを解釈し、 自動的 に以下のように実行します: 依存関係に基づき、 「ログイン」 シナリオを実行 「ログイン」完了後、 「検索」 シナリオを実行 (再度)依存関係に基づき、 「ログイン」 シナリオを実行 「ログイン」完了後、 「先頭アイテムを開く」 シナリオを実行 Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク
  6. 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エージェントテストフレームワーク
  7. 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エージェントテストフレームワーク
  8. まずは対応範囲 → 特徴 (1): マルチプラットフォーム対応 Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク • 幅広いデバイス・OSをサポート: 

    Android 幅広いAndroidデバイス と様々なバージョンに 対応  iOS iPhoneとiPadの各種モ デルに対応  Web (Chrome) Webアプリケーション のテストに対応  TV D-Padナビゲーション を含むTVアプリに対応   Maestro  というテストライブラリを活用し、実現しています。 好きなデバイスでテストできる 好きなデバイスでテストできる
  9. 次に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エージェントテストフレームワーク
  10. 次にAIの効率性 → 特徴 (2): AIの理解度向上 & コスト効率化 幅広いデバイスで動くだけでなく、AI自体を賢く、効率的に使う工夫も必要です。 幅広いデバイスで動くだけでなく、AI自体を賢く、効率的に使う工夫も必要です。 

    AIの「目」を助ける工夫  アクセシビリティ情報がなくても、注釈付きスクリーンショットでAI の理解を支援。  複雑な画面をAIが理解しやすいように情報を構造化。  コストを意識した設計  オープンソースでライセンス費用不要。  都合が良いAIモデルを選択し利用可能  AI結果キャッシュ: UIツリーや履歴が同一の場合、キャッシュを利用 しコスト削減 処理の最適化による不要なAI呼び出しの削減  賢く そして経済的に AIを活用することができます。  賢く そして経済的に AIを活用することができます。 Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク
  11. AIで気になるのは堅牢性 → 特徴 (3): テストをより確実に!  AIによる画像ダブルチェック Roborazzi スクリーンショットテストライブラリ Roborazziの機能を統合し、”リストが表示されていること”などを画像でAIを使いダブルチェックし、

    それをAIへフィードバックすることで、自己修正することが可能になり、テスト結果の信頼性を高めます。  前回のアクションにより画面が変化しなかったこと(スタック)を検出 & 回復 AIが操作不能になっても、それを検知して回復を試みます。エラー状態からの自動復帰機能により、テストの継続性を確保します。  AI自体の不安定さへの耐性 例えば起動中のローディングを待ってくれたりします。リトライなしでも安定動作することが多いという特性を活かし、テスト実行の効率性と 確実性を両立しています。  「AIテストって不安定そう…」という不安を軽減する機能が備えています。  「AIテストって不安定そう…」という不安を軽減する機能が備えています。 Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク
  12. 柔軟性も重要 → 特徴 (4): ニーズに合わせて進化!  AIプロバイダー   AIプロバイダー

    OpenAI, Gemini, Azure OpenAI etc.  ArbigentAi I/Fで追加可  デバイス   デバイス Android, iOS, Web, TV  ArbigentDevice I/Fで追加可  柔軟な設定 初期化・クリーンアップ処理を追加可能   柔軟な設定 初期化・クリーンアップ処理を追加可能  柔軟なカスタマイズ  特定の環境や要件に合わせて拡張できます。 Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク
  13. 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操作と外部ツール連携を組み合わせた高度なテストが可能になります。
  14. 比較してみていくために - 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をみていってみましょう
  15. 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 • 実環境でテスト • 動画再生確認など従来困難だったテストも可能  特に保守性と忠実度 の高さが特徴です
  16. 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技術の進化による改善が期待されます。
  17. AIエージェントテストフレームワーク比較 (1/2) 主要機能の比較(2025/05/24時点) 主要な AIエージェントテストフレームワーク の機能比較 それぞれの特徴と適用シーンを理解して、最適な選択をしましょう フレームワーク Made by

    Google シナリオ 依存関係管理 シナリオ 自動作成機能 マネージド 環境 自分のCI 環境での実行 MCP 対応  Arbigent ✗ ✗ ✓ ✓ ✓ ✓  Firebase App Testing ✓ ✗ ✗ ✓ ✗ ✗  Journeys for Android Studio ✓ ✗ ✓ ✗ ✗ ✗
  18. 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統合に特化。
  19. 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エージェントテストフレームワーク
  20. まとめ & 今後の可能性  Arbigent とは 複雑なタスクをシナリオに分解し、AIエージェントテストを実践的・スケーラブル にするフレームワーク。  Arbigent

    とは 複雑なタスクをシナリオに分解し、AIエージェントテストを実践的・スケーラブル にするフレームワーク。 主な特徴 高い保守性・忠実度 、ハイブリッドワークフロー、クロスプラットフォーム、高い拡張性(MCP含む)。  主な特徴 高い保守性・忠実度 、ハイブリッドワークフロー、クロスプラットフォーム、高い拡張性(MCP含む)。  現状と展望 速度・コストに課題はあるが、AI技術の進化と共に改善が期待される開発中のOSSプロジェクトです。  現状と展望 速度・コストに課題はあるが、AI技術の進化と共に改善が期待される開発中のOSSプロジェクトです。  AIエージェントテストが、より身近で強力な選択肢になる未来は近いかもしれません。  AIエージェントテストが、より身近で強力な選択肢になる未来は近いかもしれません。 Arbigent: モダンアプリケーション向けAIエージェントテストフレームワーク