← 最新の論文
💻 computer science

Is this Build Failure Related to my Patch? An Empirical Study of Unrelated Build Failures in Continuous Integration

この実証研究は7つのApacheプロジェクトにわたる77,354件のCIビルド失敗を分析し、無関係な失敗に費やされる開発者の労力を定量化するとともに、CIレイテンシやエラーパターンといった特徴を活用する半教師ありの正解・未教師あり(PU)学習モデルが、そのような実行不可能な失敗を効果的に予測し、開発者がデバッグの優先順位を決定するのを支援し得ることを示している。

原著者: Andie Huang, Daniel Alencar da Costa, Grant Dick, Mariam El Mezouar

公開日 2026-05-08
📖 1 分で読めます☕ さくっと読める

原著者: Andie Huang, Daniel Alencar da Costa, Grant Dick, Mariam El Mezouar

原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む

あなたが非常に忙しく混沌としたキッチンで働くシェフだと想像してください(これが継続的インテグレーション環境です)。数分おきに新しい注文が入り(これがコードプッシュ)、キッチンが自動的にテスト料理を調理し始め、新しい材料が機能するかを確認します。

時々、テスト料理が焦げたり、味がひどかったりします。通常、これは新しい材料を追加したばかりのシェフがミスをしたことを意味します。しかし、時には、前のシェフがコンロを消し忘れたため、オーブンが故障したため、または別の誰かが隣の部屋でトレイを落としたため、火災警報が鳴り響くこともあります。これが論文が**「無関係なビルド失敗」**と呼ぶものです。

問題は、新しい材料を追加したばかりのシェフが、なぜ料理が失敗したのかを知らないことです。彼らは何時間も(論文によると中央値で4 時間)、自分のスパイスや包丁を必死にチェックし、「それは私ではありません!」と証明しようとして過ごします。これは多くの時間を浪費し、ストレスを引き起こします。

研究者たちが行ったこと

著者たち(研究者チーム)はこのキッチン混乱を調査することにしました。彼らは、Apache Hadoop や HBase などの 7 つの大きなオープンソースソフトウェアプロジェクトから、77,354件の「焦げた料理」(ビルド失敗)を調査しました。

  1. 探偵仕事: 彼らは失敗後に開発者が残した数千件のコメントを手動で読み進めました。「これは私の変更とは無関係だ」や「無関係だ」といったフレーズを探しました。彼らは、開発者が明示的に「この失敗は私のせいではない」と述べた約10,300件のケースを見つけました。
  2. インタビュー: 彼らは、これらの「私のせいではない」ケースから、代表的な小規模なサンプル371件を選び、探偵が犯罪現場を分析するようにそれらを分析しました。彼らは問いかけました:なぜ開発者はこれが自分のせいではないと言ったのか?
    • 発見: 最も一般的な理由は以下の通りでした:
      • 無関係なテスト: 失敗したテストは、実際には新しい材料ではなく、キッチンの別の部分をチェックしていました。
      • 外部からの干渉: キッチン外で何かが変化しました(例えば、サプライヤーが全員に悪い小麦粉を配達したなど)。
      • 再現不可能: 火事は一度発生しましたが、料理を再度作ろうとしたときは問題ありませんでした(おそらくランダムな電力サージなど)。
      • 「未指定」グループ: 開発者が理由を説明せずに「私のせいではない」と言ったケースは、時間の 35% という大きな割合を占めました。

解決策:「スマートアシスタント」

開発者が失敗がなぜ無関係なのかを即座に説明できない場合が多いため、研究者たちは彼らの代わりに推測するスマートアシスタント(機械学習モデル)を構築しました。

彼らはPU ラーニング(Positive-Unlabeled Learning、正解・未ラベル学習)と呼ばれる特別な技術を使用しました。

  • アナロジー: あなたが特定の種類のボールを見つけるように犬を訓練しようとしていると想像してください。あなたはそれが正しい種類のボールだと知っているいくつかのボール(Positive例)を持っています。しかし、あなたはどちらが正しくどちらが間違っているか分からない、巨大な混合ボールの山(Unlabeledの山)を持っています。「それ以外はすべて間違ったボールだ」とは言えません。なぜなら、それらのいくつかは実際には正しい種類であり、まだチェックしていないだけかもしれないからです。
  • 仕組み: 研究者たちは、モデルに「既知の無関係な失敗」と「未知の山」を投入しました。モデルは、明確なラベルがなくても、失敗が無関係である可能性を示すパターンを認識することを学びました。

アシスタントはどれほど優れていたか?

モデルは同じ 7 つのプロジェクトでテストされました。

  • 精度において非常に優れていました(「これはあなたのせいではありません」と言った場合、通常は正しく、約 70% から 88% の確率でした)。
  • 再現率においても良好でした(無関係な失敗のほとんどを発見しましたが、いくつか見逃しました)。
  • 無作為な推測や単純なルールよりも大幅に優れた性能を示しました。

モデルが使用した「手がかり」

研究者たちは、モデルが失敗が無関係かどうかを判断するのを助けた 3 つの主要な手がかりを見つけました:

  1. 時間的ギャップ(CI レイテンシ):開発者がコードをプッシュしてからビルドをトリガーするまで長い時間待っていた場合、その間に誰か他の人がキッチンで何かを壊した可能性が高くなります。
  2. 「デジャヴ」エラー: エラーメッセージが最近発生したものと同じように見える場合、それは現在のシェフが引き起こした新しいものではなく、古い問題の繰り返しである可能性が高いです。
  3. 雑談: 失敗が発生する前にその問題に対して多くのコメントがある場合、その問題が複雑であり、現在のプッシュだけでなく他の人々の作業に関与している可能性を示唆しています。

結論

この論文は、この「スマートアシスタント」を使用することで、開発者はすぐにヒントを得られると結論付けています:「この失敗はあなたのせいではない可能性が高い」

これは彼らが問題を無視できるという意味ではなく、「自分のコードを 4 時間チェックするのではなく、もしかしたらオーブンを確認するか、他のシェフに聞いてみてください」と伝えるものです。これにより、彼らは誤報に時間を浪費することを止め、より早く調理(コーディング)に戻ることができます。

重要な注意点: この論文は、ソフトウェアプロジェクトにおけるこれらの失敗の特定に完全に焦点を当てています。これは医療診断、金融取引、またはソフトウェア開発以外の分野でこの手法が機能すると主張するものではありません。これは、ソフトウェアチームが自らの「キッチン」の混乱を管理するための厳密なツールです。

自分の分野の論文に埋もれていませんか?

研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。

Digest を試す →