Skip to content

Oracle テスト

Oracle テストは、実際の Excel から取得した値と Formulon の値を比較するものです。互換性の根拠になる実証層であり、ドキュメント上の仕様ではなく、対象ワークブックとロケールで Excel が実際に何を返すか を基準にします。

用語: Oracle データ

既知のワークブック・プロファイル・Excel ビルドに対して、Excel が返した値を取得したもの。テストはそのワークブックを Formulon で再計算し、取得済みの値と比較します。食い違ったときは Excel を正とします。

用語: 受け入れ済み差分(accepted divergence)

Formulon が意図的に Excel と違う挙動をするケースです。理由(セキュリティ、決定論的な挙動、Excel 側の不具合修正など)と、最後に確認した Excel ビルドを記録します。「Excel 風」とぼかさず、明示的に管理します。

なぜ Oracle データが必要か

スプレッドシートの挙動には、丸め境界、TEXT() のロケール固有の桁表現、DATEVALUE() の 2 桁年処理、空値の型変換、結合セルとスピル衝突の相互作用など、未文書の細部が多数あります。コミット済みのゴールデンデータ(tests/oracle/*/golden)はそれらをレビュー可能な形に固定し、回帰をデプロイ前、つまり PR の時点で検出できるようにします。

失敗をどう読むか

  1. Oracle テスト失敗Formulon ≠ Excel 取得値
  2. 誤った値か?はい → Formulon の不具合: エンジンを修正し、ゴールデンデータを追加
  3. Excel ビルドが変わったか?はい → プロファイル差分: 再取得して記録
  4. NOW / RAND / ネットワークに依存?はい → 揮発性のゴールデンデータ: 入力固定で再取得、または volatile として記録
  5. 受け入れ済み差分理由 + last-verified build を記録

通常、失敗は次のいずれかです。

種類意味典型的な対応
Formulon の不具合エンジンが誤った値を返したエンジンを修正し、回帰用のゴールデンデータを追加
プロファイル差分対象 Excel ビルドが変わったゴールデンデータを再取得し、変更を記録
揮発性のゴールデンデータ取得時に NOW / RAND / ネットワーク依存を含んでいた入力を制御して取り直す、またはそのゴールデンデータを volatile として記録
受け入れ済み差分意図的に Excel と異なる差分リストに理由と最後に確認した Excel ビルドを記録

データの提供

各自の Excel 環境で Oracle データ取得フローを実行し、得られたゴールデンデータを提供すると、検証できるロケールが増えていきます。同じワークブックを win-365-ja_JPmac-365-ja_JP など複数のプロファイルで取得すれば、エンジンが検証できる範囲も広がります。取得フローは Oracle データの提供 を参照してください。

v0.9.2 では、Windows Excel ブリッジを通じたピボットテーブルと印刷ページ分割のワークブック Oracle 検証を追加しました。主要プロファイルは win-365-ja_JP です。Mac と Windows の取得結果は共通の比較器で扱うようになり、プラットフォーム差分を別々のテスト出力として埋もれさせずに確認できます。

次に読むもの