AWS Community Day Hong Kong 2025 Recap

MCP と AI エージェントを活用した自動テスト

Recap Series

録画

https://www.youtube.com/watch?v=cgoFdt8ybwY&t=1296s

準備と計画

基盤:テストデータ

  • 見落とされがちですが、極めて重要です。
  • タスク管理システム(Jira など):Webhook を使用し、更新内容を Amazon S3 に保存します。
  • Swagger ドキュメント:API の仕様とパラメーターを提供します。
  • 過去のテストケース:以前のケースを検証し、再テストできるようにします。

データソースの接続

  • 従来の方法では、関係性を見つける能力に限界があります。
  • つながりを補完するため、大規模言語モデル(LLM)を導入します。
  • 例:
  • Mariana(AWS で AI を活用したクラウドコンピューティングに従事)
  • Dario(AI 企業 Entropic の共同創業者)
  • Entropic は、AWS Bedrock で利用できる一連の LLM を開発しました。

実行

AI 駆動のテストワークフロー

  • AI を活用してテストプロセスを自動化し、高度化します。
  • AI と既存のテストフレームワークを連携する方法を詳しく説明します。

レポート

包括的なレポート

  • 自動テストから有益なレポートを生成します。
  • AI を活用して、実行可能な知見や推奨事項を提供します。
  • AI による従来のテストワークフローの変革を重視します。
  • 紹介したアイデアに対するフィードバックと議論を呼びかけます。

ナレッジグラフによる関係性の把握

  • ナレッジグラフは、単純なテキスト検索では捉えられない複雑な関係性を表現します。
  • 例:Mariana(AWS でのキャリア)と Entropic(Dario が設立した AI 企業)の関係
  • ナレッジグラフは、単純な検索では見つからない隠れたつながりを明らかにします。

自動テストにおけるナレッジグラフの重要性

  • タスクとテストケースの自動生成に不可欠です。
  • データソースからエンティティを抽出し、関連する項目同士を接続します。
  • 例:
  • 要件チケット
  • API 仕様
  • 過去のテストケース

ナレッジグラフの作成

  • 従来の方法(PostgreSQL など)はウィジェットが多く、視認性が低くなります。
  • ノーコードソリューション(DynamoDB など)は非効率です。
  • グラフデータベース(AWS Neptune、Neo4j など)はより適していますが、ノード、エッジ、プロパティといった新しい概念を学ぶ必要があります。

ソリューション:Amazon Neptune Analytics

  • グラフデータベースの機能を基盤モデルおよび AWS Bedrock と組み合わせます。
  • 複雑な構文を使用せずに、情報を登録、取得できます。
  • データを可視化する見やすいグラフビューを提供します。

グラフ検索拡張(RA)

  • AI が参照ドキュメントを取得して応答を生成する手法です。
  • Graph RA は、単純なテキスト検索ではなくナレッジグラフを検索に使用します。

AI 駆動のテストパイプライン

  • ナレッジグラフの基盤上に構築します。
  • テストケースには、Gherkin 形式による振る舞い駆動開発(BDD)を使用します。
  • Gherkin のシナリオでは Given、When、Then などのキーワードを使用し、機能の初期状態、アクション、期待される結果を指定します。
  • テストケースの例:前提条件とシナリオを用いてホームページのタイトルを確認します。
  • 効果的な自動テストにはナレッジグラフが不可欠です。
  • Amazon Neptune Analytics は、グラフデータベースの管理と可視化を簡素化します。
  • Graph RA は、AI 駆動のテストケース生成と実行を強化します。

AI 駆動のテストケース生成

目標

  • AI エージェントを使用し、テストケースの網羅性と一貫性を向上させます。

AI エージェントの能力

  • テスト目標を達成するため、実行すべき最適なアクションを選択します。
  • ビジネスフローを分析し、ナレッジグラフから要件を読み取ります。

サブスクリプション管理機能

ビジネスフローの分析

  • ナレッジグラフから以下を特定します。
  • UI での支払い方法の検証
  • 支払い API の呼び出し

競合の検出

  • AI エージェントが要件の競合を検出します。
  • 旧ルール:プレミアム機能へアクセスする前に、ユーザーはメールアドレスを確認する必要があります。
  • 新ルール:体験版ユーザーはメールアドレスを確認しなくても、7 日間プレミアム機能へアクセスできます。
  • 関連するテストケースを適宜更新します。

