AIで開発する

MetaのJiTTests、LLMを活用してコード統合前のバグ検出を実現

MetaはJust-in-Time Tests(JiTTests)を本番環境に導入し、LLMを用いて実行可能なテストを生成することで、2026年初頭に深刻なプライバシー関連バグ74件を検出しました。

回路層を持つガラスの立方体の隣に、メモ用紙と拡大鏡が置かれている画像。
この記事用に生成されたイラスト

英語の原文から自動翻訳されました。

Metaは、研究段階にあったJust-in-Time Tests(JiTTests)を完全な本番インフラストラクチャへと移行させました。このシステムは大規模言語モデル(LLM)を使用し、コード変更がマージされる前にバグを特定する実行可能なテストを生成します。今回の展開は、重大なリグレッションをより早期に捉えるとともに、エンジニアのレビュー負担を軽減することを目的としています。

何が起きたか

過去1年間、Metaの研究チームはLLMを用いてソフトウェアバグをリアルタイムで検出する方法を模索してきました。彼らは、従来のテストで見逃されがちな問題をAIが生成したテストで検出する新たなアプローチとして「JiTTests」を導入しました。この取り組みを発表してから5ヶ月間、チームはこの手法がMetaの大規模なコードベース全体に拡張可能でありながら、開発速度を低下させないかどうかの検証に注力しました。

その結果、JiTTestsは現在、Metaのエンジニアリングワークフローにおいて不可欠な一部となっています。このシステムにより、エンジニアは以前の試作版と比較して、計算負荷を抑えつつ、誤検知率を下げてより多くのバグを検出できるようになりました。テスト工程を左側(早期段階)へシフトさせることで、プラットフォームはリスクを能動的に特定し、コードがユーザーに影響を与える前にチームが効果的に対応できるようにしています。

この移行は、実験的なAIツールから信頼性の高いインフラストラクチャへの転換を示すものです。チームは「Just-in-Time Catching Test Generation at Meta」と題した論文を発表し、初期展開の詳細を公開しました。目標は、絶えず進化し続ける数億行規模のコードを処理し、従来のテスト手法が現代のソフトウェアデリバリーのスピードに追いつけるようにすることでした。

仕組み

JiTTestsは、標準的なAIコードレビュアーとは根本的に異なります。一般的なエージェント型AIが人間のレビュアーと同様に過去の経験に基づいてコードをレビューするのに対し、JiTTestsは実行可能なテストを生成します。これらのテストは、コード変更によって生じる具体的な挙動の違いを実証します。この手法にはより多くの計算ステップが必要ですが、セマンティックレビューでは見落としがちな特定のクラスのバグを検出できます。

システムは2つの連動するワークフローで動作します。「意図認識(intent-aware)」ワークフローは、コード変更の目的を推測し、潜在的なリスクを特定します。その後、仮想的なバグである「ミュータント」を構築し、それらを排除するためのテストを生成します。「疑わしい差分(dodgy diff)」ワークフローは、すべての変更をバグであるとみなし、意図についての推論を行わずに挙動の違いを露呈させるテストを生成します。両方のワークフローは、さらなる検証が必要な潜在的な失敗である「弱い検出(weak catches)」を生み出します。

これらの「弱い検出」をフィルタリングするため、Metaは「LLM-as-Judge」と呼ばれるアンサンブル手法を使用します。複数の最先端LLMが、テストコード、実行トレース、および差分自体をレビューし、結果を真陽性または偽陽性として分類します。これには、決定論的な判断を提供するルールベースの評価器「RubFake」も補完的に使用されます。この組み合わせにより、人間のエンジニアが関与する前に高い精度が保証されます。

主要な詳細

  • JiTTestsは、Diff Risk Scoreメカニズムを使用してリスクが高いと判断された差分に対してテストを生成・実行しました。
  • システムは2026年前半に、本番環境に到達する前に深刻なプライバシーバグ74件を検出しました。
  • エンジニアは、JiTTestsによって提示された指摘事項について60%の真陽性率を報告しました。
  • このアプローチにより、同期間中のプライバシー重大度インシデントの発生率が20%減少しました。
  • 連絡を受けたエンジニアのうち64%にあたる589名が、JiTTestsの結果に関与しました。
  • ワークフローは「人間がループに参加する(human-on-the-loop)」モデルを採用しており、エンジニアは個々のテストケースではなく、集約された結果をレビューします。

なぜ重要なのか

大規模なソフトウェアを開発するチームにとって、デプロイの速度はしばしば徹底した手動テストの能力を上回ります。JiTTestsは、静的解析や従来の単体テストでは見逃される可能性のあるリグレッションを検出できる追加の安全層をAIが提供できることを実証しています。失敗の実証となる実行可能なテストの生成を自動化することで、組織は開発者の生産性を犠牲にすることなく、組織的なリスクを低減できます。

「人間がループに参加する」設計は、エンジニアリングリーダーにとって特に重要です。開発者にAI生成テストのすべてをレビューさせる代わりに、システムはノイズをフィルタリングし、確信度の高い指摘のみをエスカレーションします。これにより摩擦が減少し、人間の専門知識が誤警報のデバッグではなく、挙動の変更を確認するために活用されるようになります。これにより、AI支援テストは社会的にも技術的にもスケーラブルになります。

さらに、JiTTestsの成功は、確率的なLLMの判断と決定論的なルールベースのシステムを組み合わせる価値を浮き彫りにしています。純粋にAI主導のアプローチは非決定性に苦しむことがあり、クリティカルなパイプラインでの信頼を難しくします。RubFakeとLLM-as-Judgeを統合することで、Metaはセマンティックな理解と検証可能なロジックのバランスを取ったハイブリッドシステムを作成し、CI/CDパイプラインにおける堅牢なAI統合のための青写真を提供しました。

実践できること

  • 現在のCIパイプラインを評価し、挙動のリグレッションテストが欠落しているギャップを特定してください。
  • LLMを用いて複雑な関数の単体テストを生成することを試し、コードの意図から導き出されるエッジケースに焦点を当ててください。
  • 人間のレビュアーが関与する前に、単純な静的ルールを使用してAI生成テストのフィルタリング層を実装してください。
  • コードベースにおいて「リスクが高い」変更を構成する明確な基準を定義し、自動テストの優先順位付けを行ってください。
  • AIによる指摘を集約してバッチレビューを行うことで、項目ごとに開発者を中断しない「人間がループに参加する」マインドセットを採用してください。
  • 論文「Just-in-Time Catching Test Generation at Meta」を読み、dodgy diffおよびintent-awareワークフローのアーキテクチャ詳細を理解してください。
  • #meta
  • #llm testing
  • #software engineering
  • #ci/cd
  • #ai safety

Bytechapストアのツール

$89

DocBento

すべてのスキャンを読み取り、ページ出典を提示して回答するセルフホスト型ドキュメント管理システム。

ライブデモ

続きを読む

すべての記事