Skip to content

テストマトリクス

テストの対象範囲は make test 1 つに収まりません。Formulon は 1 ソースツリーから複数パッケージを出荷するため、層(コア / Oracle データ / パッケージング / 実行入口間の整合性)ごとに異なる種類の回帰を捕えます。

用語: CTest labels

CTest はテストにテキストラベル(SLOW / LOAD / VARIANT など)を付け、ラベルで対象に含める / 除外する操作ができます。コミット前は遅いテストを除外し、CI ではそれらも回す、という運用が可能です。

Core テスト

sh
make build
make test
make test-slow
make test-all

make testSLOWLOAD ラベルを除外します。make test-all は最も広い CTest セットです。コミット前に make test、コアを触る PR を出す前に make test-all を走らせます。

Oracle テスト

sh
make oracle-verify

Oracle 検証は Excel 由来のゴールデンデータと Formulon 出力を比較します。Excel を起動しないので CI でも安全です。

バリアント Oracle テストは明示的に有効化します。

sh
cmake -B build -DFORMULON_ORACLE_VARIANTS=ON
cmake --build build --target formulon_oracle_variant_tests
cd build && ctest -L VARIANT --output-on-failure

プロファイル固有差分の調査や、新しいプロファイルを追加する前に使います。

パッケージングのスモークテスト

実行入口コマンド
WASMmake wasmmake test-wasmmake npm-test
Pythonmake python-test
Native Nodemake node-test
CLItests/cli 配下の CTest target

各バインディングの load → mutate → recalc → save ループがコア変更後も成立することを確認します。

実行入口間の整合性

sh
make parity-test

parity runner は利用可能な実行入口すべてで共有の検証用ワークブックを評価し、2 つ以上の実行入口が食い違ったら mismatch を報告します。未ビルドの実行入口は failure ではなく missing として扱われるので、Emscripten / Excel / 特定 toolchain を持たないマシンからも貢献できます。

parity と oracle の違いを 1 行で

parity = 自分たちの実行入口同士が一致している。Oracle テスト = 自分たちが Excel と一致している。リリース前には両方のシグナルが必要です。

診断

コマンド目的
ctest -R RegistryCatalog.CoverageReport -V --output-on-failuremake build の後、build ディレクトリで実行)正規カタログに対する実行時の関数登録状態
make behavior-statusbehavior vocabulary のステータス
make coverageローカルカバレッジ診断
make mutationローカルミューテーションテスト診断

RegistryCatalog.CoverageReport は診断専用の gtest ケースです ─ 常に成功し、カバレッジ比率を標準出力に出すだけで、それは ctest -V を付けたときだけ表示されます。合否ゲートではなく、現在の数値を読むための手段として扱ってください。

次に読むもの