Newer
Older
DeepTIAS / .claude / rules / testing.md

paths: ["DeepTIAS.Tests/", "Tongue extraction//*.cs"]

テスト方針 (Testing)

テストを書く・実行するときは本方針に従うこと.フレームワークは MSTest を使う(技術スタック).

テストの種類 (Test Types)

種類目的対象
回帰テスト研究で使われてきた旧 exe と同じ解析結果が出ることを確かめるサンプル画像を現行ソースで解析した analysis.csv と,旧 exe(2021 年 12 月版 DeepTIAS2.7.exe)で出した正解の比較
単体テスト切り出した処理が単体で正しく動くことを確かめる領域分割,形状特徴,CSV の組み立て等,画面に依存しない処理
  • **回帰テストを最優先する.**本プロジェクトの目的は「解析結果を変えずに整理する」ことであり,その保証の中心になる.
  • **正解は旧 exe の出力である.**研究データは旧 exe で出されており,過去のデータと比べられることを守るため.現行ソースの出力を正解にしない.
  • 画面(Form1)の操作は自動テストの対象にしない.人が動作確認する.

回帰テストの決まり (Regression Tests)

  • 正解データ(入力画像と,旧 exe で出した analysis.csv・中間画像)は DeepTIAS.Tests/TestData/ に置き,Git LFS で管理する.どの exe(パス・ビルド日)でいつ出したかを TestData/README.md に記録する.
  • 比較は analysis.csv の列構成(見出し行)と値で行う.小数の値は許容誤差を決めて比べる.許容誤差は旧 exe と現行ソースの比較結果(開発ステップ のステップ 3)をもとに決め,値と理由をテストコードに書く.
  • 列ごとに許容誤差を変える場合(例: OpenCV のバージョン差で特定の列だけずれる)は,ユーザーの承認を得てから設定し,対象の列と理由を記録する.
  • 正解データを作り直すのは,解析結果を変える変更をユーザーが承認したときだけとする.テストを通すために正解データを書き換えてはならない.
  • 外部 exe・モデルを使うため時間がかかる.テスト名やカテゴリで単体テストと区別し,単体テストだけを素早く回せるようにする.

単体テストの決まり (Unit Tests)

  • テストメソッド名は 対象_条件_期待結果 の形にする(例: Get3areaMask_EmptyMask_ReturnsEmpty).
  • 画像を使うテストは,小さな画像をテストコード内で作るか,TestData/ の画像を使う.PC ごとの絶対パスを書かない.
  • 1 つのテストでは 1 つのことだけを確かめる.

実行タイミング (When to Run)

  • コードを変更したら,コミット前に単体テストと回帰テストの両方を実行し,すべて通ることを確認する.
  • 実行コマンドは 開発コマンド に記載する.