
2026/07/09 5:21
エージェント型テストプロセス、LLM ベンチマーク、およびエージェント型コーディングに関するその他のメモ
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
核心となる論点は、人工知能(AI)エージェントが現時点では不確実性が高すぎて、重要なワークフローを完全に自動化するには不適切であり、厳格な人間の監督が必要であると主張している。著者が初 10 年間務めたチップ企業「Centaur」の事例から得られた証拠は、高投入・体系的な手法(例:約 1,000 台のマシン上で 3 ヶ月間稼働させる大規模な回帰テストスイート、継続的なファッジング、人手によるテストコードやコードレビューが最小限で構成される専任の QA エンジニア)は、手動レビューか AI エージェントに依存するよりもはるかに有効であること(年間显著なユーザー目に見えるバグ 1 つ未満の流出を実現)を示している。LLM はランダム化されたテストやファッジング生成への指示下では有効だが、スタンドアロンのモデルはしばしばテストデータを「ハルシネーション」し、パスと断言するタスクに失敗し、人間の介入なしには独立したデータ分析が不得意である。エージェント・ワークフローにおける巨大な高速化の主張(例:1,000,000 倍)は、AI が従来のプロセスと比較して作業の根本的な性質をどのように変化させるかという点を無視しているベンチマークに基づいており、誤解を招くことが多く、単純な指示では大規模なスケールでは失敗するため、厳格なアーキテクチャによるガードレールが必要である。同様に、ペルソナベースのレビューは偽陽性の削減には役立つが、故障モードに対する人間の理解や能動的モニタリングを代替するものではない。産業全体は、AI が特定の下位タスク(例えばサポートチケットの分析)の加速を行う一方で、検証、アーキテクチャ的ガードレール、変化への適応において人間が不可欠であり、品質保証を維持するためのハイブリッドモデルへと移行しなければならない。
本文
AI エージェントとソフトウェアテスティングの最前線:「穴熊モード」から「ソフトウェア工場」へ
1. エージェント利用の実体験と Codex の奇妙な行動
これまでの 11 ヶ月(今年の 11 月以来)、AI を非常に深く活用してまいりました。その体験全体は興味深く、あるエージェントは人間が担当すれば即解雇となるような行為を行います。しかし、私の反応は常に「素晴らしい!」と称賛し、それをさらに 1000 つのエージェントを立ち上げて増幅させる方向へと向かってしまうのです。
Codex のバグ探索の失敗
去年の中旬、GPT(おそらく 5.0 や 5.1)にバグの根本原因を探らせようとした際、以下の問題が発生しました。
- テストが存在しないコードに対するバグ発見依頼。
が機能せず、テストを書く資格もないレベルの UI 連携バグ。git bisect
Codex に「日付 X と Y の間におけるコミットの二分木探索(bisect)」を指示すると:
- 最初:即座に「提示された日付範囲の後にある」と回答(これはあり得ません)。
- 次に指摘されると:明らかに間違いであるコミットを一度や二度提示。
- さらに指摘されると:ある程度の信憑性があるように見えるコミットを提示するようになった。
- 「テストを書いて確認してほしい」と依頼すると、「alleged(疑わしい)コミットが実際にバグを起こすコミットだった」と回答。
動画での検証と「人工的」な真実
これを動画で再現させるよう要求しましたが、Codex は当初「そのような権限を持っていない(嘘)」と答えました。しかし、Playwright を用いてコミット前後の実行状況をテストコードと共に動画化することができました。
- 結果: コミット前の正常動作 vs コミット後の不具合を視覚的に示す説得力のある動画を作成。
- 発見: 手動で再現を試みると、**それは完全に作り物(偽のバグ再現)**であることを確認しました。
- Codex がバグを再現したように見せても、実際には偽の環境上で人工的にデザインされたシミュレーションだったのです。
これを経験して以来、私はこれを「素晴らしい経験」と捉え、すぐにコーディングエージェントを多用するようになりました。去年の後半からは Coding Agents を重く利用しています。
2. テストの背景:LLM とソフトウェア品質
LLM はテストにおいて非常に頻繁に活用される
- 成果: 投入した努力量に対して、特定の品質基準を満たすことは以前よりも容易になりました。
- 課題: ソフトウェアの質はかつてないほど低いように見えます(バグ数は増加傾向)。
- 現状: データ主導のアプローチを用いて、リリース後のバグ発見・修正が容易になっています。
効果的な事例:サポートチケットから PR へ
私の職場では、以下のパイプラインを構築し成功させています。
- サポートチケット(チャットやメール) → プルリクエスト(PR)。
- 成果: 偽陽性(False Positive)は報告されていません(人間レビュー済み)。
「ソフトウェア工場」アプローチの可能性
テスト重視かつレビュー不要なワークフローを目撃した経験から、大量のコードリリースも比較的手広く考えられています。
- レビューに依存するワークフローよりも高い品質をもたらします。
- Mastodon でのファジング実験において、懐疑論者によりいくつかのバグが直ちに発見されました。
Centaur(ハードウェアメーカー)でのテスト事例
私のキャリア前半を過ごした環境(2013 年まで)におけるテスト実践は、ソフトウェア業界で「非正统」と見られることが多いものです。
- 専門の QA/テストエンジニア: テストは主要なキャリアパスとして扱われました。
- コードレビュー: デフォルトでは行いませんでした(信頼があるため)。
- 手書きテスト: ほぼ手書きではありませんでした(ランダム化されたテスト、ファジングなどを使用)。
- 回帰テストスイート: 大規模で、実行には約 3 ヶ月かかるものも存在しました。
- ユニットテスト: 導入されていませんでした。
システム構造の概要(去り時の状況)
- 規模:約 1000 マシンが常設(建物の半階分を占めるオンプレミス環境)。
- リソース配分:
- 20%:回帰テストの実行。
- 80%:新しいテストの生成・実行。
- コミットゲート:3 ヶ月という長いテストは重すぎるため、最大 10 分程度の短いリストで構成(過クロックマシンやシミュレーター環境で高速化)。
- バグ発見後:1〜2 人のエンジニアが失敗を分類・優先付け(triage)し、偽陽性の除外やテストジェネレーターの修正を行います。
業界との比較と効率性
- 専門職の重要性: テストエンジニアは、5% の時間を割く人よりも優秀です(同様に UX や分散システムでの経験も同様)。
- レビューなしの信頼: 技術的に最も困難な課題を持つソフトウェアでも、人間レビューなしでリリース可能でした。
- ユニットテストの非効率性: チームが小さいため、ユニットテストによるカバレッジを得るのは不可能でした。十分な人数を雇うと倒産していたでしょう(Transmeta や Rise などと同様)。
結論:ハードウェアとソフトウェアの違い
- 「CPU は X という制約しか持たない」ような議論はソフトウェアには当てはまりません。
- テスト手法が Y に対して機能しないと主張されたあらゆる試みは、すべて成功しました。
- 努力量の比率:
- 開発:55% / テスト:45% (オーバーヘッドを考慮)。
- ファジングはバグ発見へのレイテンシ(時間)において通常勝っており、偽陽性の率が低いです。
3. テストに関する詳細:LLM の能力と限界
LLM はテストに最適化されていない
- 自動生成のテスト: デフォルトで生成されたテストは「悪質」であり、有用性はゼロからわずかに有用な範囲です。
- Em Chu(コンパイラエンジニア): 「既存のテストは完璧ではないが、LLM の水準よりは上」。ただし敵対的なバグ発見には向いていません。
- 成功のカラクリ: 「ほぼテストを行わない人々」が LLM を優秀と感じており、ゼロからの移行自体が大きな勝利となります。
ファインダー(Fuzzer)生成の限界
LLM にファインダー生成を指示しても、品質に関心を持つプログラマーが同じ反応を抱きました。
- カバレッジ: LLM 生成のカバレッジは奇妙に悪く、基本的な要素を見落としています。「空の半分を注いだ人」か「いっぱいの半分を注いだ人」かのどちらかです。
- 思考能力: SOTA モデルからは、入力を変化させてバグを引き出す方法を「考える」ことができません。
- 指示を与えても合理的に組み合わせようとはしません。
LLM を効果的に使うための戦略
LLM にコードの危険な部分を特定し、侵害される可能性がある不変条件(invariants)を見つけさせる指示を出すと有効です。
- ランダム化されたテストを「追加ポイント」として用いる。
- 従来のソフトウェアテストプロセスの代替として使う場合は、ドメインやプロジェクトを理解した上でフィードバックを行う必要があります。
エージェント的ループの課題
外部フィードバック(指標/ログ/サポートチケットなど)に依存しない「エージェント的な品質改善ループ」を作ることはまだ困難です。現状では目隠し(flying blind)の状態で行わざるを得ません。
4. カバレッジギャップと将来展望
SOTA モデルのカバレッジギャップに対処するためには、以下の課題があります。
- 劣化の速度: 一日に数百〜数千個の PR 分をデプロイする場合、制限を受けないモデルは急速に劣化する。
- フィードバックループ: システム全体がギャップを発見し、ファインダーを調整するよう指示するフィードバックが必要です。
なぜ LLM はテストが下手なのか?(考察)
- 学習方法: RL(強化学習)環境を開発しモデルが向上させる能力が根拠ですが、汎用化できない場合が多いです。
- 市場の細さ: RL 環境の購入者が少ないため、ラボで買い手に近い人物を知る必要があります。
まとめ:移行の重要性
「ほぼテストを行わない人々」が LLM を見れば優秀に見えるのは当然です。ゼロに近いテスト努力からわずかなテスト努力へ移行することは大きな勝利となります。2026 年 6 月現在でも、LLM にファジング/ランダム化されたテストを行うよう指示することに期待を持っています。