開発解説
AIにテストを書かせる前に|通るだけのテストを見抜く評価方法

目次
結論
AI生成検証は「greenになった」だけでは合格にしない。対象実装へ意図的な故障を入れ、境界値・異常系で失敗できるかを検収してから採用する。
比較対象は Codex、Claude Code、GitHub Copilot。ただしブランド名を点数化するのではなく、意図的な故障注入と境界値を使うテスト検収票 を正本にして、failure detection, boundary cases, oracle quality, coverage relevance, maintainability を同じ条件へ揃えます。分からない項目は0点扱いせず「未確認」のまま保留にします。
2026-09-13時点で確認した重要点
- coding agentはrepo context・commands・testsを含むワークフローとして扱う。
- terminal coding ワークフロー、permissions、project instructionsをcurrent docsで確認する。
- Copilot agent/features/instructionsはcurrent docsで確認する。
- 自動検証をacceptance gateとして実行できる。
agent/automationでは便利さより先に、read/write権限、検証、retry、rollback、secret境界を固定します。 変わり得るな仕様は変わるため、「この記事の結論を永久固定する」のではなく、変化した項目だけを最新の公式情報へ差し替えて同じ判断基準で再判定できる形にします。
判断表:意図的な故障注入と境界値を使うテスト検収票
| 軸 | 根拠 input | 継続 | 保留/停止 |
|---|---|---|---|
| failure detection | 意図的な故障で検証が赤になることを確認 | 必須条件を満たし証拠が追える | 未確認、権限外、要件不一致 |
| boundary cases | 正常系だけでなく境界/異常系を固定 | 必須条件を満たし証拠が追える | 未確認、権限外、要件不一致 |
| oracle quality | 期待値が実装の写経になっていないか確認 | 必須条件を満たし証拠が追える | 未確認、権限外、要件不一致 |
| coverage relevance | line数ではなく判断-critical pathを覆う | 必須条件を満たし証拠が追える | 未確認、権限外、要件不一致 |
| maintainability | 将来仕様変更時に検証意図を読めるか | 必須条件を満たし証拠が追える | 未確認、権限外、要件不一致 |
必須条件は加点方式で相殺しません。必須条件を通過した候補同士だけでcostや操作性を得失として比較します。
この判断で最初に分ける3種類の情報
1. Official 事実
pricing、plan、manual、support matrix、terms、policyなど、vendor/public authorityが現在公開している事実です。確認日と対象プラン・バージョン/SKUを必ず残します。
2. Local observation
自分のhardware、network、document、ワークフローで測る値です。benchmarkや修正時間を他人の値で代用しません。measurementが必要ならraw log、条件、確認日時から計算します。
3. 編集上の得失
「多少高くても管理が楽」「速度よりプライバシーを優先」などの価値判断です。事実のように書かず、必須条件を通過した後にだけ使います。
この3つを混ぜないことで、plan変更やmodel更新が起きても記事全体を書き直さず、影響する判断項目だけを更新できます。
failure detection, boundary cases, oracle quality, coverage relevance, maintainability をどう読むか
1. failure detection
意図的な故障で検証が赤になることを確認。未確認なら推測で埋めず、判断に必要なら保留へ送ります。
2. boundary cases
正常系だけでなく境界/異常系を固定。未確認なら推測で埋めず、判断に必要なら保留へ送ります。
3. oracle quality
期待値が実装の写経になっていないか確認。未確認なら推測で埋めず、判断に必要なら保留へ送ります。
4. coverage relevance
line数ではなく判断-critical pathを覆う。未確認なら推測で埋めず、判断に必要なら保留へ送ります。
5. maintainability
将来仕様変更時に検証意図を読めるか。未確認なら推測で埋めず、判断に必要なら保留へ送ります。
候補を見るときの確認点
- Codex:この記事の比較軸に関係するcurrent プラン・バージョン/SKU/termsだけを記録し、brand知名度は加点しない。
- Claude Code:この記事の比較軸に関係するcurrent プラン・バージョン/SKU/termsだけを記録し、brand知名度は加点しない。
- GitHub Copilot:この記事の比較軸に関係するcurrent プラン・バージョン/SKU/termsだけを記録し、brand知名度は加点しない。
同じサービス・モデル名でもplan、地域、OS、ハードウェアのリビジョン、契約形態で条件が変わります。比較表には「確認日」「対象プラン・バージョン」「参照URL」を同じ行へ残してください。
実務での判断手順
- 目的を1文に固定する。 機能名ではなく、何を買う・減らす・守る・移す・再現するのかを書く。
- 必須条件を先に置く。
failure detectionを含め、欠けたら採用しない条件を決める。 - 最新の公式情報を読む。 料金・仕様・権限・termsは検索snippetではなくofficial pageへ戻る。
- 対象プラン・バージョン/SKUを固定する。 同名サービスの別planや旧世代を混ぜない。
- 判断表へ証拠を残す。 URL、確認日時、責任者、必要なら実際の観測結果を記録する。
- 停止条件を適用する。 不明点を平均点や想定値で埋めず、問い合わせ・小規模検証・保留へ戻す。
- 最後にcost/操作性を比較する。 必須条件を通過した候補だけを比較する。
選ばない・進めない条件
変更範囲・秘密情報・テスト・rollbackの完了条件を固定できない場合はagentへ書き込み権限を渡さない。
これは注意書きではなく判断 gateです。後から必要な証拠が揃えば同じ判断表へ戻して再評価できます。完了件数を増やす目的で未確認値を作りません。
よくある質問
一番おすすめを1つだけ決められますか?
固定1位にはしません。用途・権限・environment・契約条件が違うため、判断表の必須条件を通過した候補だけを比較します。
公式ページに書かれていない項目はどうしますか?
「ない」と推測せず未確認にします。必要なら提供元へ問い合わせるか、再現可能な検証を行って観測条件を残します。
古い比較記事の価格やbenchmarkを使ってよいですか?
使いません。SERPは検索意図の確認に使い、変わり得る情報はcurrent 公式情報へ戻します。他者benchmarkは参考情報に留め、この記事の実測として扱いません。
一次情報
- OpenAI Developers — Codex — coding agentはrepo context・commands・testsを含むワークフローとして扱う。
- Claude Code — Overview — terminal coding ワークフロー、permissions、project instructionsをcurrent docsで確認する。
- GitHub Docs — Copilot — Copilot agent/features/instructionsはcurrent docsで確認する。
- GitHub Docs — Building and testing — 自動検証をacceptance gateとして実行できる。
まとめ
AI生成検証は「greenになった」だけでは合格にしない。対象実装へ意図的な故障を入れ、境界値・異常系で失敗できるかを検収してから採用する。
固定rankingではなく 意図的な故障注入と境界値を使うテスト検収票 を正本にして、変化した事実だけを最新の情報源または実際の観測結果で差し替えれば、同じ判断基準で再判断できます。
まとめ
- AI生成検証は「greenになった」だけでは合格にしない。対象実装へ意図的な故障を入れ、境界値・異常系で失敗できるかを検収してから採用する。 固定rankingではなく **意図的な故障注入と境界値を使うテスト検収票** を正本にして、変化した事実だけを最新の情報源または実際の観測結果で差し替えれば、同じ判断基準で再判断できます。