【てすとおらくる】

テストオラクル とは?

最終更新:
💡 答え合わせの基準にも、根拠と限界がある

テストで観測した動作が期待する動作かを判断するための基準・情報・仕組み。仕様や専門家、別実装などを使いますが、判断できる範囲や根拠の誤りにも注意し、合格を完全な正しさの証明と混同しません。

📌 このページのポイント
テストオラクル:答え合わせの基準観測した動作テストを実行実際の結果を見るオラクルの根拠仕様・数学的性質別実装・専門家など期待する動作かを判断判断基準にも誤りや、適用の限界がある根拠のある入出力関係を調べる方法もある合格だけで、完全な正しさは証明しない
動作の観測と、期待する動作の根拠を合わせます。別実装の一致だけで正しさは保証されません。メタモルフィックテストは仕様に根拠のある関係を部分的に検査します。
ひよこ ひよこ
テストオラクルはデータベース製品?
ペンギン先生 ペンギン先生
ここでのオラクルは、テスト結果をどう判断するかの基準や仕組みだよ。テストを実行して値が返ることと、その値が期待どおりかを判断することは別。仕様や計算規則など、期待値の根拠を考えるんだ。
ひよこ ひよこ
仕様書以外も使える?
ペンギン先生 ペンギン先生
数学的性質、別の実装、以前の版、専門家の判断などが使える。ただしどれも無条件に正しいとは限らない。仕様の変更や誤り、別実装も同じ誤りを持つ可能性など、比較に使える条件を確認しよう。
ひよこ ひよこ
ソート結果が昇順なら合格?
ペンギン先生 ペンギン先生
昇順だけでは足りないよ。入力の要素を落とさず、増やさずに並べ替えているかも必要だね。空の配列を返すだけでも昇順という条件は満たせる。検査する性質が必要な動作をどこまでカバーするかを見るんだ。
ひよこ ひよこ
答えが分からないとテストできない?
ペンギン先生 ペンギン先生
正確な期待値を用意するのが難しい場合もある。入力の順を変えても合計が変わらないなど、対象の仕様に根拠のある関係を調べるメタモルフィックテストが役立つこともあるよ。ただし入力を2倍にしたら出力も2倍、とはどの処理でも言えないんだ。
ひよこ ひよこ
関係のテストが通れば正しい?
ペンギン先生 ペンギン先生
確かめた関係やケースについての結果で、完全な正しさの証明ではない。関係自体の根拠や数値誤差の扱いも必要だよ。期待値や性質の出典を残し、対象の変更に合わせて見直そう。人の確認と組み合わせる場合もあるんだ。
もっと詳しく知りたい人へ

旧版と同じなら回帰テストは十分?

変更しないはずの動作の比較には役立ちますが、旧版の誤りを引き継ぐこともあります。仕様変更や不具合修正で期待する動作が変わる場合は、旧版の出力をそのまま正解にせず、修正後の仕様に基づく基準も用意してください。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「テストオラクル」って出てきたら「期待する動作を判断する基準や仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Test Oracle」 = テスト結果を判断する基準・仕組み
💬 Oracleには神託という意味があります。テストの文脈では、製品名としてのOracleではなく、観測した動作をどう判断するかを指します。

参考資料

← 用語集にもどる