# テスト影響分析 ## 定義 テスト影響分析(Test Impact Analysis, TIA / テスト選定)とは、コード変更差分、パッケージ依存関係、過去のテスト実行履歴や失敗傾向などを分析し、コミットやプルリクエスト(PR)に対して実行すべきテストの最小十分集合を決定論的または統計的に選定・実行する技術・手法である。 ## 背景と動機 コードベースの規模拡大やマイクロサービス化に伴い、全テストスイートの網羅的実行(Run All Tests)は CI 時間とコストを肥大化させ、開発サイクルを著しく遅延させる。特に AI コーディングエージェントの導入によって PR 数とテスト作成数が急激に増加する環境下では、CI の実行回数が指数関数的に増加するため、テスト選定の最適化なしには CI パイプラインが維持不可能となる。 ## アーキテクチャと課題 TIA サービスは一般に以下の 2 要素で構成される。 1. **結果収集(Listener)**: CI ジョブの実行結果(成功・失敗・所要時間・フレーキー挙動)を常時収集し、履歴ストアを更新する。 2. **選定エンジン(Selector)**: PR オープン時やプッシュ時に変更内容と依存関係、過去履歴を照合し、最適なテストセットを返す。 ### 主要なスケーリング課題 - **収集遅延(Listener Lag)**: CI ジョブが急増した際、結果収集が遅延すると、Selector が古い状態に基づいてテストを選定してしまい、すでに修正されたバグの再発見逃しやフレーキーテストによる無駄なブロックを招く。 - **ステートフル性の排除**: 単一プロセスでテスト履歴をインメモリ保持する構成は、スループット限界とメモリ逼迫を招きやすい。結果を追記するジャーナルと集約処理を分離し、水平分散可能なステートレス設計にすることが不可欠となる。 ## 関連 - 概念: [[ソフトウェアファクトリ]] - ソース: [[@2026__AnthropicBlog__Agentic coding is straining CI. Here’s how we scaled test impact analysis at Anthropic]] / [[@2026__PragmaticEngineer__OpenAI’s agentic software factory]] ## 未編纂の観察 - 2026-09-17: [[@2026__AnthropicBlog__Agentic coding is straining CI. Here’s how we scaled test impact analysis at Anthropic]] によると、エージェント生成コードによる CI ジョブ 25 倍増に伴い、シングルトンの TIA サービスはマシン増強やパッケージ別シャーディング、日次再起動などの対症療法をことごとく短期間(70日、29日、1日未満)で破綻させた。最終的にインメモリストア(ジャーナル)を導入した水平分散・ステートレス構造への全面刷新により安定化を達成した。 - 2026-09-17: [[@2026__PragmaticEngineer__OpenAI’s agentic software factory]] によると、OpenAI においても CI 負荷が 6 か月で約 10 倍に達し、パフォーマンステスト用の特化ハーネス(Synthetics A/B フレームワーク連携)等を通じて、負荷の高いテストや変更の影響を局所的に検証する取り組みが進められている。 ## 未解決の問い - 決定論的な依存関係解析と、LLM や機械学習によるテスト失敗予測(Predictive Test Selection)をどのようなハイブリッド比率で組み合わせるのが最も再現性と効率のバランスが良いか。 - フレーキーテストの自動隔離・再試行判定と TIA の連携をどのように自動化するか。