API 詳細の検出

  • グラフ DB からエンドポイント、必須/任意パラメーター、エラーレスポンスを抽出します。
  • 記録済みデータ(サブスクリプション作成の成功、支払いの失敗など)から API の依存関係を特定します。

テストデータの生成

  • 以下を網羅するテストデータを作成します。
  • 正常系(成功するシナリオ)
  • エッジケース(境界条件)
  • エラー条件(失敗するシナリオ)

まとめ

  • AI エージェントは以下の方法でテストケース生成を強化します。
  • ビジネスフローを分析する
  • 競合を検出してテストケースを更新する
  • API の詳細と依存関係を検出する
  • 網羅的なテストデータを生成する

テストケースの改善と実行

ビジネスルールによるテストケースの改善

  • ビジネスフローの分析結果と特定したルールを使用して、シナリオを強化します。
  • 改善したシナリオをシナリオベースのテストケースに変換します。

Human-in-the-Loop による検証

  • AI は網羅的なテストケースを生成できますが、その検証には人間の専門家が必要です。
  • 人間による検証によって、エッジケースやビジネス上のコンテキストが確実に反映されます。
  • Jira のチケットシステム、API ドキュメント、過去のテストケースだけでは、すべてのシナリオを網羅できない場合があります。

Playwright による実行

  • Playwright:高速で信頼性の高いエンドツーエンドテストを実現します。
  • Playwright は Chromium、WebKit、Firefox を含む最新のレンダリングエンジンをすべてサポートします。クロスプラットフォームに対応し、Windows、Linux、macOS 上でローカルテストを実行できます。
  • テストの実行に Playwright を活用します。
  • 広く知られたオープンソースの自動テストフレームワークです。
  • ブラウザと直接通信し、効率的にテストします。
  • 複数の言語(Java、Python、C、JavaScript、TypeScript)をサポートします。
  • GitHub で 78,900 件のスターを獲得しており、強力なコミュニティの支援があります。
  • 自然言語による指示のための MCP(Model-Based Continuous Planning)をネイティブサポートします。
  • 組み込み機能:
  • 効率を高める並列実行
  • 包括的なトレーシング機能とデバッグ機能
  • スクリーンショットと動画の自動記録
  • テストプロセスを文書化し、後から検証できるようにする詳細なログ記録

まとめ

  • AI はテストケース生成を強化しますが、人間による検証が不可欠です。
  • Playwright は効率的かつ汎用性が高く、機能豊富なテスト実行環境を提供します。

AI エージェントによるテストケースの実行

タスク実行エージェント

  • 実行フェーズを担当する AI エージェントです。
  • 生成されたタスクからテストパラメーターを抽出します。
  • 後から参照できるよう、Playwright スクリプトを作成してデータベースに保存します。
  • テストを自動的に実行します。

Playwright を使用した AI 駆動テストの例

  • フロントエンドとバックエンドのテスト
  • Playwright MCP と Amazon Q Developer CLI を使用した実験
  • シンプルな E コマース Web サイトに対する 3 つのテストケース:
  • 配送情報を入力して商品を購入し、注文手続きを完了する
  • ログインして商品ページを開き、それ以上の操作は行わない
  • 商品をショッピングカートに追加し、それ以上の操作は行わない

実行後の検証

  • テストケースをデータベースに保存します。
  • 後から検証できるよう、動画記録などの機能を活用します。
  • テスターは録画された動画を確認し、期待される動作と一致していることを検証できます。

テスト実行フロー全体の振り返り

  • 3 つの AI エージェントが連携します。
  • テストケース生成エージェント
  • テストケース実行エージェント
  • レポート生成エージェント(結果と録画を取得)
  • モジュール化されたアプローチにより、柔軟性とスケーラビリティが得られます。

複数の MCP の活用

  • テストのさまざまなニーズに応じて、複数の MCP を使用します。
  • 現実的なデータを生成する MySQL MCP
  • 最近使用したテストケースを保存する Redis MCP
  • テストプロセスを簡素化します。

重要なメッセージ:シフトレフトテスト

  • 開発サイクルの早い段階で自動テストを組み込みます。
  • メリット:
  • 品質の向上
  • 効率の向上
  • コストの削減
  • 技術的負債の削減

まとめ

  • AI 駆動の自動テストは時間とコストを削減します。
  • テスターはテストケース生成ではなく、検証に集中できます。