Test Oracle — テストの出力が「正しいか否か」を判定する基準・審判の総称。テスト理論の古典用語で、1970 年代から使われている。
概要
テストは「実行する仕組み」と「正解を知っている何か」の 2 つでできている。後者がオラクルである。語源は古代ギリシャの神託(oracle) — 尋ねると正解を告げてくれる権威 — で、計算理論の「オラクルマシン」(Turing)と同じ比喩。DB ベンダーの Oracle 社も「あらゆる質問に答えるもの」の意で同じ語を社名にしており、同源だが別物。
オラクルの実体はさまざまで、いずれも「合否の根拠」を提供する。
| オラクルの形 | 例 |
|---|---|
| アサーション | テストコード内の期待値比較(expect(x).toBe(42)) |
| 期待出力ファイル | ゴールデンファイル・スナップショット |
| 隠しテスト | ベンチマーク(LiveCodeBench 等)が受験者に見せない判定用テスト |
| 仕様・モデル | 仕様書との突合、参照実装との差分 |
| 人間 | 目視レビュー・受入確認 |
オラクルの独立性
オラクルが意味を持つ条件は、判定される側がオラクルを書き換えられないこと。実装者がテストを修正できる世界では、pass rate は成績ではなく自己申告になる。AI コーディングでは実装エージェントが「テストを欺く」方向へ最適化する事例(reward hacking)が実証されており、オラクルを実装者から隔離する設計(テストの改ざんガード等)が重要になる。
オラクル問題
「正解を機械的に判定できないケースをどうするか」はオラクル問題(test oracle problem)と呼ばれる古典的難題。「レビュアーが diff を深く読んだか」のような性質は原理的に機械検証できず、統計的な推定で近似するしかない。
関連用語
関連記事
- 「Codex 実装 → Claude レビュー」+18.1pt 論文を裏取りする — 評価オラクル(隠しテスト)の独立性が pass rate を意味あらしめる、という論点
- クロスファミリー検証の最終型【終章】 — 機械判定できない残余(verifier の浅読み)を統計推定で測る話