CTS-KB

テストオラクル

てすとおらくる

Test Oracle評価オラクルオラクル
#テスト#品質保証#AI駆動開発

Test Oracle — テストの出力が「正しいか否か」を判定する基準・審判の総称。テスト理論の古典用語で、1970 年代から使われている。

概要

テストは「実行する仕組み」と「正解を知っている何か」の 2 つでできている。後者がオラクルである。語源は古代ギリシャの神託(oracle) — 尋ねると正解を告げてくれる権威 — で、計算理論の「オラクルマシン」(Turing)と同じ比喩。DB ベンダーの Oracle 社も「あらゆる質問に答えるもの」の意で同じ語を社名にしており、同源だが別物

オラクルの実体はさまざまで、いずれも「合否の根拠」を提供する。

オラクルの形
アサーションテストコード内の期待値比較(expect(x).toBe(42)
期待出力ファイルゴールデンファイル・スナップショット
隠しテストベンチマーク(LiveCodeBench 等)が受験者に見せない判定用テスト
仕様・モデル仕様書との突合、参照実装との差分
人間目視レビュー・受入確認

オラクルの独立性

オラクルが意味を持つ条件は、判定される側がオラクルを書き換えられないこと。実装者がテストを修正できる世界では、pass rate は成績ではなく自己申告になる。AI コーディングでは実装エージェントが「テストを欺く」方向へ最適化する事例(reward hacking)が実証されており、オラクルを実装者から隔離する設計(テストの改ざんガード等)が重要になる。

オラクル問題

「正解を機械的に判定できないケースをどうするか」はオラクル問題(test oracle problem)と呼ばれる古典的難題。「レビュアーが diff を深く読んだか」のような性質は原理的に機械検証できず、統計的な推定で近似するしかない。

関連用語

  • TDD — Red テスト = 実装より先にオラクルを書く開発手法
  • ADR — 「なぜこの判定基準か」を残す記録

関連記事