リファクタリング等,挙動を変えない変更で処理が変わっていないことを確認するためのテスト仕様.
テストの種類:
[Category("Integration")].方針は .claude/rules/testing.md,移行計画は PLAN_05)依存更新やハードウェア結合層の変更後,手動テストの前に実施する(Debug|x64 のみ.手順は ENV_04 の「セルフテスト」,判定は .claude/verify-profile.md./verify から自動実行できる).
python scripts/verify/run_selftest.py(依存を変えた場合は --full)deps・preview・calib-save の 3 項目が PASS)NUnit の全件実行に含まれる(ENV_04 の「テスト」.カテゴリで絞る場合は TestCategory=Integration).現在のケース:
| テスト | 確認内容 |
|---|---|
CameraBaseSaveIntegrationTests(単発・保存成功) | 撮影画像・sRGB 変換画像・Info.csv が保存され,「全ての画像保存完了」が表示され,撮影ボタンが再び有効になる |
CameraBaseSaveIntegrationTests(単発・撮影画像の保存失敗) | 保存失敗が通知され,「全ての画像保存完了」が表示されず,撮影ボタンが再び有効になる |
CameraBaseSaveIntegrationTests(連続 3 枚・2 枚目の保存失敗) | 同上 |
CameraBaseCalibrationIntegrationTests(校正) | 校正完了で撮影ボタンが無効から有効になり,校正保存ファイル(SPEC_01)が作られる.チャートが映らないと完了せずボタンは無効のまま.途中で例外が起きても再検出して完了し,旧チャートマスクは解放される |
CameraBaseCalibrationIntegrationTests(切断) | 校正後・校正中の切断で例外にならず,チャートマスクが解放される |
CameraBaseShotIntegrationTests(撮影ループ) | 連続撮影で枚数分のファイルと撮影ログ(間隔どおりの時刻).枚数 0 で例外にならずボタンが戻る.フレーム取得の失敗で中止・通知され,Info.csv の中止行は理由にカンマ・改行・引用符を含んでも 3 列に収まる |
CameraBaseShotIntegrationTests(保存キュー・切断) | 保存失敗時に撮影した全フレームが解放される.前回のキューに残った画像が解放される.保存中の切断で例外にならず保存が完了する |
Form1UiIntegrationTests | データ名・連続撮影の枚数・間隔をワーカースレッドから読んでも UI の入力どおりの値が返る(数値でない入力を含む).ShowMessage・EnableShots が UI に反映される |
全フェーズで実施する.
手順
合格条件
リファクタリング前に基準データを作成し,リファクタリング後の出力と比較する.
TCC_RGB.csv ← チャート24色票のRGB値Conv_RGB-sRGB{CN}.csv ← RGB→sRGB 変換行列Conv_RGB-XYZ{CN}.csv ← RGB→XYZ 変換行列Conv_sRGB-XYZ{CN}.csv ← sRGB→XYZ 変換行列TCC_sRGB{CN}.csv ← チャートのsRGB変換値sRGB{CN}_0001.jpg ← 撮影した sRGB 変換画像1枚合格条件
保存済みの実画像を入力として,チャートマスクの位置を比較する.
※ 2026-08-29 に自動テスト ChartDetectorTests を追加した(合成した AR マーカー画像を入力し,早期 return・上下逆判定・固定判定・24 枚のマスク生成を検証する).本節の実機による目視比較を置き換えるものではない.自動テストが担保するのは検出ロジックの分岐と幾何であり,実写のノイズ・照明ムラ・レンズ歪み・実際のマーカー印刷品質に対する検出性能は実機でしか確認できない.OpenCvSharp のネイティブ側更新(例: 4.10 → 4.13)を行ったときは,自動テストが緑でも本節の実機比較を必ず実施すること.
TCC_ROIs.jpg を基準データとして保管する
TCC_ROIs.jpg を基準データと目視比較する
合格条件
実機を使った動作確認.フェーズごとに実施する.
確認項目
合格条件