リファクタリング等,挙動を変えない変更で処理が変わっていないことを確認するためのテスト仕様.
テストの種類:
[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 に反映され,ワーカーからの呼び出しは UI スレッドを待たずに戻る.閉じ始めた後・ハンドル未生成では何もしない |
CameraBaseCalibrationIntegrationTests(校正の失敗) | 校正中の例外はカメラのコールバックへ伝わらず,失敗の通知はちょうど 1 回.失敗後は検出中の表示に上書きされず失敗の表示が続き,再校正が完了すると「自動校正完了」になる.校正画像の保存に失敗しても校正済みのまま警告を表示する |
CameraBaseShotIntegrationTests(撮影中の保存) | 連続撮影の途中でも保存が進む(4 枚目の取得時点で 2 枚目が保存済み) |
Form1CloseIntegrationTests | 保存中に閉じると取り消されて「保存中」と表示される.保存後は閉じ始め → タイマー → カメラ → 光源の順に後始末される.プレビュー中に閉じてもすぐ戻り例外にならない |
全フェーズで実施する.
手順
合格条件
リファクタリング前に基準データを作成し,リファクタリング後の出力と比較する.
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 を基準データと目視比較する
合格条件
実機を使った動作確認.フェーズごとに実施する.
確認項目
合格条件