【ITニュース解説】E2Eテストの失敗要因をAIで特定するSlack botを作った話
2025年09月18日に「Zenn」が公開したITニュース「E2Eテストの失敗要因をAIで特定するSlack botを作った話」について初心者にもわかりやすく解説しています。
ITニュース概要
E2Eテストの失敗原因をAIで自動特定するSlack bot「MagicPod Assistant」の開発事例を紹介する。E2Eテストが失敗した際、それが実際のバグか環境要因かをAIが自動分析し、チャットで通知する仕組みだ。手動での確認作業を効率化し、他のE2Eテストツールにも応用できる技術を解説する。
ITニュース解説
システム開発において、品質を確保するために様々なテストが行われる。その中でも「E2Eテスト(End-to-Endテスト)」は非常に重要なテストである。E2Eテストとは、開発されたシステムがユーザーの視点で、最初から最後まで一連の操作を正しく完了できるかを確認するテストのことだ。例えば、Webサイトであれば、ログイン、商品の検索、カートへの追加、購入手続き、ログアウトといった一連の流れが問題なく行えるかを確認する。これにより、複数の機能が連携して動く際の不具合を発見できる。
しかし、このE2Eテストには一つの大きな課題がある。それは、テストが頻繁に失敗することだ。そして、その失敗が「本当にシステムにバグがあるため」なのか、それとも「テストを実行する環境に一時的な問題があったため」なのか、すぐに判別しにくい点である。例えば、テスト中にネットワークが不安定になったり、必要なテストデータが準備できていなかったり、ユーザーインターフェース(UI)が少し変更されただけでテストが失敗してしまうケースが多々ある。毎朝、開発チームは多くのE2Eテストの結果を確認し、失敗したテストの原因を一つ一つ手動で調べているのが現状だ。この原因特定作業は時間と手間がかかり、開発者の大きな負担となるだけでなく、特定の詳しい人にしかできない「属人化」の問題も引き起こしていた。
このような課題を解決するために開発されたのが、Slack bot「MagicPod Assistant」である。このボットの目的は、E2Eテスト自動化ツールであるMagicPodで発生したテストの失敗について、その原因を自動的に分析し、具体的な情報を開発チームが日常的に利用するコミュニケーションツールであるSlackに通知することだ。これにより、開発者はテスト結果を見てすぐに、その失敗が真のバグなのか、あるいは環境要因なのかを判断できるようになる。結果として、原因特定にかかる時間を大幅に短縮し、開発者が本来のシステム開発業務に集中できる環境を作り出すことを目指している。
MagicPod Assistantの仕組みは、いくつかのステップを経て動作する。まず、MagicPod上でE2Eテストが実行され、その結果が「失敗」となった場合、MagicPodの「Webhook」という機能が作動する。Webhookとは、特定のイベント(この場合はテスト失敗)が発生した際に、あらかじめ設定されたURLに対して自動的に情報を送信する仕組みである。
MagicPodから送られた情報は、AWS(アマゾン ウェブ サービス)の「API Gateway」というサービスで受け取られる。API Gatewayは、外部からのリクエストを受け付け、それを適切な処理に振り分ける役割を果たす。このリクエストは、同じくAWSの「Lambda」というサービスに渡される。Lambdaは、サーバーを管理することなくプログラムを実行できるサービスであり、このボットの中核となる処理を実行する。
Lambda関数は、MagicPodのテスト失敗通知を受け取ると、MagicPodが提供する「API(Application Programming Interface)」を使って、さらに詳しいテスト情報を取得しに行く。取得する情報には、失敗したテストのシナリオ名、テスト実行時のログ(記録)、エラーが発生した箇所のスクリーンショットなどが含まれる。これらの詳細な情報は、原因分析の重要な手がかりとなる。
次に、取得した情報を元に、AI(特に大規模言語モデル、LLMと呼ばれる技術)を活用して原因分析を行う。具体的には、テストログの中から特徴的なエラーメッセージを抽出し、過去に蓄積されたテストの成功・失敗履歴データ(これはBigQueryというGoogle Cloudのデータウェアハウスに保存されている)と照らし合わせる。AIは、これらの情報と過去のパターンを比較することで、今回の失敗が「ネットワークの一時的な不安定さによる環境要因」なのか、「テストに必要なデータが不足していたことによるデータ要因」なのか、「システムのユーザーインターフェースが変更されたことによる影響」なのか、あるいは「システム本体のバグ」なのかを推測し、分類する。例えば、特定のネットワークエラーコードが頻繁に出ている場合は環境要因と判断し、データベースに関するエラーが出ている場合はデータ要因と判断するといった具合だ。さらに、AIは失敗の原因だけでなく、過去の類似事例から考えられる解決策を提案することも可能にする。
分析が完了すると、Lambda関数は、その分析結果を分かりやすく整形し、Slackの「API」を使って開発チームが利用するSlackチャンネルに通知を送信する。通知には、失敗したテストの概要、AIが特定した失敗原因のカテゴリ、そして考えられる解決策などが含まれるため、開発者はSlackを開くだけで、そのテスト失敗に対して次にとるべき行動をすぐに判断できる。
このようにMagicPod Assistantは、AWS Lambda、API Gateway、BigQuery、Slack API、MagicPod API、そしてPythonプログラミング言語とAI(LLM)といった様々な技術を組み合わせて構築されている。
このボットの導入により、E2Eテストの失敗原因特定にかかる時間は劇的に短縮された。これまでは数十分から数時間かかっていた作業が、数分で完了するようになる。また、原因特定が特定の個人の知識に依存していた状態から脱却し、チームの誰もが迅速に状況を理解し、適切な対応をとれるようになった。結果として、開発チームはテストの失敗に煩わされることなく、新機能の開発や既存機能の改善といった本来の業務に、より多くの時間を割くことが可能になった。これは、システム全体の品質向上と開発サイクルの高速化に大きく貢献している。
今回開発されたMagicPod Assistantの仕組みは、MagicPod以外のE2Eテストツールを利用している開発チームでも、それぞれのツールのAPIやWebhook機能を活用することで応用可能である。自動化とAIによる分析を組み合わせることで、テストの効率化と品質向上の可能性はさらに広がっていくことが期待される。